Packages
extwitter
0.8.0
0.14.0
0.13.1
0.13.0
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.0
0.10.0
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.1
0.2.0
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Twitter client library for Elixir.
Current section
Files
Jump to
Current section
Files
lib/extwitter/oauth.ex
defmodule ExTwitter.OAuth do
@moduledoc """
Provide a wrapper for :oauth request methods.
"""
@doc """
Send request with get method.
"""
def request(:get, url, params, consumer_key, consumer_secret, access_token, access_token_secret) do
oauth_get(url, params, consumer_key, consumer_secret, access_token, access_token_secret, [])
end
@doc """
Send request with post method.
"""
def request(:post, url, params, consumer_key, consumer_secret, access_token, access_token_secret) do
oauth_post(url, params, consumer_key, consumer_secret, access_token, access_token_secret, [])
end
@doc """
Send async request with get method.
"""
def request_async(:get, url, params, consumer_key, consumer_secret, access_token, access_token_secret) do
oauth_get(url, params, consumer_key, consumer_secret, access_token, access_token_secret, stream_option())
end
@doc """
Send async request with post method.
"""
def request_async(:post, url, params, consumer_key, consumer_secret, access_token, access_token_secret) do
oauth_post(url, params, consumer_key, consumer_secret, access_token, access_token_secret, stream_option())
end
def oauth_get(url, params, consumer_key, consumer_secret, access_token, access_token_secret, options) do
signed_params = get_signed_params(
"get", url, params, consumer_key, consumer_secret, access_token, access_token_secret)
encoded_params = URI.encode_query(signed_params)
request = {to_char_list(url <> "?" <> encoded_params), []}
send_httpc_request(:get, request, options)
end
def oauth_post(url, params, consumer_key, consumer_secret, access_token, access_token_secret, options) do
signed_params = get_signed_params(
"post", url, params, consumer_key, consumer_secret, access_token, access_token_secret)
encoded_params = URI.encode_query(signed_params)
request = {to_char_list(url), [], 'application/x-www-form-urlencoded', encoded_params}
send_httpc_request(:post, request, options)
end
def send_httpc_request(method, request, options) do
:httpc.request(method, request, [{:autoredirect, false}] ++ proxy_option(), options)
end
defp get_signed_params(method, url, params, consumer_key, consumer_secret, access_token, access_token_secret) do
credentials = OAuther.credentials(
consumer_key: consumer_key,
consumer_secret: consumer_secret,
token: access_token,
token_secret: access_token_secret
)
OAuther.sign(method, url, params, credentials)
end
defp stream_option do
[{:sync, false}, {:stream, :self}]
end
defp proxy_option do
ExTwitter.Proxy.options
end
end