Sha256: fdbaced6fa65e404f72c6ae4173d83e599d42a40b6f659d526481aade3d7c4b0

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

module Base
  module Apis
    class Search
      include HTTP
      include Apis
      attr_reader :client_secret

      def request(query, &block)
        clnt = HTTPClient.new
        uri  = generate_uri('search')
        body = generate_body(query, &block)

        clnt.get(
          uri,
          body,
          client_secret.header_parameter)
      end

      def generate_body(query)
        # https://github.com/baseinc/api-docs/blob/master/base_api_v1_search.md
        #
        # { client_id:     'client id for search',
        #   client_secret: 'client secret for search',
        #   q:             'search words delimited by space',
        #   sort:          'order_count desc, stock desc, price asc',
        #   start:         0,
        #   size:          10,
        #   fields:        'shop_name, title, detail',
        #   shop_id:       '' }

        given_parameters = block_given? ? yield : {}
        default =
          { client_id:     @client_secret.search_client_id,
            client_secret: @client_secret.search_client_secret }

        default.merge(given_parameters).merge(q: query)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
base-api-client-0.3.3.beta lib/base/apis/search.rb
base-api-client-0.3.2.beta lib/base/apis/search.rb