summaryrefslogtreecommitdiff
path: root/lib/ejabberd/config/ejabberd_hook.ex
blob: 8b7858d23f3abeab14e84b8658e4a061e2d737a4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
defmodule Ejabberd.Config.EjabberdHook do
  @moduledoc """
  Module containing functions for manipulating
  ejabberd hooks.
  """

  defstruct hook: nil, opts: [], fun: nil

  alias Ejabberd.Config.EjabberdHook

  @type t :: %EjabberdHook{}

  @doc """
  Register a hook to ejabberd.
  """
  @spec start(EjabberdHook.t) :: none
  def start(%EjabberdHook{hook: hook, opts: opts, fun: fun}) do
    host = Keyword.get(opts, :host, :global)
    priority = Keyword.get(opts, :priority, 50)

    :ejabberd_hooks.add(hook, host, fun, priority)
  end
end