]> granicus.if.org Git - ejabberd/commitdiff
Move ejabberd_http:url_encode/1 to 'misc' module
authorHolger Weiss <holger@zedat.fu-berlin.de>
Mon, 2 Apr 2018 22:12:43 +0000 (00:12 +0200)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Mon, 2 Apr 2018 22:12:43 +0000 (00:12 +0200)
src/ejabberd_http.erl
src/ejabberd_web_admin.erl
src/misc.erl
src/mod_http_upload.erl
src/rest.erl

index 474304a5dbc52c7409798512926b9477df1688e2..babf742c8004116a2c74f12b6b9108ee20241be1 100644 (file)
@@ -31,7 +31,7 @@
 
 %% External exports
 -export([start/2, start_link/2, become_controller/1,
-        socket_type/0, receive_headers/1, url_encode/1,
+        socket_type/0, receive_headers/1,
          transform_listen_option/2, listen_opt_type/1]).
 
 -export([init/2, opt_type/1]).
@@ -822,41 +822,6 @@ parse_urlencoded(<<>>, Last, Cur, _State) ->
     [{Last, Cur}];
 parse_urlencoded(undefined, _, _, _) -> [].
 
-
-url_encode(A) ->
-    url_encode(A, <<>>).
-
-url_encode(<<H:8, T/binary>>, Acc) when
-      (H >= $a andalso H =< $z) orelse
-      (H >= $A andalso H =< $Z) orelse
-      (H >= $0 andalso H =< $9) orelse
-      H == $_ orelse
-      H == $. orelse
-      H == $- orelse
-      H == $/ orelse
-      H == $: ->
-    url_encode(T, <<Acc/binary, H>>);
-url_encode(<<H:8, T/binary>>, Acc) ->
-    case integer_to_hex(H) of
-        [X, Y] -> url_encode(T, <<Acc/binary, $%, X, Y>>);
-        [X] -> url_encode(T, <<Acc/binary, $%, $0, X>>)
-    end;
-url_encode(<<>>, Acc) ->
-    Acc.
-
-
-integer_to_hex(I) ->
-    case catch erlang:integer_to_list(I, 16) of
-      {'EXIT', _} -> old_integer_to_hex(I);
-      Int -> Int
-    end.
-
-old_integer_to_hex(I) when I < 10 -> integer_to_list(I);
-old_integer_to_hex(I) when I < 16 -> [I - 10 + $A];
-old_integer_to_hex(I) when I >= 16 ->
-    N = trunc(I / 16),
-    old_integer_to_hex(N) ++ old_integer_to_hex(I rem 16).
-
 % The following code is mostly taken from yaws_ssl.erl
 
 toupper(C) when C >= $a andalso C =< $z -> C - 32;
