diff options
author | Mickaël Rémond <mremond@process-one.net> | 2015-01-29 18:43:47 +0100 |
---|---|---|
committer | Mickaël Rémond <mremond@process-one.net> | 2015-02-10 17:56:44 +0100 |
commit | 01e1f677c72b923251f7021bc024319ff129d42d (patch) | |
tree | 38c3101d86f42b62774df909193cdfe6be69614c /lib | |
parent | Document EJABBERD_CONFIG_PATH in ejabberdctl.cfg (diff) |
Add Elixir support to ejabberd
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Ejabberd/hooks.ex | 13 | ||||
-rw-r--r-- | lib/Ejabberd/logger.ex | 9 | ||||
-rw-r--r-- | lib/ejabber.ex | 2 | ||||
-rw-r--r-- | lib/mod_presence_demo.ex | 21 |
4 files changed, 45 insertions, 0 deletions
diff --git a/lib/Ejabberd/hooks.ex b/lib/Ejabberd/hooks.ex new file mode 100644 index 00000000..a9e0dfef --- /dev/null +++ b/lib/Ejabberd/hooks.ex @@ -0,0 +1,13 @@ +defmodule Ejabberd.Hooks do + + # Generic hook setting features + def add(hook_name, host, module, function, priority) do + :ejabberd_hooks.add(hook_name, host, module, function, priority) + end + + # Should be named 'removed' + def delete(hook_name, host, module, function, priority) do + :ejabberd_hooks.delete(hook_name, host, module, function, priority) + end + +end diff --git a/lib/Ejabberd/logger.ex b/lib/Ejabberd/logger.ex new file mode 100644 index 00000000..bef1cb3a --- /dev/null +++ b/lib/Ejabberd/logger.ex @@ -0,0 +1,9 @@ +defmodule Ejabberd.Logger do + + def critical(message, args \\ []), do: :lager.log(:critical, [], message, args) + def error(message, args \\ []), do: :lager.log(:error, [], message, args) + def warning(message, args \\ []), do: :lager.log(:warning, [], message, args) + def info(message, args \\ []), do: :lager.log(:info, [], message, args) + def debug(message, args \\ []), do: :lager.log(:debug, [], message, args) + +end diff --git a/lib/ejabber.ex b/lib/ejabber.ex new file mode 100644 index 00000000..a843abc9 --- /dev/null +++ b/lib/ejabber.ex @@ -0,0 +1,2 @@ +defmodule Ejabberd do +end diff --git a/lib/mod_presence_demo.ex b/lib/mod_presence_demo.ex new file mode 100644 index 00000000..89fc60d8 --- /dev/null +++ b/lib/mod_presence_demo.ex @@ -0,0 +1,21 @@ +defmodule ModPresenceDemo do + import Ejabberd.Logger # this allow using info, error, etc for logging + @behaviour :gen_mod + + def start(host, _opts) do + info('Starting ejabberd module Presence Demo') + Ejabberd.Hooks.add(:set_presence_hook, host, __ENV__.module, :on_presence, 50) + :ok + end + + def stop(host) do + info('Stopping ejabberd module Presence Demo') + Ejabberd.Hooks.delete(:set_presence_hook, host, __ENV__.module, :on_presence, 50) + :ok + end + + def on_presence(user, _server, _resource, _packet) do + info('Receive presence for #{user}') + :none + end +end |