Packages
ex_gram
0.54.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.58.0
0.57.0
0.56.1
0.56.0
0.55.1
0.55.0
0.54.0
0.53.0
0.52.2
0.52.1
0.52.0
0.51.1
0.51.0
0.50.2
0.50.1
0.50.0
0.41.0
0.40.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.1
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.0
0.5.0-rc6
0.5.0-rc5
0.5.0-rc4
0.5.0-rc3
0.5.0-rc2
Telegram Bot API low level and framework
Current section
Files
Jump to
Current section
Files
lib/ex_gram/middleware.ex
defmodule ExGram.Middleware do
@moduledoc """
Helper to make it easier to create middlewares
"""
@type opts :: binary | tuple | atom | integer | float | [opts] | %{opts => opts}
@callback init(opts) :: opts
@optional_callbacks init: 1
@callback call(ExGram.Cnt.t(), opts) :: ExGram.Cnt.t()
defmacro __using__(_opts) do
quote do
@behaviour ExGram.Middleware
import ExGram.Middleware, only: [add_extra: 2, add_extra: 3, halt: 1]
def init(opts), do: opts
defoverridable ExGram.Middleware
end
end
def add_extra(%ExGram.Cnt{extra: extra} = cnt, values) when is_map(values) do
%{cnt | extra: Map.merge(extra, values)}
end
def add_extra(%ExGram.Cnt{extra: extra} = cnt, key, value) do
%{cnt | extra: Map.put(extra, key, value)}
end
def halt(%ExGram.Cnt{} = cnt) do
%{cnt | middleware_halted: true}
end
end