From 8bf26038f9b65a88c4ce5f7965da84be29523c0a Mon Sep 17 00:00:00 2001 From: Jason Davies Date: Tue, 14 Jul 2009 06:02:42 +0800 Subject: [PATCH] Add handy params_from_header_string/1. For use when decoding the OAuth's "Authorization" header. Signed-off-by: Tim Fletcher --- src/oauth_uri.erl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/oauth_uri.erl b/src/oauth_uri.erl index 2baa0b0..8859ea6 100644 --- a/src/oauth_uri.erl +++ b/src/oauth_uri.erl @@ -1,7 +1,8 @@ -module(oauth_uri). -export([normalize/1, calate/2, encode/1]). --export([params_from_string/1, params_to_string/1, params_to_header_string/1]). +-export([params_from_string/1, params_to_string/1, + params_from_header_string/1, params_to_header_string/1]). -import(lists, [concat/1]). @@ -37,6 +38,14 @@ normalize(Scheme, UserInfo, Acc) -> params_to_header_string(Params) -> intercalate(", ", [concat([encode(K), "=\"", encode(V), "\""]) || {K, V} <- Params]). +params_from_header_string(String) -> + [param_from_header_string(Param) || Param <- re:split(String, ",\\s*", [{return, list}])]. + +param_from_header_string(Param) -> + [Key, QuotedValue] = string:tokens(Param, "="), + Value = string:substr(QuotedValue, 2, length(QuotedValue) - 2), + {decode(Key), decode(Value)}. + params_from_string(Params) -> [param_from_string(Param) || Param <- string:tokens(Params, "&")].