Browse Source

Fix broken post functions.

Tim Fletcher 17 years ago
parent
commit
61b65a06a5
2 changed files with 28 additions and 31 deletions
  1. 16 17
      src/oauth.erl
  2. 12 14
      src/oauth_request.erl

+ 16 - 17
src/oauth.erl

@@ -9,26 +9,32 @@
 
 
 get(URL, Consumer) ->
-  fetch({get, URL, []}, Consumer).
+  get(URL, Consumer, [], []).
 
 get(URL, Consumer, {oauth_tokens, Tokens}) ->
-  fetch({get, URL, []}, Consumer, Tokens);
-get(URL, Consumer, Params) ->
-  fetch({get, URL, Params}, Consumer, []).
+  get(URL, Consumer, Tokens, []);
+get(URL, Consumer, Params) when is_list(Params)->
+  get(URL, Consumer, [], Params).
 
 get(URL, Consumer, {oauth_tokens, Tokens}, Params) ->
-  fetch({get, URL, Params}, Consumer, Tokens).
+  get(URL, Consumer, Tokens, Params);
+get(URL, Consumer, Tokens, Params) when is_list(Tokens) ->
+  http:request(oauth_request:url(get, URL, Params, Consumer, Tokens)).
 
 post(URL, Consumer) ->
-  fetch({post, URL, []}, Consumer).
+  post(URL, Consumer, [], []).
 
 post(URL, Consumer, {oauth_tokens, Tokens}) ->
-  fetch({post, URL, []}, Consumer, Tokens);
-post(URL, Consumer, Params) ->
-  fetch({post, URL, Params}, Consumer, []).
+  post(URL, Consumer, Tokens, []);
+post(URL, Consumer, Params) when is_list(Params) ->
+  post(URL, Consumer, [], Params).
 
 post(URL, Consumer, {oauth_tokens, Tokens}, Params) ->
-  fetch({post, URL, Params}, Consumer, Tokens).
+  post(URL, Consumer, Tokens, Params);
+post(URL, Consumer, Tokens, Params) when is_list(Tokens) ->
+  SignedParamsString = oauth_request:params_string(post, URL, Params, Consumer, Tokens),
+  Request = {URL, [], "application/x-www-form-urlencoded", SignedParamsString},
+  http:request(post, Request, [], []).
 
 tokens({ok, {_,_,Data}}) ->
   {ok, {oauth_tokens, params_from_string(Data)}};
@@ -41,13 +47,6 @@ token({oauth_tokens, Tokens}) ->
 token_secret({oauth_tokens, Tokens}) ->
   proplists:get_value(oauth_token_secret, Tokens).
 
-fetch({Method, URL, Params}, Consumer) ->
-  fetch({Method, URL, Params}, Consumer, []).
-
-fetch({Method, URL, Params}, Consumer, Tokens) ->
-  SignedURL = oauth_request:url(Method, URL, Params, Consumer, Tokens),
-  http:request(Method, {SignedURL, _Headers=[]}, [], []).
-
 params_from_string(Data) ->
   lists:map(fun param_from_string/1, explode($&, Data)).
 

+ 12 - 14
src/oauth_request.erl

@@ -1,5 +1,6 @@
 -module(oauth_request).
 
+-export([params_string/5]).
 -export([url/5]).
 -export([header/6]).
 
@@ -14,13 +15,21 @@
 -import(lists, [map/2]).
 
 
+params_string(Method, URL, ExtraParams, Consumer, Tokens) ->
+  SignedParams = params(Method, URL, ExtraParams, Consumer, Tokens),
+  params_to_string(SignedParams).
+
 url(Method, URL, ExtraParams, Consumer, Tokens) ->
-  {Params, TokenSecret} = oauth_params(Tokens, Consumer, ExtraParams),
-  signed_url(Method, URL, Params, Consumer, TokenSecret).
+  SignedParams = params(Method, URL, ExtraParams, Consumer, Tokens),
+  sprintf("%s?%s", [URL, params_to_string(SignedParams)]).
 
 header(Realm, Method, URL, ExtraParams, Consumer, Tokens) ->
+  SignedParams = params(Method, URL, ExtraParams, Consumer, Tokens),
+  sprintf("Authorization: OAuth realm=\"%s\", %s", [Realm, params_to_header_string(SignedParams)]).
+
+params(Method, URL, ExtraParams, Consumer, Tokens) ->
   {Params, TokenSecret} = oauth_params(Tokens, Consumer, ExtraParams),
-  signed_header(Realm, Method, URL, Params, Consumer, TokenSecret).
+  [{oauth_signature, signature(Method, URL, Params, Consumer, TokenSecret)}|Params].
 
 oauth_params([], Consumer, ExtraParams) ->
   {oauth_params(Consumer, ExtraParams), ""};
@@ -47,17 +56,6 @@ proplists_merge({K,V}, Merged) ->
 proplists_merge(A, B) ->
   lists:foldl(fun proplists_merge/2, A, B).
 
-signed_url(Method, URL, Params, Consumer, TokenSecret) ->
-  SignedParams = signed_params(Method, URL, Params, Consumer, TokenSecret),
-  sprintf("%s?%s", [URL, params_to_string(SignedParams)]).
-
-signed_header(Realm, Method, URL, Params, Consumer, TokenSecret) ->
-  SignedParams = signed_params(Method, URL, Params, Consumer, TokenSecret),
-  sprintf("Authorization: OAuth realm=\"%s\", %s", [Realm, params_to_header_string(SignedParams)]).
-
-signed_params(Method, URL, Params, Consumer, TokenSecret) ->
-  [{oauth_signature, signature(Method, URL, Params, Consumer, TokenSecret)}|Params].
-
 signature(Method, URL, Params, Consumer, TokenSecret) ->
   ConsumerSecret = oauth_consumer:secret(Consumer),
   case signature_method(Params) of