Просмотр исходного кода

Extract another module from oauth_request.

Tim Fletcher 17 лет назад
Родитель
Сommit
224f3f94d4
2 измененных файлов с 18 добавлено и 12 удалено
  1. 1 12
      src/oauth_request.erl
  2. 17 0
      src/oauth_signature.erl

+ 1 - 12
src/oauth_request.erl

@@ -18,7 +18,7 @@ header(Realm, Method, URL, ExtraParams, Consumer, Tokens) ->
 
 params(Method, URL, ExtraParams, Consumer, Tokens) ->
   {Params, TokenSecret} = oauth_params(Tokens, Consumer, ExtraParams),
-  [{oauth_signature, signature(Method, URL, Params, Consumer, TokenSecret)}|Params].
+  [{oauth_signature, oauth_signature:new(Method, URL, Params, Consumer, TokenSecret)}|Params].
 
 oauth_params([], Consumer, ExtraParams) ->
   {oauth_params(Consumer, ExtraParams), ""};
@@ -45,14 +45,3 @@ proplists_merge({K,V}, Merged) ->
 proplists_merge(A, B) ->
   lists:foldl(fun proplists_merge/2, A, B).
 
-signature(Method, URL, Params, Consumer, TokenSecret) ->
-  ConsumerSecret = oauth_consumer:secret(Consumer),
-  case signature_method(Params) of
-    "PLAINTEXT" ->
-      oauth_plaintext:signature(ConsumerSecret, TokenSecret);
-    "HMAC-SHA1" ->
-      oauth_hmac:signature({Method, URL, Params}, ConsumerSecret, TokenSecret)
-  end.
-
-signature_method(Params) ->
-  proplists:get_value(oauth_signature_method, Params).

+ 17 - 0
src/oauth_signature.erl

@@ -0,0 +1,17 @@
+-module(oauth_signature).
+
+-export([new/5]).
+
+
+new(RequestMethod, URL, Params, ConsumerSecret, TokenSecret) when is_list(ConsumerSecret) ->
+  new(method(Params), RequestMethod, URL, Params, ConsumerSecret, TokenSecret);
+new(RequestMethod, URL, Params, Consumer, TokenSecret) ->
+  new(RequestMethod, URL, Params, oauth_consumer:secret(Consumer), TokenSecret).
+
+new("PLAINTEXT", _RequestMethod, _URL, _Params, ConsumerSecret, TokenSecret) ->
+  oauth_plaintext:signature(ConsumerSecret, TokenSecret);
+new("HMAC-SHA1", RequestMethod, URL, Params, ConsumerSecret, TokenSecret) ->
+  oauth_hmac:signature({RequestMethod, URL, Params}, ConsumerSecret, TokenSecret).
+
+method(Params) ->
+  proplists:get_value(oauth_signature_method, Params).