class AmzSpApi::SpApiClient
Public Class Methods
new(config = SpConfiguration.default)
click to toggle source
Calls superclass method
AmzSpApi::ApiClient::new
# File lib/sp_api_client.rb, line 9 def initialize(config = SpConfiguration.default) super(config) end
Public Instance Methods
call_api(http_method, path, opts = {})
click to toggle source
Calls superclass method
AmzSpApi::ApiClient#call_api
# File lib/sp_api_client.rb, line 14 def call_api(http_method, path, opts = {}) unsigned_request = build_request(http_method, path, opts) aws_headers = auth_headers(http_method, unsigned_request.url, unsigned_request.encoded_body) signed_opts = opts.merge(:header_params => aws_headers.merge(opts[:header_params] || {})) super(http_method, path, signed_opts) end
Also aliased as: super_call_api
Private Instance Methods
auth_headers(http_method, url, body)
click to toggle source
# File lib/sp_api_client.rb, line 76 def auth_headers(http_method, url, body) signed_request_headers(http_method, url, body).merge({ 'x-amz-access-token' => retrieve_lwa_access_token }) end
request_lwa_access_token()
click to toggle source
# File lib/sp_api_client.rb, line 35 def request_lwa_access_token newself = self.dup newself.config = config.dup newself.config.host = 'api.amazon.com' data, status_code, headers = newself.super_call_api(:POST, '/auth/o2/token', :header_params => { 'Content-Type' => 'application/x-www-form-urlencoded' }, :form_params => { grant_type: 'refresh_token', refresh_token: config.refresh_token, client_id: config.client_id, client_secret: config.client_secret }, :return_type => 'Object') unless data && data[:access_token] fail ApiError.new(:code => status_code, :response_headers => headers, :response_body => data) end data end
retrieve_lwa_access_token()
click to toggle source
# File lib/sp_api_client.rb, line 23 def retrieve_lwa_access_token return request_lwa_access_token[:access_token] unless config.get_access_token stored_token = config.get_access_token.call(config.access_token_key) if stored_token.nil? new_token = request_lwa_access_token config.save_access_token.call(config.access_token_key, new_token) if config.save_access_token return new_token[:access_token] else return stored_token end end
signed_request_headers(http_method, url, body)
click to toggle source
# File lib/sp_api_client.rb, line 61 def signed_request_headers(http_method, url, body) request_config = { service: 'execute-api', region: config.aws_region } if config.credentials_provider request_config[:credentials_provider] = config.credentials_provider else request_config[:access_key_id] = config.aws_access_key_id request_config[:secret_access_key] = config.aws_secret_access_key end signer = Aws::Sigv4::Signer.new(request_config) signer.sign_request(http_method: http_method.to_s, url: url, body: body).headers end