Sha256: d33ed956117e1c63fc1f165a16fc80843847c5afc62bee28b43f00c3b4cc4e80

Contents?: true

Size: 1.24 KB

Versions: 5

Compression:

Stored size: 1.24 KB

Contents

module Awis
  module API
    class CategoryBrowse < Base
      DEFAULT_RESPONSE_GROUP = %w(categories related_categories language_categories letter_bars).freeze

      def load_request_uri(arguments = {})
        validation_arguments!(arguments)

        super(params)
      end

      private
      def before_validation_arguments(arguments)
        raise ArgumentError, "Invalid arguments. should be like { path: 'Top/Arts' }" unless arguments.is_a?(Hash)
        raise ArgumentError, "Invalid arguments. the path must be configured." unless arguments.has_key?(:path)
      end

      def validation_arguments!(arguments)
        before_validation_arguments(arguments)

        @arguments = arguments
        @arguments[:response_group] = Array(arguments.fetch(:response_group, DEFAULT_RESPONSE_GROUP))
        @arguments[:descriptions]   = arguments.fetch(:descriptions, true)
      end

      def params
        {
          "Action"        => action_name,
          "ResponseGroup" => response_groups,
          "Path"          => arguments[:path],
          "Descriptions"  => request_description_params
        }
      end

      def response_groups
        arguments[:response_group].sort.map { |group| camelize(group) }.join(",")
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
awis-sdk-ruby-1.0.0 lib/awis/api/category_browse.rb
awis-sdk-ruby-0.1.1 lib/awis/api/category_browse.rb
awis-sdk-ruby-0.1.0 lib/awis/api/category_browse.rb
awis-sdk-ruby-0.0.9 lib/awis/api/category_browse.rb
awis-sdk-ruby-0.0.8 lib/awis/api/category_browse.rb