ebisu-rb 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/Gemfile +6 -0
- data/README.md +35 -0
- data/Rakefile +2 -0
- data/bin/console +10 -0
- data/bin/setup +8 -0
- data/ebisu.gemspec +30 -0
- data/lib/ebisu.rb +16 -0
- data/lib/ebisu/apis.rb +6 -0
- data/lib/ebisu/apis/category_search.rb +17 -0
- data/lib/ebisu/apis/item_search.rb +52 -0
- data/lib/ebisu/client.rb +58 -0
- data/lib/ebisu/faraday/connection.rb +30 -0
- data/lib/ebisu/faraday/request.rb +38 -0
- data/lib/ebisu/models/brands.rb +17 -0
- data/lib/ebisu/models/category.rb +36 -0
- data/lib/ebisu/models/category_id_path.rb +16 -0
- data/lib/ebisu/models/category_search_response.rb +37 -0
- data/lib/ebisu/models/ex_image.rb +24 -0
- data/lib/ebisu/models/image.rb +22 -0
- data/lib/ebisu/models/item.rb +139 -0
- data/lib/ebisu/models/item_search_response.rb +73 -0
- data/lib/ebisu/models/payment.rb +18 -0
- data/lib/ebisu/models/payment_method.rb +16 -0
- data/lib/ebisu/models/point.rb +24 -0
- data/lib/ebisu/models/price.rb +27 -0
- data/lib/ebisu/models/price_label.rb +47 -0
- data/lib/ebisu/models/review.rb +22 -0
- data/lib/ebisu/models/shipping.rb +17 -0
- data/lib/ebisu/models/store.rb +26 -0
- data/lib/ebisu/models/store_image.rb +16 -0
- data/lib/ebisu/models/store_ratings.rb +16 -0
- data/lib/ebisu/version.rb +3 -0
- metadata +187 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 521b49e69f7f688cbc7680960e7ada3ef50102c58d7183297c19705689ca5034
         | 
| 4 | 
            +
              data.tar.gz: b5825249c6f94d85a31b5bddaecd304d5b2f31d90576b04decdba0328180c20a
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: eaa7652f553b4ca2ed77a42034154593d76774fce9ffbebd99d8a2146fe6d0ea17894fe6615beb598a7f330aa0a63c600a1e67e4622a786dcce0c13eae89d8ff
         | 
| 7 | 
            +
              data.tar.gz: e68081055d4a44a3ba77890cc0b658f5c038f5b098bc6dfa3bdc2e34b788fb40cf0ee642884daa997d5184cc27e2e8eb7e4465684aaf9e15c7ea1016400f700b
         | 
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            # Ebisu
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/ebisu`. To experiment with that code, run `bin/console` for an interactive prompt.
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            TODO: Delete this and the text above, and describe your gem
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## Installation
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Add this line to your application's Gemfile:
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ```ruby
         | 
| 12 | 
            +
            gem 'ebisu'
         | 
| 13 | 
            +
            ```
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            And then execute:
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                $ bundle
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            Or install it yourself as:
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                $ gem install ebisu
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            ## Usage
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            TODO: Write usage instructions here
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ## Development
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            ## Contributing
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            Bug reports and pull requests are welcome on GitHub at https://github.com/takafumi.hirata/ebisu.
         | 
    
        data/Rakefile
    ADDED
    
    
    
        data/bin/console
    ADDED
    
    
    
        data/bin/setup
    ADDED
    
    
    
        data/ebisu.gemspec
    ADDED
    
    | @@ -0,0 +1,30 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            lib = File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 | 
            +
            require "ebisu/version"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Gem::Specification.new do |spec|
         | 
| 7 | 
            +
              spec.name          = "ebisu-rb"
         | 
| 8 | 
            +
              spec.version       = Ebisu::VERSION
         | 
| 9 | 
            +
              spec.authors       = ["totem3"]
         | 
| 10 | 
            +
              spec.email         = ["ganzheit.com@gmail.com"]
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              spec.summary       = %q{yahoo api client}
         | 
| 13 | 
            +
              spec.description   = %q{Ebisu is the yahoo item search api cilent.}
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              # Specify which files should be added to the gem when it is released.
         | 
| 16 | 
            +
              # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
         | 
| 17 | 
            +
              spec.files         = Dir.chdir(File.expand_path('..', __FILE__)) do
         | 
| 18 | 
            +
                `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
              spec.require_paths = ["lib"]
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              spec.add_dependency "faraday"
         | 
| 23 | 
            +
              spec.add_dependency "faraday_middleware"
         | 
| 24 | 
            +
              spec.add_dependency "multi_xml"
         | 
| 25 | 
            +
              spec.add_dependency 'nokogiri'
         | 
| 26 | 
            +
              spec.add_dependency 'mysql2'
         | 
| 27 | 
            +
              spec.add_development_dependency "bundler", "~> 1.17"
         | 
| 28 | 
            +
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 29 | 
            +
              spec.add_development_dependency "pry"
         | 
| 30 | 
            +
            end
         | 
    
        data/lib/ebisu.rb
    ADDED
    
    | @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            require "ebisu/version"
         | 
| 2 | 
            +
            require "logger"
         | 
| 3 | 
            +
            require "nokogiri"
         | 
| 4 | 
            +
            require "multi_xml"
         | 
| 5 | 
            +
            require "faraday"
         | 
| 6 | 
            +
            require "faraday_middleware"
         | 
| 7 | 
            +
            require "ebisu/faraday/request"
         | 
| 8 | 
            +
            require "ebisu/faraday/connection"
         | 
| 9 | 
            +
            require "ebisu/apis/category_search"
         | 
| 10 | 
            +
            require "ebisu/apis/item_search"
         | 
| 11 | 
            +
            require "ebisu/apis"
         | 
| 12 | 
            +
            require "ebisu/client"
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            module Ebisu
         | 
| 15 | 
            +
              class Error < StandardError; end
         | 
