def query(options={})
      options = {brand_list: [], search_properties: [], keyword: '', max_price:'', min_price: '', nvalue: '', product_type: [],
                 page_number: 1, node_id: -1, category_id: -1, brand_id: -1, store_id: -1, store_type: -1, sub_category_id: -1}.merge(options)
      request = {
          'BrandList'        => options[:brand_list],
          'SearchProperties' => options[:search_properties],
          'Keyword'          => options[:keyword],
          'MaxPrice'         => options[:max_price],
          'MinPrice'         => options[:min_price],
          'NValue'           => options[:nvalue],
          'ProductType'      => options[:product_type],
          'PageNumber'       => options[:page_number],
          'NodeId'           => options[:node_id],
          'CategoryId'       => options[:category_id],
          'BrandId'          => options[:brand_id],
          'StoreId'          => options[:store_id],
          'StoreType'        => options[:store_type],
          'SubCategoryId'    => options[:sub_category_id]
      }

      JSON.parse(api_post('Search.egg', 'Query', request).body, {quirks_mode: true})
    end
def query(options={})
      options = {brand_list: [], search_properties: [], keyword: '', max_price:'', min_price: '', nvalue: '', product_type: [],
                 page_number: 1, node_id: -1, category_id: -1, brand_id: -1, store_id: -1, store_type: -1, sub_category_id: -1}.merge(options)
      request = {
          'BrandList'        => options[:brand_list],
          'SearchProperties' => options[:search_properties],
          'Keyword'          => options[:keyword],
          'MaxPrice'         => options[:max_price],
          'MinPrice'         => options[:min_price],
          'NValue'           => options[:nvalue],
          'ProductType'      => options[:product_type],
          'PageNumber'       => options[:page_number],
          'NodeId'           => options[:node_id],
          'CategoryId'       => options[:category_id],
          'BrandId'          => options[:brand_id],
          'StoreId'          => options[:store_id],
          'StoreType'        => options[:store_type],
          'SubCategoryId'    => options[:sub_category_id]
      }

      JSON.parse(api_post('Search.egg', 'Query', request).body, {quirks_mode: true})
    end
retrieves a single page of products given a query specified by an options hash. See options below.

 @param [Array] brand_list
 @param [Array] search_properties
 @param [String] keyword
 @param [String] max_price
 @param [String] min_price
 @param [String] nvalue
 @param [Array] product_type
 @param [Integer] page_number
 @param [Integer] node_id
 @param [Integer] category_id
 @param [Integer] brand_id
 @param [Integer] store_id
 @param [Integer] store_type
 @param [Integer] sub_category_id