如何将ejabberd JID解析为其各个部分

时间:2013-10-16 00:12:31

标签: erlang ejabberd

我正在编写和ejabberd模块检查用户是否存在要做某事,我使用ejabberd_auth_external:is_user_exists(“USER”,“HOST”)来实现,但是我没有USER而是表格中的完整JID USER @ HOST / RESOURCE,是否有任何方法可以将USER从该字符串中删除

2 个答案:

答案 0 :(得分:4)

ejabberd执行此操作的典型方法是使用jlib:string_to_jid/1函数:

-include("jlib.hrl").
...
case jlib:string_to_jid(String) of
    #jid{luser = LUser, lserver = LServer} ->
        ejabberd_auth:is_user_exists(LUser, LServer);
    error ->
        false
end.

另外,请勿直接使用ejabberd_auth_external模块中的函数。请改用ejabberd_auth

答案 1 :(得分:1)

你可以使用函数字符串:tokens / 2 with separator" @"并且返回列表的第一个元素是用户名:

JID = "user.name@host/resource".
[User|_] = string:tokens(JID, "@").