Class: RubyEtsy::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-etsy/client.rb

Constant Summary collapse

REFRESH_TOKEN_URL =
'https://api.etsy.com/v3/public/oauth/token'
V3_URL =
'https://openapi.etsy.com/v3/application'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(access_token:, refresh_token:, api_key:, api_secret:, shop_id:) ⇒ Client

Returns a new instance of Client.



15
16
17
18
19
20
21
22
23
# File 'lib/ruby-etsy/client.rb', line 15

def initialize(access_token:, refresh_token:, api_key:, api_secret:, shop_id:) 
  RubyEtsy.configure

  @access_token  = access_token  || RubyEtsy.config.access_token
  @refresh_token = refresh_token || RubyEtsy.config.refresh_token
  @api_key       = api_key       || RubyEtsy.config.api_key
  @api_secret    = api_secret    || RubyEtsy.config.api_secret
  @shop_id       = shop_id       || RubyEtsy.config.shop_id
end

Instance Attribute Details

#access_tokenObject

Returns the value of attribute access_token.



13
14
15
# File 'lib/ruby-etsy/client.rb', line 13

def access_token
  @access_token
end

#api_keyObject

Returns the value of attribute api_key.



13
14
15
# File 'lib/ruby-etsy/client.rb', line 13

def api_key
  @api_key
end

#api_secretObject

Returns the value of attribute api_secret.



13
14
15
# File 'lib/ruby-etsy/client.rb', line 13

def api_secret
  @api_secret
end

#refresh_tokenObject

Returns the value of attribute refresh_token.



13
14
15
# File 'lib/ruby-etsy/client.rb', line 13

def refresh_token
  @refresh_token
end

#shop_idObject

Returns the value of attribute shop_id.



13
14
15
# File 'lib/ruby-etsy/client.rb', line 13

def shop_id
  @shop_id
end

Instance Method Details

#action(url, payload: {}, query_params: {}, http_method: :post) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ruby-etsy/client.rb', line 25

def action(url, payload: {}, query_params: {}, http_method: :post)
  headers = {
    'User-Agent': "RubyEtsy client v#{RubyEtsy::VERSION})",
    'x-api-key': api_key,
    'Authorization': "Bearer #{access_token}" 
  }
  
  response = ::RestClient::Request.execute(
    method:     http_method, 
    url:        construct_url(url, query_params),
    payload:    payload.to_json, 
    headers:    headers,
    timeout:    5, 
    verify_ssl: ::OpenSSL::SSL::VERIFY_NONE
  )
  
  ::HttpParser.parse(response)
rescue RestClient::Unauthorized => e
  puts "RESCUED UNATHORIZED"
  
  refresh_token
  action(url, http_method: :get)
end