| 16 | 
            +
            end
         | 
    
        data/lib/ebisu/apis.rb
    ADDED
    
    
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            require 'ebisu/models/category_search_response'
         | 
| 2 | 
            +
            module Ebisu
         | 
| 3 | 
            +
              module Apis
         | 
| 4 | 
            +
                module CategorySearch
         | 
| 5 | 
            +
                  # @param [Integer] category_id
         | 
| 6 | 
            +
                  # @param [Hash] options
         | 
| 7 | 
            +
                  # @option options [String] :output 出力形式 ( xml, php, jsonp )
         | 
| 8 | 
            +
                  # @option options [String] :affiliate_type バリューコマースアフィリエイト(vc)
         | 
| 9 | 
            +
                  # @option options [String] :affiliate_id バリューコマースアフィリエイトのID
         | 
| 10 | 
            +
                  # @option options [String] :callback JSONPの場合のコールバック
         | 
| 11 | 
            +
                  def category_search(category_id, options = {})
         | 
| 12 | 
            +
                    options.merge!(category_id: category_id)
         | 
| 13 | 
            +
                    Ebisu::CategorySearchResponse.new get('categorySearch', options)
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| @@ -0,0 +1,52 @@ | |
| 1 | 
            +
            require 'ebisu/models/item_search_response'
         | 
| 2 | 
            +
            module Ebisu
         | 
| 3 | 
            +
              module Apis
         | 
| 4 | 
            +
                module ItemSearch
         | 
| 5 | 
            +
                  # @param [Hash] options
         | 
| 6 | 
            +
                  # @option options [String] :query
         | 
| 7 | 
            +
                  # @option options [String] :category_id
         | 
| 8 | 
            +
                  # @option options [String] :product_id
         | 
| 9 | 
            +
                  # @option options [String] :person_id
         | 
| 10 | 
            +
                  # @option options [String] :brand_id
         | 
| 11 | 
            +
                  # @option options [String] :store_id
         | 
| 12 | 
            +
                  # @option options [Integer] :price_from
         | 
| 13 | 
            +
                  # @option options [Integer] :price_to
         | 
| 14 | 
            +
                  # @option options [Float] :affiliate_from
         | 
| 15 | 
            +
                  # @option options [Float] :affiliate_to
         | 
| 16 | 
            +
                  # @option options [Integer] :preorder
         | 
| 17 | 
            +
                  # @option options [Integer] :hits
         | 
| 18 | 
            +
                  # @option options [Integer] :offset
         | 
| 19 | 
            +
                  # @option options [String] :module priceranges/subcategories
         | 
| 20 | 
            +
                  # @option options [Integer] :availability
         | 
| 21 | 
            +
                  # @option options [Integer] :discount
         | 
| 22 | 
            +
                  # @option options [Integer] :shipping (1/2)
         | 
| 23 | 
            +
                  # @option options [String] :payment
         | 
| 24 | 
            +
                  #   ウォレット対応カード:yahoowallet
         | 
| 25 | 
            +
                  #   クレジットカード:creditcard
         | 
| 26 | 
            +
                  #   商品代引:cod
         | 
| 27 | 
            +
                  #   銀行振込:banktransfer
         | 
| 28 | 
            +
                  #   郵便振替:pmo
         | 
| 29 | 
            +
                  #   モバイルSuica:mobilesuica
         | 
| 30 | 
            +
                  #   ペイジー:payeasy
         | 
| 31 | 
            +
                  #   Yahoo!マネー/預金払い:yahoomoney
         | 
| 32 | 
            +
                  #   コンビニ:convenience
         | 
| 33 | 
            +
                  # @option options [String] :license diamond/platinum/gold/silver/bronze/guest
         | 
| 34 | 
            +
                  # @option options [String] :salestart_from
         | 
| 35 | 
            +
                  # @option options [String] :salestart_to
         | 
| 36 | 
            +
                  # @option options [String] :saleend_from
         | 
| 37 | 
            +
                  # @option options [String] :saleend_to
         | 
| 38 | 
            +
                  # @option options [String] :seller (all/store/consumer)
         | 
| 39 | 
            +
                  # @option options [String] :sort (商品価格:price/ストア名:name/おすすめ順:score(デフォルト)/ レビュー数順:review_count)
         | 
| 40 | 
            +
                  # @option options [String] :condition (all/new/used)
         | 
| 41 | 
            +
                  # @option options [String] :output 出力形式 ( xml, php, jsonp )
         | 
| 42 | 
            +
                  # @option options [String] :affiliate_type バリューコマースアフィリエイト(vc)
         | 
| 43 | 
            +
                  # @option options [String] :affiliate_id バリューコマースアフィリエイトのID
         | 
| 44 | 
            +
                  # @option options [String] :callback JSONPの場合のコールバック
         | 
| 45 | 
            +
                  #
         | 
| 46 | 
            +
                  # @return [Ebisu::ItemSearchResponse]
         | 
| 47 | 
            +
                  def item_search(options = {})
         | 
| 48 | 
            +
                    Ebisu::ItemSearchResponse.new(get('itemSearch', options))
         | 
| 49 | 
            +
                  end
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
            end
         | 
    
        data/lib/ebisu/client.rb
    ADDED
    
    | @@ -0,0 +1,58 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Ebisu
         | 
| 4 | 
            +
              module Configuration
         | 
| 5 | 
            +
                extend self
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                ATTRIBUTES = %i[
         | 
| 8 | 
            +
                  api_version
         | 
| 9 | 
            +
                  user_agent
         | 
| 10 | 
            +
                  endpoint
         | 
| 11 | 
            +
                  appid
         | 
| 12 | 
            +
                  proxy
         | 
| 13 | 
            +
                  logger
         | 
| 14 | 
            +
                  timeout
         | 
| 15 | 
            +
                  open_timeout
         | 
| 16 | 
            +
                ].freeze
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                ATTRIBUTES.each do |a|
         | 
