lib/pocket/oauth.rb
module Pocket
# Defines HTTP request methods
module OAuth
# Return URL for OAuth authorization
def authorize_url(options = {})
params = access_token_params.merge(options)
params.delete(:consumer_key) # shouldn't be exposed publically
# Pocket renames `code` to `request_token` for some reason in this call
params[:request_token] ||= params.delete(:code)
connection.build_url("/auth/authorize", params).to_s
end
# Return a Pocket code
def get_code(options = {})
params = access_token_params.merge(options)
response = connection.post "oauth/request", params
results = URI.decode_www_form(response.body).to_h
results["code"]
end
# Return an access token from authorization
def get_access_token(code, options = {})
params = access_token_params.merge(code: code).merge(options)
response = connection.post "oauth/authorize", params
results = URI.decode_www_form(response.body).to_h
results["access_token"]
end
# Return result from authorization
def get_result(code, options = {})
params = access_token_params.merge(code: code).merge(options)
response = connection.post "oauth/authorize", params
URI.decode_www_form(response.body).to_h
end
private
def access_token_params
{
consumer_key: consumer_key,
redirect_uri: redirect_uri
}
end
end
end