diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2015-11-24 18:44:13 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2015-11-24 18:44:13 +0300 |
commit | 95265dd3ad8e149d94d08e1a73970fb0bbf55b49 (patch) | |
tree | a00a134cf0148a121ea505809cef0d9d49799652 /src/jlib.erl | |
parent | Make Riak working on R18 (diff) |
Move JID related functions to jid.erl (#847)
Diffstat (limited to 'src/jlib.erl')
-rw-r--r-- | src/jlib.erl | 165 |
1 files changed, 27 insertions, 138 deletions
diff --git a/src/jlib.erl b/src/jlib.erl index 52dd9b2c..711c432e 100644 --- a/src/jlib.erl +++ b/src/jlib.erl @@ -39,10 +39,7 @@ make_error_reply/2, make_error_element/2, make_correct_from_to_attrs/3, replace_from_to_attrs/3, replace_from_to/3, replace_from_attrs/2, replace_from/2, - remove_attr/2, make_jid/3, make_jid/1, split_jid/1, string_to_jid/1, - jid_to_string/1, is_nodename/1, tolower/1, nodeprep/1, - nameprep/1, resourceprep/1, jid_tolower/1, - jid_remove_resource/1, jid_replace_resource/2, + remove_attr/2, tolower/1, get_iq_namespace/1, iq_query_info/1, iq_query_or_response_info/1, is_iq_request_type/1, iq_to_xml/1, parse_xdata_submit/1, @@ -58,19 +55,16 @@ atom_to_binary/1, binary_to_atom/1, tuple_to_binary/1, l2i/1, i2l/1, i2l/2, queue_drop_while/2]). --export([start/0]). +%% The following functions are deprecated and will be removed soon +%% Use corresponding functions from jid.erl instead +-export([make_jid/3, make_jid/1, split_jid/1, string_to_jid/1, + jid_to_string/1, is_nodename/1, nodeprep/1, + nameprep/1, resourceprep/1, jid_tolower/1, + jid_remove_resource/1, jid_replace_resource/2]). -include("ejabberd.hrl"). -include("jlib.hrl"). --export_type([jid/0]). - -start() -> - SplitPattern = binary:compile_pattern([<<"@">>, <<"/">>]), - catch ets:new(jlib, [named_table, protected, set, {keypos, 1}]), - ets:insert(jlib, {string_to_jid_pattern, SplitPattern}), - ok. - %send_iq(From, To, ID, SubTags) -> % ok. @@ -173,8 +167,8 @@ replace_from_to_attrs(From, To, Attrs) -> replace_from_to(From, To, #xmlel{name = Name, attrs = Attrs, children = Els}) -> NewAttrs = - replace_from_to_attrs(jlib:jid_to_string(From), - jlib:jid_to_string(To), Attrs), + replace_from_to_attrs(jid:to_string(From), + jid:to_string(To), Attrs), #xmlel{name = Name, attrs = NewAttrs, children = Els}. -spec replace_from_attrs(binary(), [attr()]) -> [attr()]. @@ -187,7 +181,7 @@ replace_from_attrs(From, Attrs) -> replace_from(From, #xmlel{name = Name, attrs = Attrs, children = Els}) -> - NewAttrs = replace_from_attrs(jlib:jid_to_string(From), + NewAttrs = replace_from_attrs(jid:to_string(From), Attrs), #xmlel{name = Name, attrs = NewAttrs, children = Els}. @@ -201,101 +195,32 @@ remove_attr(Attr, -spec make_jid(binary(), binary(), binary()) -> jid() | error. make_jid(User, Server, Resource) -> - case nodeprep(User) of - error -> error; - LUser -> - case nameprep(Server) of - error -> error; - LServer -> - case resourceprep(Resource) of - error -> error; - LResource -> - #jid{user = User, server = Server, resource = Resource, - luser = LUser, lserver = LServer, - lresource = LResource} - end - end - end. + jid:make(User, Server, Resource). -spec make_jid({binary(), binary(), binary()}) -> jid() | error. make_jid({User, Server, Resource}) -> - make_jid(User, Server, Resource). + jid:make({User, Server, Resource}). %% This is the reverse of make_jid/1 -spec split_jid(jid()) -> {binary(), binary(), binary()} | error. -split_jid(#jid{user = U, server = S, resource = R}) -> - {U, S, R}; -split_jid(_) -> - error. +split_jid(J) -> + jid:split(J). -spec string_to_jid(binary()) -> jid() | error. string_to_jid(S) -> - SplitPattern = ets:lookup_element(jlib, string_to_jid_pattern, 2), - Size = size(S), - End = Size-1, - case binary:match(S, SplitPattern) of - {0, _} -> - error; - {End, _} -> - error; - {Pos1, _} -> - case binary:at(S, Pos1) of - $/ -> - make_jid(<<>>, - binary:part(S, 0, Pos1), - binary:part(S, Pos1+1, Size-Pos1-1)); - _ -> - Pos1N = Pos1+1, - case binary:match(S, SplitPattern, [{scope, {Pos1+1, Size-Pos1-1}}]) of - {End, _} -> - error; - {Pos1N, _} -> - error; - {Pos2, _} -> - case binary:at(S, Pos2) of - $/ -> - make_jid(binary:part(S, 0, Pos1), - binary:part(S, Pos1+1, Pos2-Pos1-1), - binary:part(S, Pos2+1, Size-Pos2-1)); - _ -> error - end; - _ -> - make_jid(binary:part(S, 0, Pos1), - binary:part(S, Pos1+1, Size-Pos1-1), - <<>>) - end - end; - _ -> - make_jid(<<>>, S, <<>>) - end. + jid:from_string(S). -spec jid_to_string(jid() | ljid()) -> binary(). -jid_to_string(#jid{user = User, server = Server, - resource = Resource}) -> - jid_to_string({User, Server, Resource}); -jid_to_string({N, S, R}) -> - Node = iolist_to_binary(N), - Server = iolist_to_binary(S), - Resource = iolist_to_binary(R), - S1 = case Node of - <<"">> -> <<"">>; - _ -> <<Node/binary, "@">> - end, - S2 = <<S1/binary, Server/binary>>, - S3 = case Resource of - <<"">> -> S2; - _ -> <<S2/binary, "/", Resource/binary>> - end, - S3. +jid_to_string(J) -> + jid:to_string(J). -spec is_nodename(binary()) -> boolean(). is_nodename(Node) -> - N = nodeprep(Node), - (N /= error) and (N /= <<>>). + jid:is_nodename(Node). %tolower_c(C) when C >= $A, C =< $Z -> % C + 32; @@ -333,66 +258,30 @@ tolower_s([]) -> []. -spec nodeprep(binary()) -> binary() | error. -nodeprep("") -> <<>>; -nodeprep(S) when byte_size(S) < 1024 -> - R = stringprep:nodeprep(S), - if byte_size(R) < 1024 -> R; - true -> error - end; -nodeprep(_) -> error. +nodeprep(S) -> jid:nodeprep(S). -spec nameprep(binary()) -> binary() | error. -nameprep(S) when byte_size(S) < 1024 -> - R = stringprep:nameprep(S), - if byte_size(R) < 1024 -> R; - true -> error - end; -nameprep(_) -> error. +nameprep(S) -> jid:nameprep(S). -spec resourceprep(binary()) -> binary() | error. -resourceprep(S) when byte_size(S) < 1024 -> - R = stringprep:resourceprep(S), - if byte_size(R) < 1024 -> R; - true -> error - end; -resourceprep(_) -> error. +resourceprep(S) -> jid:resourceprep(S). -spec jid_tolower(jid() | ljid()) -> error | ljid(). -jid_tolower(#jid{luser = U, lserver = S, - lresource = R}) -> - {U, S, R}; -jid_tolower({U, S, R}) -> - case nodeprep(U) of - error -> error; - LUser -> - case nameprep(S) of - error -> error; - LServer -> - case resourceprep(R) of - error -> error; - LResource -> {LUser, LServer, LResource} - end - end - end. +jid_tolower(J) -> + jid:tolower(J). -spec jid_remove_resource(jid()) -> jid(); (ljid()) -> ljid(). -jid_remove_resource(#jid{} = JID) -> - JID#jid{resource = <<"">>, lresource = <<"">>}; -jid_remove_resource({U, S, _R}) -> {U, S, <<"">>}. +jid_remove_resource(J) -> jid:remove_resource(J). -spec jid_replace_resource(jid(), binary()) -> error | jid(). jid_replace_resource(JID, Resource) -> - case resourceprep(Resource) of - error -> error; - LResource -> - JID#jid{resource = Resource, lresource = LResource} - end. + jid:replace_resource(JID, Resource). -spec get_iq_namespace(xmlel()) -> binary(). @@ -668,7 +557,7 @@ add_delay_info(El, From, Time, Desc) -> -> xmlel() | error. create_delay_tag(TimeStamp, FromJID, Desc) when is_tuple(FromJID) -> - From = jlib:jid_to_string(FromJID), + From = jid:to_string(FromJID), Stamp = now_to_utc_string(TimeStamp, 3), Children = case Desc of <<"">> -> []; @@ -680,7 +569,7 @@ create_delay_tag(TimeStamp, FromJID, Desc) when is_tuple(FromJID) -> {<<"stamp">>, Stamp}], children = Children}; create_delay_tag(DateTime, Host, Desc) when is_binary(Host) -> - FromJID = jlib:make_jid(<<"">>, Host, <<"">>), + FromJID = jid:make(<<"">>, Host, <<"">>), create_delay_tag(DateTime, FromJID, Desc). -type tz() :: {binary(), {integer(), integer()}} | {integer(), integer()} | utc. |