| 19 | 
            +
                  attr_accessor a
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def reset
         | 
| 23 | 
            +
                  self.api_version = 'V1'
         | 
| 24 | 
            +
                  self.endpoint = "https://shopping.yahooapis.jp/ShoppingWebService/#{api_version}/"
         | 
| 25 | 
            +
                  self.user_agent = "YahooShopping Ruby Client/#{Ebisu::VERSION}"
         | 
| 26 | 
            +
                  self.appid = nil
         | 
| 27 | 
            +
                  self.proxy = nil
         | 
| 28 | 
            +
                  self.logger = nil
         | 
| 29 | 
            +
                  self.timeout = 10
         | 
| 30 | 
            +
                  self.open_timeout = 5
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
              Configuration.reset
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              class Client
         | 
| 36 | 
            +
                include Ebisu::Faraday::Connection
         | 
| 37 | 
            +
                include Ebisu::Faraday::Request
         | 
| 38 | 
            +
                include Ebisu::Apis
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                Configuration::ATTRIBUTES.each do |a|
         | 
| 41 | 
            +
                  attr_accessor a
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                def initialize(options = {})
         | 
| 45 | 
            +
                  Configuration::ATTRIBUTES.each do |key|
         | 
| 46 | 
            +
                    send("#{key}=", options[key] || Configuration.send(key))
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
                  @logger ||= Configuration.logger || ::Logger.new(STDOUT)
         | 
| 49 | 
            +
                  @appid ||= Configuration.appid
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                class << self
         | 
| 53 | 
            +
                  def configure
         | 
| 54 | 
            +
                    block_given? ? yield(Configuration) : Configuration
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              module Faraday
         | 
| 3 | 
            +
                module Connection
         | 
| 4 | 
            +
                  private
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  def connection
         | 
| 7 | 
            +
                    options = {
         | 
| 8 | 
            +
                        headers: { 'Accept' => 'application/xml' }
         | 
| 9 | 
            +
                    }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    options[:headers]['User-Agent'] = user_agent if user_agent
         | 
| 12 | 
            +
                    options[:proxy] = proxy if proxy
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    request_options = {}
         | 
| 15 | 
            +
                    request_options[:timeout] = timeout if timeout
         | 
| 16 | 
            +
                    request_options[:open_timeout] = open_timeout if open_timeout
         | 
| 17 | 
            +
                    options[:request] = request_options if request_options.any?
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    ::Faraday::Connection.new(endpoint, options) do |connection|
         | 
| 20 | 
            +
                      connection.use ::Faraday::Request::UrlEncoded
         | 
| 21 | 
            +
                      connection.use ::Faraday::Response::RaiseError
         | 
| 22 | 
            +
                      connection.use ::FaradayMiddleware::ParseXml
         | 
| 23 | 
            +
                      require 'logger'
         | 
| 24 | 
            +
                      connection.response :logger, logger if logger
         | 
| 25 | 
            +
                      connection.adapter ::Faraday.default_adapter
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              module Faraday
         | 
| 3 | 
            +
                module Request
         | 
| 4 | 
            +
                  def get(path, options = {})
         | 
| 5 | 
            +
                    request(:get, path, options)
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def post(path, options = {})
         | 
| 9 | 
            +
                    request(:post, path, options)
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def put(path, options = {})
         | 
| 13 | 
            +
                    request(:put, path, options)
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def delete(path, options = {})
         | 
| 17 | 
            +
                    request(:delete, path, options)
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  private
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def request(method, path, options)
         | 
| 23 | 
            +
                    options = options.merge(appid: appid)
         | 
| 24 | 
            +
                    response = connection.send(method) do |request|
         | 
| 25 | 
            +
                      case method
         | 
| 26 | 
            +
                      when :get, :delete
         | 
| 27 | 
            +
                        request.url(path, options)
         | 
| 28 | 
            +
                      when :post, :put
         | 
| 29 | 
            +
                        request.path = path
         | 
| 30 | 
            +
                        request.body = options unless options.empty?
         | 
| 31 | 
            +
                      end
         | 
| 32 | 
            +
                      request.options.merge!(options.delete(:request)) if options.key?(:request)
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
                    response.body
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class Brands
         | 
| 3 | 
            +
                # @!attribute name
         | 
| 4 | 
            +
                #   @return [String]
         | 
| 5 | 
            +
                attr_reader :name
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute path
         | 
| 8 | 
            +
                #   @return [String]
         | 
| 9 | 
            +
                attr_reader :path
         | 
| 10 | 
            +
                def initialize(brands)
         | 
| 11 | 
            +
                  @name = brands.dig('Name')
         | 
| 12 | 
            +
                  @path = brands.dig('Path', 'Brand')
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
             | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class YCategory
         | 
| 3 | 
            +
                IDAndName = Struct.new(:id, :name)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                # @!attribute current
         | 
| 6 | 
            +
                #   @return [IDAndName]
         | 
| 7 | 
            +
                attr_reader :current
         | 
| 8 | 
            +
                def initialize(category)
         | 
| 9 | 
            +
                  @current = IDAndName.new(
         | 
| 10 | 
            +
                      category.dig('Current', 'Id'),
         | 
| 11 | 
            +
                      category.dig('Current', 'Name')
         | 
| 12 | 
            +
                  )
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              class CategoryDetail
         | 
| 17 | 
            +
                # @!attribute id
         | 
| 18 | 
            +
                #   @return [Integer]
         | 
| 19 | 
            +
                attr_reader :id
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                # @!attribute name
         | 
| 22 | 
            +
                #   @return [String]
         | 
| 23 | 
            +
                attr_reader :name
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                # @!attribute parent_id
         | 
| 26 | 
            +
                #   @return [Integer]
         | 
| 27 | 
            +
                attr_reader :parent_id
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                def initialize(data)
         | 
