Packages
erlcloud
0.9.0
3.8.3
3.8.2
3.8.1
3.7.6
3.7.4
3.7.3
3.7.2
3.7.1
3.7.0
3.6.8
3.6.7
3.6.5
3.6.4
3.6.3
3.6.2
3.6.1
3.6.0
3.5.16
3.5.15
3.5.14
3.5.13
3.5.12
3.5.11
3.5.10
3.5.9
3.5.8
3.5.7
3.5.6
3.5.5
3.5.4
3.5.3
3.5.2
3.5.1
3.5.0
3.4.5
3.4.3
3.4.1
3.4.0
3.3.9
3.3.8
3.3.7
3.3.6
3.3.5
3.3.4
3.3.3
3.3.2
3.3.1
3.3.0
3.2.18
3.2.17
3.2.16
3.2.15
3.2.14
3.2.13
3.2.12
3.2.11
3.2.10
3.2.7
3.2.6
3.2.5
3.2.4
3.2.3
3.2.2
3.2.1
3.2.0
3.1.17
3.1.16
3.1.14
3.1.13
3.1.12
3.1.11
3.1.9
3.1.8
3.1.7
3.1.6
3.1.5
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
2.2.16
2.2.15
2.2.14
2.2.13
2.2.12
2.2.11
2.2.10
2.2.9
2.2.8
2.2.7
2.2.6
2.2.5
2.2.4
2.2.2
2.2.1
2.2.0
2.1.0
2.0.5
2.0.4
2.0.3
2.0.0
0.13.10
0.13.9
0.13.8
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.0
0.12.0
0.11.0
0.9.2
0.9.2-rc.1
0.9.1
0.9.0
AWS APIs library for Erlang
Current section
Files
Jump to
Current section
Files
src/erlcloud_http.erl
-module(erlcloud_http).
-export([make_query_string/1, url_encode/1, url_encode_loose/1]).
make_query_string(Params) ->
string:join([case Value of
[] -> [Key];
_ -> [Key, "=", url_encode(value_to_string(Value))]
end
|| {Key, Value} <- Params, Value =/= none, Value =/= undefined], "&").
value_to_string(Integer) when is_integer(Integer) -> integer_to_list(Integer);
value_to_string(Atom) when is_atom(Atom) -> atom_to_list(Atom);
value_to_string(Binary) when is_binary(Binary) -> Binary;
value_to_string(String) when is_list(String) -> unicode:characters_to_binary(String).
url_encode(Binary) when is_binary(Binary) ->
url_encode(binary_to_list(Binary));
url_encode(String) ->
url_encode(String, []).
url_encode([], Accum) ->
lists:reverse(Accum);
url_encode([Char|String], Accum)
when Char >= $A, Char =< $Z;
Char >= $a, Char =< $z;
Char >= $0, Char =< $9;
Char =:= $-; Char =:= $_;
Char =:= $.; Char =:= $~ ->
url_encode(String, [Char|Accum]);
url_encode([Char|String], Accum)
when Char >=0, Char =< 255 ->
url_encode(String, [hex_char(Char rem 16), hex_char(Char div 16),$%|Accum]).
url_encode_loose(Binary) when is_binary(Binary) ->
url_encode_loose(binary_to_list(Binary));
url_encode_loose(String) ->
url_encode_loose(String, []).
url_encode_loose([], Accum) ->
lists:reverse(Accum);
url_encode_loose([Char|String], Accum)
when Char >= $A, Char =< $Z;
Char >= $a, Char =< $z;
Char >= $0, Char =< $9;
Char =:= $-; Char =:= $_;
Char =:= $.; Char =:= $~;
Char =:= $/; Char =:= $: ->
url_encode_loose(String, [Char|Accum]);
url_encode_loose([Char|String], Accum)
when Char >=0, Char =< 255 ->
url_encode_loose(String, [hex_char(Char rem 16), hex_char(Char div 16),$%|Accum]).
hex_char(C) when C >= 0, C =< 9 -> $0 + C;
hex_char(C) when C >= 10, C =< 15 -> $A + C - 10.