index 20c630df13f9107714ab39f248c3b85d74a1e4e6..524c80f507e5251c4640d22dc1b497e02b299ec0 100644 (file)
@@ -1240,7 +1240,7 @@ list_given_users(Host, Users, Prefix, Lang, URLFunc) ->
                                ?XE(<<"tr">>,
                                    [?XE(<<"td">>,
                                         [?AC((URLFunc({user, Prefix,
-                                                       ejabberd_http:url_encode(User),
+                                                       misc:url_encode(User),
                                                        Server})),
                                              (us_to_list(US)))]),
                                     ?XE(<<"td">>, FQueueLen),
@@ -1319,7 +1319,7 @@ list_online_users(Host, _Lang) ->
     SUsers = lists:usort(Users),
     lists:flatmap(fun ({_S, U} = SU) ->
                          [?AC(<<"../user/",
-                                (ejabberd_http:url_encode(U))/binary, "/">>,
+                                (misc:url_encode(U))/binary, "/">>,
                               (su_to_list(SU))),
                           ?BR]
                  end,
index 9f3210d5e063174f93d99a01a210db53ec8d5a26..b4396e97bf0997afbea648192ada5cf8fe0a3245 100644 (file)
@@ -29,7 +29,7 @@
 
 %% API
 -export([tolower/1, term_to_base64/1, base64_to_term/1, ip_to_list/1,
-        hex_to_bin/1, hex_to_base64/1, expand_keyword/3,
+        hex_to_bin/1, hex_to_base64/1, url_encode/1, expand_keyword/3,
         atom_to_binary/1, binary_to_atom/1, tuple_to_binary/1,
         l2i/1, i2l/1, i2l/2, expr_to_term/1, term_to_expr/1,
         now_to_usec/1, usec_to_now/1, encode_pid/1, decode_pid/2,
@@ -105,6 +105,10 @@ hex_to_bin([H1, H2 | T], Acc) ->
 hex_to_base64(Hex) ->
     base64:encode(hex_to_bin(Hex)).
 
+-spec url_encode(binary()) -> binary().
+url_encode(A) ->
+    url_encode(A, <<>>).
+
 -spec expand_keyword(binary(), binary(), binary()) -> binary().
 expand_keyword(Keyword, Input, Replacement) ->
     Parts = binary:split(Input, Keyword, [global]),
@@ -262,6 +266,37 @@ read_js(File) ->
 %%%===================================================================
 %%% Internal functions
 %%%===================================================================
+-spec url_encode(binary(), binary()) -> binary().
+url_encode(<<H:8, T/binary>>, Acc) when
+  (H >= $a andalso H =< $z) orelse
+  (H >= $A andalso H =< $Z) orelse
+  (H >= $0 andalso H =< $9) orelse
+  H == $_ orelse
+  H == $. orelse
+  H == $- orelse
+  H == $/ orelse
+  H == $: ->
+    url_encode(T, <<Acc/binary, H>>);
+url_encode(<<H:8, T/binary>>, Acc) ->
+    case integer_to_hex(H) of
+       [X, Y] -> url_encode(T, <<Acc/binary, $%, X, Y>>);
+       [X] -> url_encode(T, <<Acc/binary, $%, $0, X>>)
+    end;
+url_encode(<<>>, Acc) ->
+    Acc.
+
+integer_to_hex(I) ->
+    case catch erlang:integer_to_list(I, 16) of
+      {'EXIT', _} -> old_integer_to_hex(I);
+      Int -> Int
+    end.
+
+old_integer_to_hex(I) when I < 10 -> integer_to_list(I);
+old_integer_to_hex(I) when I < 16 -> [I - 10 + $A];
+old_integer_to_hex(I) when I >= 16 ->
+    N = trunc(I / 16),
+    old_integer_to_hex(N) ++ old_integer_to_hex(I rem 16).
+
 -spec set_node_id(string(), binary()) -> pid().
 set_node_id(PidStr, NodeBin) ->
     ExtPidStr = erlang:pid_to_list(
index 9a5952926c9886bb4dbdeb9488b42799d0692b45..0a087124a68b7f25f8cfab0b5e397376f21592cb 100644 (file)
@@ -31,7 +31,7 @@
 -define(SERVICE_REQUEST_TIMEOUT, 5000). % 5 seconds.
 -define(SLOT_TIMEOUT, 18000000). % 5 hours.
 -define(FORMAT(Error), file:format_error(Error)).
--define(URL_ENC(URL), binary_to_list(ejabberd_http:url_encode(URL))).
+-define(URL_ENC(URL), binary_to_list(misc:url_encode(URL))).
 -define(ADDR_TO_STR(IP), ejabberd_config:may_hide_data(misc:ip_to_list(IP))).
 -define(STR_TO_INT(Str, B), binary_to_integer(iolist_to_binary(Str), B)).
 -define(DEFAULT_CONTENT_TYPE, <<"application/octet-stream">>).
index 16cf09a345df51ef2d91063b065fa119b3661d4d..7e509dec839eb149b48f68bc2356d9910f1bfb05 100644 (file)
@@ -172,7 +172,7 @@ url(Server, Path, Params) ->
     Base = base_url(Server, Path),
     [<<$&, ParHead/binary>> | ParTail] =
         [<<"&", (iolist_to_binary(Key))/binary, "=",
-         (ejabberd_http:url_encode(Value))/binary>>
+         (misc:url_encode(Value))/binary>>
             || {Key, Value} <- Params],
     Tail = iolist_to_binary([ParHead | ParTail]),
     binary_to_list(<<Base/binary, $?, Tail/binary>>).