| 30 | 
            +
                  @id = data.dig('Id')
         | 
| 31 | 
            +
                  @name = data.dig('Title', 'Short')
         | 
| 32 | 
            +
                  @parent_id = data.dig('ParentId')
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
| 36 | 
            +
             | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class CategoryIdPath
         | 
| 3 | 
            +
                # @!attribute path
         | 
| 4 | 
            +
                #   @return [Array[String]]
         | 
| 5 | 
            +
                attr_reader :path
         | 
| 6 | 
            +
                def initialize(data)
         | 
| 7 | 
            +
                  category = data['Category']
         | 
| 8 | 
            +
                  @path = case category
         | 
| 9 | 
            +
                          when Array
         | 
| 10 | 
            +
                            category.map { |x| x['Id'] }
         | 
| 11 | 
            +
                          else
         | 
| 12 | 
            +
                            []
         | 
| 13 | 
            +
                          end
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'ebisu/models/category'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Ebisu
         | 
| 6 | 
            +
              class CategorySearchResponse
         | 
| 7 | 
            +
                def initialize(resp)
         | 
| 8 | 
            +
                  @original_response = resp
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def [](key)
         | 
| 12 | 
            +
                  @original_response[key]
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def result_set
         | 
| 16 | 
            +
                  @original_response['ResultSet']
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def current
         | 
| 20 | 
            +
                  Ebisu::CategoryDetail.new(result_set.dig('Result', 'Categories', 'Current'))
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                # @return [Array<Ebisu::CategoryDetail>]
         | 
| 24 | 
            +
                def children
         | 
| 25 | 
            +
                  parent_id = current.id
         | 
| 26 | 
            +
                  children = result_set.dig('Result', 'Categories', 'Children', 'Child')
         | 
| 27 | 
            +
                  if children
         | 
| 28 | 
            +
                    children.map do |child|
         | 
| 29 | 
            +
                      child['ParentId'] = parent_id
         | 
| 30 | 
            +
                      Ebisu::CategoryDetail.new(child)
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
                  else
         | 
| 33 | 
            +
                    []
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            end
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class ExImage
         | 
| 3 | 
            +
                # @!attribute url
         | 
| 4 | 
            +
                #   @return [String]
         | 
| 5 | 
            +
                attr_reader :url
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute width
         | 
| 8 | 
            +
                #   @return [Integer]
         | 
| 9 | 
            +
                attr_reader :width
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                # @!attribute height
         | 
| 12 | 
            +
                #   @return [Integer]
         | 
| 13 | 
            +
                attr_reader :height
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def initialize(image)
         | 
| 16 | 
            +
                  return unless image
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  @url = image.dig('Url')
         | 
| 19 | 
            +
                  @width = image.dig('Width')
         | 
| 20 | 
            +
                  @height = image.dig('Height')
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| 24 | 
            +
             | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class Image
         | 
| 3 | 
            +
                # @!attribute id
         | 
| 4 | 
            +
                #   @return [String]
         | 
| 5 | 
            +
                attr_reader :id
         | 
| 6 | 
            +
                
         | 
| 7 | 
            +
                # @!attribute small
         | 
| 8 | 
            +
                #   @return [String]
         | 
| 9 | 
            +
                attr_reader :small
         | 
| 10 | 
            +
                
         | 
| 11 | 
            +
                # @!attribute medium
         | 
| 12 | 
            +
                #   @return [String]
         | 
| 13 | 
            +
                attr_reader :medium
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def initialize(data)
         | 
| 16 | 
            +
                  @id = data["Id"]
         | 
| 17 | 
            +
                  @small = data["Small"]
         | 
| 18 | 
            +
                  @medium = data["Medium"]
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| 22 | 
            +
             | 
| @@ -0,0 +1,139 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class Item
         | 
| 3 | 
            +
                # @!attribute name
         | 
| 4 | 
            +
                #   @return [String]
         | 
| 5 | 
            +
                attr_reader :name
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute description
         | 
| 8 | 
            +
                #   @return [String]
         | 
| 9 | 
            +
                attr_reader :description
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                # @!attribute headline
         | 
| 12 | 
            +
                #   @return [String]
         | 
| 13 | 
            +
                attr_reader :headline
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                # @!attribute url
         | 
| 16 | 
            +
                #   @return [String]
         | 
| 17 | 
            +
                attr_reader :url
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                # @!attribute [r] availability
         | 
| 20 | 
            +
                #   @return [Ebisu::Item::Availability]
         | 
| 21 | 
            +
                attr_reader :availability
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                # @!attribute code
         | 
| 24 | 
            +
                #   @return [String]
         | 
| 25 | 
            +
                attr_reader :code
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                # @!attribute person_id
         | 
| 28 | 
            +
                #   @return [String]
         | 
| 29 | 
            +
                attr_reader :person_id
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                # @!attribute product_id
         | 
| 32 | 
            +
                #   @return [String]
         | 
| 33 | 
            +
                attr_reader :product_id
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                # @!attribute image
         | 
| 36 | 
            +
                #   @return [Ebisu::Image]
         | 
| 37 | 
            +
                attr_reader :image
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                # @!attribute price
         | 
| 40 | 
            +
                #   @return [Ebisu::Price]
         | 
| 41 | 
            +
                attr_reader :price
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                # @!attribute price_label
         | 
| 44 | 
            +
                #   @return [Ebisu::PriceLabel]
         | 
| 45 | 
            +
                attr_reader :price_label
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                # @!attribute jan_code
         | 
| 48 | 
            +
                #   @return [String]
         | 
| 49 | 
            +
                attr_reader :jan_code
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                # @!attribute model
         | 
| 52 | 
            +
                #   @return [String]
         | 
| 53 | 
            +
                attr_reader :model
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                # @!attribute isbn_code
         | 
| 56 | 
            +
                #   @return [String]
         | 
| 57 | 
            +
                attr_reader :isbn_code
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                # @!attribute release_date
         | 
