summaryrefslogtreecommitdiff
path: root/src/jlib.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2015-11-24 18:44:13 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2015-11-24 18:44:13 +0300
commit95265dd3ad8e149d94d08e1a73970fb0bbf55b49 (patch)
treea00a134cf0148a121ea505809cef0d9d49799652 /src/jlib.erl
parentMake Riak working on R18 (diff)
Move JID related functions to jid.erl (#847)
Diffstat (limited to 'src/jlib.erl')
-rw-r--r--src/jlib.erl165
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.