class Rapa::Client

Public Class Methods

new(access_key_id:, associate_tag:, secret_access_key:) click to toggle source

@param access_key_id [String] @param associate_tag [String] @param secret_access_key [String]

# File lib/rapa/client.rb, line 10
def initialize(access_key_id:, associate_tag:, secret_access_key:)
  @access_key_id = access_key_id
  @associate_tag = associate_tag
  @secret_access_key = secret_access_key
end

Public Instance Methods

connection() click to toggle source

@return [Faraday::Connection]

# File lib/rapa/client.rb, line 17
def connection
  @connection ||= ::Faraday::Connection.new do |connection|
    connection.response :xml
    connection.options.params_encoder = ::Rapa::Encoder.new
    connection.adapter :net_http
  end
end
list_items( item_ids:, domain:, id_type: nil, related_item_page: nil, relationship_type: nil, response_groups: nil, search_index: nil ) click to toggle source

@param item_ids [Array<String>] @param domain [String] @param id_type [String, nil] @param related_item_page [Integer, nil] @param relationship_type [String, nil] @param response_groups [Array<String>, nil] @return [Rapa::Responses::ListItemsResponse]

# File lib/rapa/client.rb, line 50
def list_items(
  item_ids:,
  domain:,
  id_type: nil,
  related_item_page: nil,
  relationship_type: nil,
  response_groups: nil,
  search_index: nil
)
  send_request(
    item_ids: item_ids,
    domain: domain,
    id_type: id_type,
    query_class: ::Rapa::Queries::ListItemsQuery,
    related_item_page: related_item_page,
    relationship_type: relationship_type,
    response_class: ::Rapa::Responses::ListItemsResponse,
    response_groups: response_groups,
    search_index: search_index
  )
end
lookup_browse_node( browse_node_id:, domain:, response_groups: nil ) click to toggle source

@param browse_node_id [Integer] @param domain [String] @param response_groups [Array<String>, nil] @return [Rapa::Responses::LookupBrowseNodeResponse]

# File lib/rapa/client.rb, line 29
def lookup_browse_node(
  browse_node_id:,
  domain:,
  response_groups: nil
)
  send_request(
    browse_node_id: browse_node_id,
    domain: domain,
    query_class: ::Rapa::Queries::LookupBrowseNode,
    response_class: ::Rapa::Responses::LookupBrowseNodeResponse,
    response_groups: response_groups
  )
end
search_items( browse_node_id: nil, domain:, item_page: nil, keywords: nil, power: nil, related_item_page: nil, relationship_type: nil, response_groups: nil, search_index: nil ) click to toggle source

@param browse_node_id [Integer] @param domain [String] @param item_page [Integer, nil] @param keywords [Array<String>, nil] @param power [String, nil] @param related_item_page [Integer, nil] @param relationship_type [String, nil] @param response_groups [Array<String>, nil] @param search_index [String, nil] @return [Rapa::Responses::SearchItemsResponse]

# File lib/rapa/client.rb, line 82
def search_items(
  browse_node_id: nil,
  domain:,
  item_page: nil,
  keywords: nil,
  power: nil,
  related_item_page: nil,
  relationship_type: nil,
  response_groups: nil,
  search_index: nil
)
  send_request(
    browse_node_id: browse_node_id,
    domain: domain,
    item_page: item_page,
    keywords: keywords,
    power: power,
    query_class: ::Rapa::Queries::SearchItemsQuery,
    related_item_page: related_item_page,
    relationship_type: relationship_type,
    response_class: ::Rapa::Responses::SearchItemsResponse,
    response_groups: response_groups,
    search_index: search_index,
  )
end

Private Instance Methods

access_key_id() click to toggle source

@private @return [String]

# File lib/rapa/client.rb, line 112
def access_key_id
  @access_key_id
end
associate_tag() click to toggle source

@private @return [String]

# File lib/rapa/client.rb, line 118
def associate_tag
  @associate_tag
end
common_query_options() click to toggle source

@private @return [Hash]

# File lib/rapa/client.rb, line 124
def common_query_options
  {
    access_key_id: access_key_id,
    associate_tag: associate_tag,
  }
end
secret_access_key() click to toggle source

@private @return [String]

# File lib/rapa/client.rb, line 133
def secret_access_key
  @secret_access_key
end
send_request(domain:, query_class:, response_class:, **options) click to toggle source

@private @param domain [String] @param query_class [Class] @param response_class [Class] @return [Rapa::Responses::BaseResponse]

# File lib/rapa/client.rb, line 142
def send_request(domain:, query_class:, response_class:, **options)
  query_options = common_query_options.merge(options)
  query = query_class.new(query_options)
  url = ::Rapa::Url.new(domain: domain)
  uri = ::URI.parse(url.to_s)
  query_string = query.to_s
  signature = ::Rapa::Signer.new(
    host: uri.host,
    http_method: "GET",
    key: secret_access_key,
    path: uri.path,
    query_string: query_string,
  ).sign
  faraday_response = connection.get(uri, query.to_hash.merge(Signature: signature))
  response_class.new(faraday_response)
end