| 60 | 
            +
                #   @return [String]
         | 
| 61 | 
            +
                attr_reader :release_date
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                # @!attribute ex_image
         | 
| 64 | 
            +
                #   @return [Ebisu::ExImage]
         | 
| 65 | 
            +
                attr_reader :ex_image
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                # @!attribute review
         | 
| 68 | 
            +
                #   @return [Ebisu::Review]
         | 
| 69 | 
            +
                attr_reader :review
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                # @!attribute point
         | 
| 72 | 
            +
                #   @return [Ebisu::Point]
         | 
| 73 | 
            +
                attr_reader :point
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                # @!attribute shipping
         | 
| 76 | 
            +
                #   @return [Ebisu::Shipping]
         | 
| 77 | 
            +
                attr_reader :shipping
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                # @!attribute category
         | 
| 80 | 
            +
                #   @return [Ebisu::YCategory]
         | 
| 81 | 
            +
                attr_reader :category
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                # @!attribute category_id_path
         | 
| 84 | 
            +
                #   @return [Ebisu::CategoryIdPath]
         | 
| 85 | 
            +
                attr_reader :category_id_path
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                # @!attribute brands
         | 
| 88 | 
            +
                #   @return [Ebisu::Brands]
         | 
| 89 | 
            +
                attr_reader :brands
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                # @!attribute store
         | 
| 92 | 
            +
                #   @return [Ebisu::Store]
         | 
| 93 | 
            +
                attr_reader :store
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                class Availability
         | 
| 96 | 
            +
                  def initialize(v)
         | 
| 97 | 
            +
                    case v
         | 
| 98 | 
            +
                    when 'instock'
         | 
| 99 | 
            +
                      @available = true
         | 
| 100 | 
            +
                    when 'outofstock'
         | 
| 101 | 
            +
                      @available = false
         | 
| 102 | 
            +
                    else
         | 
| 103 | 
            +
                      @available = false
         | 
| 104 | 
            +
                    end
         | 
| 105 | 
            +
                  end
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                  # @return [True|False]
         | 
| 108 | 
            +
                  def available?
         | 
| 109 | 
            +
                    @available
         | 
| 110 | 
            +
                  end
         | 
| 111 | 
            +
                end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                def initialize(hit)
         | 
| 114 | 
            +
                  @name = hit.dig('Name')
         | 
| 115 | 
            +
                  @description = hit.dig('Description')
         | 
| 116 | 
            +
                  @headline = hit.dig('Headline')
         | 
| 117 | 
            +
                  @url = hit.dig('Url')
         | 
| 118 | 
            +
                  @availability = Availability.new(hit.dig('Availability'))
         | 
| 119 | 
            +
                  @code = hit.dig('Code')
         | 
| 120 | 
            +
                  @person_id = hit.dig('PersonId')
         | 
| 121 | 
            +
                  @product_id = hit.dig('ProductId')
         | 
| 122 | 
            +
                  @price = Ebisu::Price.new(hit.dig('Price'))
         | 
| 123 | 
            +
                  @price_label = Ebisu::PriceLabel.new(hit.dig('PriceLabel'))
         | 
| 124 | 
            +
                  @jan_code = hit.dig('JanCode')
         | 
| 125 | 
            +
                  @model = hit.dig('Model')
         | 
| 126 | 
            +
                  @isbn_code = hit.dig('IsbnCode')
         | 
| 127 | 
            +
                  @release_date = hit.dig('ReleaseDate')
         | 
| 128 | 
            +
                  @image = Ebisu::Image.new(hit.dig('Image'))
         | 
| 129 | 
            +
                  @ex_image = Ebisu::ExImage.new(hit.dig('ExImage'))
         | 
| 130 | 
            +
                  @review = Ebisu::Review.new(hit.dig('Review'))
         | 
| 131 | 
            +
                  @point = Ebisu::Point.new(hit.dig('Point'))
         | 
| 132 | 
            +
                  @shipping = Ebisu::Shipping.new(hit.dig('Shipping'))
         | 
| 133 | 
            +
                  @category = Ebisu::YCategory.new(hit.dig('Category'))
         | 
| 134 | 
            +
                  @category_id_path = Ebisu::CategoryIdPath.new(hit.dig('CategoryIdPath'))
         | 
| 135 | 
            +
                  @brands = Ebisu::Brands.new(hit.dig('Brands'))
         | 
| 136 | 
            +
                  @store = Ebisu::Store.new(hit.dig('Store'))
         | 
| 137 | 
            +
                end
         | 
| 138 | 
            +
              end
         | 
| 139 | 
            +
            end
         | 
| @@ -0,0 +1,73 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'ebisu/models/brands'
         | 
| 4 | 
            +
            require 'ebisu/models/category'
         | 
| 5 | 
            +
            require 'ebisu/models/category_id_path'
         | 
| 6 | 
            +
            require 'ebisu/models/ex_image'
         | 
| 7 | 
            +
            require 'ebisu/models/image'
         | 
| 8 | 
            +
            require 'ebisu/models/item'
         | 
| 9 | 
            +
            require 'ebisu/models/payment'
         | 
| 10 | 
            +
            require 'ebisu/models/payment_method'
         | 
| 11 | 
            +
            require 'ebisu/models/point'
         | 
| 12 | 
            +
            require 'ebisu/models/price'
         | 
| 13 | 
            +
            require 'ebisu/models/price_label'
         | 
| 14 | 
            +
            require 'ebisu/models/review'
         | 
| 15 | 
            +
            require 'ebisu/models/shipping'
         | 
| 16 | 
            +
            require 'ebisu/models/store'
         | 
| 17 | 
            +
            require 'ebisu/models/store_image'
         | 
| 18 | 
            +
            require 'ebisu/models/store_ratings'
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            module Ebisu
         | 
| 21 | 
            +
              # response wrapper
         | 
