Class: PocketApi::Connection

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/pocket_api/connection.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.client_keyObject

Returns the value of attribute client_key.



9
10
11
# File 'lib/pocket_api/connection.rb', line 9

def client_key
  @client_key
end

.request_tokenObject

Returns the value of attribute request_token.



10
11
12
# File 'lib/pocket_api/connection.rb', line 10

def request_token
  @request_token
end

Class Method Details

.generate_access_token(request_token = @request_token) ⇒ Object



29
30
31
32
33
34
# File 'lib/pocket_api/connection.rb', line 29

def generate_access_token(request_token=@request_token)
  response = post("/v3/oauth/authorize", :body => MultiJson.dump({:code => request_token, :consumer_key => @client_key}), :headers => {"Content-Type" => "application/json; charset=UTF-8", "X-Accept" => "application/json"})
  raise response.headers["X-Error"] if response.headers["X-Error"]
  
  response.parsed_response["access_token"]
end

.generate_authorize_url(redirect_uri, state = nil) ⇒ Object



36
37
38
39
40
# File 'lib/pocket_api/connection.rb', line 36

def generate_authorize_url(redirect_uri, state=nil)
  @request_token = generate_request_token({:redirect_uri => redirect_uri})
  
  "#{default_options[:base_uri]}/auth/authorize?request_token=#{CGI.escape(request_token)}&redirect_uri=#{CGI.escape(redirect_uri)}#{"&state=#{CGI.escape(state)}"if state}"
end

.generate_request_token(body_options = {}, headers_options = {}) ⇒ Object

OAuth authorization Helpers Sample Workflow:

  1. generate_authorize_url, redirect user to URL

  2. generate_access_token if user comes back

  3. Do a sample call to API to see if it works



19
20
21
22
23
24
25
26
27
# File 'lib/pocket_api/connection.rb', line 19

def generate_request_token(body_options={}, headers_options={})
  response = post("/v3/oauth/request", :body => MultiJson.dump({:consumer_key => @client_key}.merge(body_options)), :headers => {"Content-Type" => "application/json; charset=UTF-8", "X-Accept" => "application/json"}.merge(headers_options))
  if response.success? && response.parsed_response["code"]
    # Should be a string body like "code=12345678"
    @request_token = response.parsed_response["code"]
  else
    raise "could not generate request token: #{response.inspect}"
  end
end