12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- -module(oauth_request).
- -export([header/6, params_string/5, url/5]).
- header(Realm, Method, URL, ExtraParams, Consumer, TokenPair) ->
- Params = signed_params(Method, URL, ExtraParams, Consumer, TokenPair),
- HeaderString = oauth_params:to_header_string(Params),
- HeaderValue = fmt:sprintf("OAuth realm=\"%s\", %s", [Realm, HeaderString]),
- {"Authorization", HeaderValue}.
- params_string(Method, URL, ExtraParams, Consumer, TokenPair) ->
- Params = signed_params(Method, URL, ExtraParams, Consumer, TokenPair),
- oauth_params:to_string(Params).
- url(Method, URL, ExtraParams, Consumer, TokenPair) ->
- Params = signed_params(Method, URL, ExtraParams, Consumer, TokenPair),
- fmt:sprintf("%s?%s", [URL, oauth_params:to_string(Params)]).
- signed_params(Method, URL, ExtraParams, Consumer, TokenPair) ->
- {Params, TokenSecret} = oauth_params(TokenPair, Consumer, ExtraParams),
- [{oauth_signature, signature(Method, URL, Params, Consumer, TokenSecret)}|Params].
- oauth_params({[], TokenSecret}, Consumer, ExtraParams) ->
- {oauth_params(Consumer, ExtraParams), TokenSecret};
- oauth_params({Token, TokenSecret}, Consumer, ExtraParams) ->
- Params = [{oauth_token, Token}|oauth_params(Consumer, ExtraParams)],
- {Params, TokenSecret}.
- oauth_params(Consumer, ExtraParams) ->
- oauth_util:proplists_merge([
- {oauth_consumer_key, oauth_consumer:key(Consumer)},
- {oauth_signature_method, oauth_consumer:signature_method(Consumer)},
- {oauth_timestamp, oauth_util:unix_timestamp()},
- {oauth_nonce, oauth_util:nonce()},
- {oauth_version, "1.0"}
- ], ExtraParams).
- signature(RequestMethod, URL, Params, Consumer, TokenSecret) ->
- ConsumerSecret = oauth_consumer:secret(Consumer),
- case proplists:get_value(oauth_signature_method, Params) of
- "PLAINTEXT" ->
- oauth_plaintext:signature(ConsumerSecret, TokenSecret);
- "HMAC-SHA1" ->
- oauth_hmac:signature({RequestMethod, URL, Params}, ConsumerSecret, TokenSecret)
- end.
|