| 22 | 
            +
              class ItemSearchResponse
         | 
| 23 | 
            +
                def initialize(resp)
         | 
| 24 | 
            +
                  @original_response = resp
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def [](key)
         | 
| 28 | 
            +
                  @original_response[key]
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def result_set
         | 
| 32 | 
            +
                  @original_response['ResultSet']
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                # @return [Integer] 検索総HIT数
         | 
| 36 | 
            +
                def total_results_available
         | 
| 37 | 
            +
                  result_set['totalResultsAvailable'].to_i
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                # @return [Integer] 返された値の個数
         | 
| 41 | 
            +
                def total_results_returned
         | 
| 42 | 
            +
                  result_set['totalResultsReturned'].to_i
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                # @return [Integer] 最初のデータが何個目にあたるか(最初=1)
         | 
| 46 | 
            +
                def first_result_position
         | 
| 47 | 
            +
                  result_set['firstResultPosition'].to_i
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                # @return [Array<Ebisu::Item>] 検索結果のアイテムのリスト
         | 
| 51 | 
            +
                def hits
         | 
| 52 | 
            +
                  result_hit = result_set['Result']['Hit']
         | 
| 53 | 
            +
                  case result_hit
         | 
| 54 | 
            +
                  when Array
         | 
| 55 | 
            +
                    result_hit.map{|hit| Ebisu::Item.new(hit)}
         | 
| 56 | 
            +
                  when Hash
         | 
| 57 | 
            +
                    # 結果がないとき
         | 
| 58 | 
            +
                    if result_hit['index'].to_i == 0
         | 
| 59 | 
            +
                      [].map{|hit| Ebisu::Item.new(hit)}
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                    # 結果が1件だけのとき
         | 
| 62 | 
            +
                    else
         | 
| 63 | 
            +
                      [result_hit].map{|hit| Ebisu::Item.new(hit)}
         | 
| 64 | 
            +
                    end
         | 
| 65 | 
            +
                  when NilClass
         | 
| 66 | 
            +
                    [].map{|hit| Ebisu::Item.new(hit)}
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
                end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            end
         | 
| 73 | 
            +
             | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class Payment
         | 
| 3 | 
            +
                # @!attribute method
         | 
| 4 | 
            +
                #   @return [Array[PaymentMethod]]
         | 
| 5 | 
            +
                attr_reader :method
         | 
| 6 | 
            +
                def initialize(data)
         | 
| 7 | 
            +
                  @method = case data['Method']
         | 
| 8 | 
            +
                            when Array
         | 
| 9 | 
            +
                              data['Method'].map { |x| PaymentMethod.new(x) }
         | 
| 10 | 
            +
                            when NilClass
         | 
| 11 | 
            +
                              []
         | 
| 12 | 
            +
                            else
         | 
| 13 | 
            +
                              [PaymentMethod.new(data)]
         | 
| 14 | 
            +
                            end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class PaymentMethod
         | 
| 3 | 
            +
                # @!attribute code
         | 
| 4 | 
            +
                #   @return [Integer]
         | 
| 5 | 
            +
                attr_reader :code
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute name
         | 
| 8 | 
            +
                #   @return [String]
         | 
| 9 | 
            +
                attr_reader :name
         | 
| 10 | 
            +
                def initialize(data)
         | 
| 11 | 
            +
                  @code = data.dig('Code').to_i
         | 
| 12 | 
            +
                  @name = data.dig('Name')
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class Point
         | 
| 3 | 
            +
                # @!attribute amount
         | 
| 4 | 
            +
                #   @return [Integer]
         | 
| 5 | 
            +
                attr_reader :amount
         | 
| 6 | 
            +
                # @!attribute times
         | 
| 7 | 
            +
                #   @return [Integer]
         | 
| 8 | 
            +
                attr_reader :times
         | 
| 9 | 
            +
                # @!attribute premium_amount
         | 
| 10 | 
            +
                #   @return [Integer]
         | 
| 11 | 
            +
                attr_reader :premium_amount
         | 
| 12 | 
            +
                # @!attribute premium_times
         | 
| 13 | 
            +
                #   @return [Integer]
         | 
| 14 | 
            +
                attr_reader :premium_times
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def initialize(point)
         | 
| 17 | 
            +
                  @amount = point.dig('Amount').to_i
         | 
| 18 | 
            +
                  @times = point.dig('Times').to_i
         | 
| 19 | 
            +
                  @premium_amount = point.dig('PremiumAmount').to_i
         | 
| 20 | 
            +
                  @premium_times = point.dig('PremiumTimes').to_i
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class Price
         | 
| 3 | 
            +
                # @!attribute value
         | 
| 4 | 
            +
                #   @return [Integer]
         | 
| 5 | 
            +
                attr_reader :value
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute currency
         | 
| 8 | 
            +
                #   @return [String]
         | 
| 9 | 
            +
                attr_reader :currency
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def initialize(price)
         | 
| 12 | 
            +
                  case price
         | 
| 13 | 
            +
                  when Hash
         | 
| 14 | 
            +
                    @value = Integer(price['__content__'])
         | 
| 15 | 
            +
                    @currency = price['currency']
         | 
| 16 | 
            +
                  when String
         | 
| 17 | 
            +
                    @value = Integer(price)
         | 
| 18 | 
            +
                    @currency = 'JPY'
         | 
| 19 | 
            +
                  when Integer
         | 
| 20 | 
            +
                    @value = price
         | 
| 21 | 
            +
                    @currency = 'JPY'
         | 
| 22 | 
            +
                  else
         | 
| 23 | 
            +
                    raise "assertion failed. invalid price response value: #{price}"
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class PriceLabel
         | 
| 3 | 
            +
                # @!attribute is_inclusive
         | 
| 4 | 
            +
                #   @return [True|False]
         | 
| 5 | 
            +
                attr_reader :is_inclusive
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute fixed_price
         | 
