defmodule ChannelHandler do defmacro __using__(:handler) do quote do Module.register_attribute(__MODULE__, :plugs, accumulate: true, persist: true) import ChannelHandler.Extension, only: [plug: 1, plug: 2] import Phoenix.Socket, only: [assign: 2, assign: 3] import Phoenix.Channel, only: [ broadcast: 3, broadcast!: 3, broadcast_from: 3, broadcast_from!: 3, push: 3, reply: 2 ] end end defmacro __using__(_opts) do quote do use ChannelHandler.Extension import Phoenix.Socket, only: [assign: 2, assign: 3] import Phoenix.Channel, only: [ broadcast: 3, broadcast!: 3, broadcast_from: 3, broadcast_from!: 3, push: 3, reply: 2 ] end end end