| 8 | 
            +
                #   @return [Integer|Nil]
         | 
| 9 | 
            +
                attr_reader :fixed_price
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                # @!attribute default_price
         | 
| 12 | 
            +
                #   @return [Integer|Nil]
         | 
| 13 | 
            +
                attr_reader :default_price
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                # @!attribute sale_price
         | 
| 16 | 
            +
                #   @return [Integer|Nil]
         | 
| 17 | 
            +
                attr_reader :sale_price
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                # @!attribute base_fixed_price
         | 
| 20 | 
            +
                #   @return [Integer|Nil]
         | 
| 21 | 
            +
                attr_reader :base_fixed_price
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                # @!attribute base_sale_price
         | 
| 24 | 
            +
                #   @return [Integer|Nil]
         | 
| 25 | 
            +
                attr_reader :base_sale_price
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                # @!attribute period_start
         | 
| 28 | 
            +
                #   @return [String]
         | 
| 29 | 
            +
                attr_reader :period_start
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                # @!attribute period_end
         | 
| 32 | 
            +
                #   @return [String]
         | 
| 33 | 
            +
                attr_reader :period_end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                def initialize(price_label)
         | 
| 36 | 
            +
                  @is_inclusive = price_label['taxIncluded'] == 'true'
         | 
| 37 | 
            +
                  @fixed_price = price_label['FixedPrice']
         | 
| 38 | 
            +
                  @default_price = price_label['DefaultPrice']
         | 
| 39 | 
            +
                  @sale_price = price_label['SalePrice']
         | 
| 40 | 
            +
                  @base_fixed_price = price_label['BaseFixedPrice']
         | 
| 41 | 
            +
                  @base_sale_price = price_label['BaseSalePrice']
         | 
| 42 | 
            +
                  @period_start = price_label['PeriodStart']
         | 
| 43 | 
            +
                  @period_end = price_label['PeriodEnd']
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
            end
         | 
| 47 | 
            +
             | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class Review
         | 
| 3 | 
            +
                # @!attribute rate
         | 
| 4 | 
            +
                #   @return [Float]
         | 
| 5 | 
            +
                attr_reader :rate
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute count
         | 
| 8 | 
            +
                #   @return [Integer]
         | 
| 9 | 
            +
                attr_reader :count
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                # @!attribute url
         | 
| 12 | 
            +
                #   @return [String]
         | 
| 13 | 
            +
                attr_reader :url
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def initialize(review)
         | 
| 16 | 
            +
                  @rate = review.dig('Rate').to_f
         | 
| 17 | 
            +
                  @count = review.dig('Count').to_i
         | 
| 18 | 
            +
                  @url = review.dig('Url')
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class Shipping
         | 
| 3 | 
            +
                # @!attribute code
         | 
| 4 | 
            +
                #   @return [String]
         | 
| 5 | 
            +
                attr_reader :code
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute name
         | 
| 8 | 
            +
                #   @return [String]
         | 
| 9 | 
            +
                attr_reader :name
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def initialize(shipping)
         | 
| 12 | 
            +
                  @code = shipping.dig('Code')
         | 
| 13 | 
            +
                  @name = shipping.dig('Name')
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| 17 | 
            +
             | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class Store
         | 
| 3 | 
            +
                # @!attribute name
         | 
| 4 | 
            +
                #   @return [String]
         | 
| 5 | 
            +
                attr_reader :name
         | 
| 6 | 
            +
                
         | 
| 7 | 
            +
                # @!attribute payment
         | 
| 8 | 
            +
                #   @return [Ebisu::Payment]
         | 
| 9 | 
            +
                attr_reader :payment
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                # @!attribute is_best_store
         | 
| 12 | 
            +
                #   @return [True|False]
         | 
| 13 | 
            +
                attr_reader :is_best_store
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                # @!attribute ratings
         | 
| 16 | 
            +
                #   @return [Ebisu::StoreRatings]
         | 
| 17 | 
            +
                attr_reader :ratings
         | 
| 18 | 
            +
                def initialize(data)
         | 
| 19 | 
            +
                  @name = data.dig('Name')
         | 
| 20 | 
            +
                  @payment = Ebisu::Payment.new(data.dig('Payment'))
         | 
| 21 | 
            +
                  @is_best_store = data.dig('IsBestStore') == 'true'
         | 
| 22 | 
            +
                  @ratings = Ebisu::StoreRatings.new(data.dig('Ratings'))
         | 
| 23 | 
            +
                  @image = Ebisu::StoreImage.new(data.dig('Image'))
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class StoreImage
         | 
| 3 | 
            +
                # @!attribute id
         | 
| 4 | 
            +
                #   @return [String]
         | 
| 5 | 
            +
                attr_reader :id
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute medium
         | 
| 8 | 
            +
                #   @return [String]
         | 
| 9 | 
            +
                attr_reader :medium
         | 
| 10 | 
            +
                def initialize(data)
         | 
| 11 | 
            +
                  @id = data.dig('Id')
         | 
| 12 | 
            +
                  @medium = data.dig('Medium')
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            module Ebisu
         | 
| 2 | 
            +
              class StoreRatings
         | 
| 3 | 
            +
                # @!attribute rate
         | 
| 4 | 
            +
                #   @return [Float]
         | 
| 5 | 
            +
                attr_reader :rate
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                # @!attribute count
         | 
| 8 | 
            +
                #   @return [Integer]
         | 
| 9 | 
            +
                attr_reader :count
         | 
| 10 | 
            +
                def initialize(data)
         | 
| 11 | 
            +
                  @rate = data.dig('Rate').to_f
         | 
| 12 | 
            +
                  @count = data.dig('Count').to_i
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,187 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: ebisu-rb
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.1.0
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - totem3
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2019-10-22 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: faraday
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - ">="
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '0'
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - ">="
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '0'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: faraday_middleware
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ">="
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - ">="
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: multi_xml
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - ">="
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '0'
         | 
| 48 | 
            +
              type: :runtime
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ">="
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: nokogiri
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - ">="
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0'
         | 
| 62 | 
            +
              type: :runtime
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - ">="
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '0'
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: mysql2
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - ">="
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: '0'
         | 
| 76 | 
            +
              type: :runtime
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - ">="
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: '0'
         | 
| 83 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            +
              name: bundler
         | 
| 85 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            +
                requirements:
         | 
| 87 | 
            +
                - - "~>"
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: '1.17'
         | 
| 90 | 
            +
              type: :development
         | 
| 91 | 
            +
              prerelease: false
         | 
| 92 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            +
                requirements:
         | 
| 94 | 
            +
                - - "~>"
         | 
| 95 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            +
                    version: '1.17'
         | 
| 97 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            +
              name: rake
         | 
| 99 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 | 
            +
                requirements:
         | 
| 101 | 
            +
                - - "~>"
         | 
| 102 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            +
                    version: '10.0'
         | 
| 104 | 
            +
              type: :development
         | 
| 105 | 
            +
              prerelease: false
         | 
| 106 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 | 
            +
                requirements:
         | 
| 108 | 
            +
                - - "~>"
         | 
| 109 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            +
                    version: '10.0'
         | 
| 111 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 112 | 
            +
              name: pry
         | 
| 113 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 | 
            +
                requirements:
         | 
| 115 | 
            +
                - - ">="
         | 
| 116 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            +
                    version: '0'
         | 
| 118 | 
            +
              type: :development
         | 
| 119 | 
            +
              prerelease: false
         | 
| 120 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 | 
            +
                requirements:
         | 
| 122 | 
            +
                - - ">="
         | 
| 123 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            +
                    version: '0'
         | 
| 125 | 
            +
            description: Ebisu is the yahoo item search api cilent.
         | 
| 126 | 
            +
            email:
         | 
| 127 | 
            +
            - ganzheit.com@gmail.com
         | 
| 128 | 
            +
            executables: []
         | 
| 129 | 
            +
            extensions: []
         | 
| 130 | 
            +
            extra_rdoc_files: []
         | 
| 131 | 
            +
            files:
         | 
| 132 | 
            +
            - ".gitignore"
         | 
| 133 | 
            +
            - Gemfile
         | 
| 134 | 
            +
            - README.md
         | 
| 135 | 
            +
            - Rakefile
         | 
| 136 | 
            +
            - bin/console
         | 
| 137 | 
            +
            - bin/setup
         | 
| 138 | 
            +
            - ebisu.gemspec
         | 
| 139 | 
            +
            - lib/ebisu.rb
         | 
| 140 | 
            +
            - lib/ebisu/apis.rb
         | 
| 141 | 
            +
            - lib/ebisu/apis/category_search.rb
         | 
| 142 | 
            +
            - lib/ebisu/apis/item_search.rb
         | 
| 143 | 
            +
            - lib/ebisu/client.rb
         | 
| 144 | 
            +
            - lib/ebisu/faraday/connection.rb
         | 
| 145 | 
            +
            - lib/ebisu/faraday/request.rb
         | 
| 146 | 
            +
            - lib/ebisu/models/brands.rb
         | 
| 147 | 
            +
            - lib/ebisu/models/category.rb
         | 
| 148 | 
            +
            - lib/ebisu/models/category_id_path.rb
         | 
| 149 | 
            +
            - lib/ebisu/models/category_search_response.rb
         | 
| 150 | 
            +
            - lib/ebisu/models/ex_image.rb
         | 
| 151 | 
            +
            - lib/ebisu/models/image.rb
         | 
| 152 | 
            +
            - lib/ebisu/models/item.rb
         | 
| 153 | 
            +
            - lib/ebisu/models/item_search_response.rb
         | 
| 154 | 
            +
            - lib/ebisu/models/payment.rb
         | 
| 155 | 
            +
            - lib/ebisu/models/payment_method.rb
         | 
| 156 | 
            +
            - lib/ebisu/models/point.rb
         | 
| 157 | 
            +
            - lib/ebisu/models/price.rb
         | 
| 158 | 
            +
            - lib/ebisu/models/price_label.rb
         | 
| 159 | 
            +
            - lib/ebisu/models/review.rb
         | 
| 160 | 
            +
            - lib/ebisu/models/shipping.rb
         | 
| 161 | 
            +
            - lib/ebisu/models/store.rb
         | 
| 162 | 
            +
            - lib/ebisu/models/store_image.rb
         | 
| 163 | 
            +
            - lib/ebisu/models/store_ratings.rb
         | 
| 164 | 
            +
            - lib/ebisu/version.rb
         | 
| 165 | 
            +
            homepage: 
         | 
| 166 | 
            +
            licenses: []
         | 
| 167 | 
            +
            metadata: {}
         | 
| 168 | 
            +
            post_install_message: 
         | 
| 169 | 
            +
            rdoc_options: []
         | 
| 170 | 
            +
            require_paths:
         | 
| 171 | 
            +
            - lib
         | 
| 172 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 173 | 
            +
              requirements:
         | 
| 174 | 
            +
              - - ">="
         | 
| 175 | 
            +
                - !ruby/object:Gem::Version
         | 
| 176 | 
            +
                  version: '0'
         | 
| 177 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 178 | 
            +
              requirements:
         | 
| 179 | 
            +
              - - ">="
         | 
| 180 | 
            +
                - !ruby/object:Gem::Version
         | 
| 181 | 
            +
                  version: '0'
         | 
| 182 | 
            +
            requirements: []
         | 
| 183 | 
            +
            rubygems_version: 3.0.3
         | 
| 184 | 
            +
            signing_key: 
         | 
| 185 | 
            +
            specification_version: 4
         | 
| 186 | 
            +
            summary: yahoo api client
         | 
| 187 | 
            +
            test_files: []
         |