module Lazada::API::Product

Public Instance Methods

create_product(params) click to toggle source
# File lib/lazada_dino/api/product.rb, line 14
def create_product(params)
  url = request_url('CreateProduct')

  params = { 'Product' => product_params(params) }

  response = self.class.post(url, body: params.to_xml(root: 'Request', skip_types: true, dasherize: false))

  Lazada::API::Response.new(response)
end
get_products(params = {}) click to toggle source
# File lib/lazada_dino/api/product.rb, line 4
def get_products(params = {})
  converted_params = get_product_params(params)
  url = request_url('GetProducts', converted_params)
  response = self.class.get(url)

  process_response_errors! response

  response['SuccessResponse']['Body']['Products']
end
get_qc_status() click to toggle source
# File lib/lazada_dino/api/product.rb, line 53
def get_qc_status
  url = request_url('GetQcStatus')

  response = self.class.get(url)

  process_response_errors! response

  response['SuccessResponse']['Body']['Status']
end
remove_product(seller_sku) click to toggle source
# File lib/lazada_dino/api/product.rb, line 35
def remove_product(seller_sku)
  url = request_url('RemoveProduct')

  params = {
    'Product' => {
      'Skus' => {
        'Sku' => {
          'SellerSku' => seller_sku
        }
      }
    }
  }

  response = self.class.post(url, body: params.to_xml(root: 'Request', skip_types: true))

  Lazada::API::Response.new(response)
end
update_product(params) click to toggle source
# File lib/lazada_dino/api/product.rb, line 24
def update_product(params)
  url = request_url('UpdateProduct')

  params = { 'Product' => product_params(params) }
  response = self.class.post(url, body: params.to_xml(root: 'Request', skip_types: true, dasherize: false))

  process_response_errors! response

  Lazada::API::Response.new(response)
end

Private Instance Methods

get_product_params(object) click to toggle source
# File lib/lazada_dino/api/product.rb, line 65
def get_product_params(object)
  params = {}
  params["CreatedAfter"] = object[:created_after] if object[:created_after].present?
  params["CreatedBefore"] = object[:created_before] if object[:created_before].present?
  params["UpdatedAfter"] = object[:updated_after] if object[:updated_after].present?
  params["UpdatedBefore"] = object[:updated_before] if object[:updated_before].present?
  params["Search"] = object[:search] if object[:search].present?
  object[:filter] = "all" unless object[:filter].present?
  params["Filter"] = object[:filter] if object[:filter].present?
  params["Limit"] = object[:limit] if object[:limit].present?
  params["Options"] = object[:options] if object[:options].present?
  params["Offset"] = object[:offset] if object[:offset].present?
  params["SkuSellerList"] = object[:sku_seller_list] if object[:sku_seller_list].present?
  params
end
product_params(object) click to toggle source
# File lib/lazada_dino/api/product.rb, line 81
def product_params(object)
  params = {}
  params['PrimaryCategory'] = object.delete("primary_category")
  params['SPUId'] = ''
  params['AssociatedSku'] = ''

  params['Skus'] = {}
  params['Skus'].compare_by_identity

  # start variant START
  object["variants"].each do |variant|
    variant_params = {}
    
    variant.delete_if { |k, v| v.empty? || v.nil? }

    variant_params['Images'] = {}
    variant_params['Images'].compare_by_identity
    
    if variant['Images'].present? 
      variant['Images'].each do |image|
        url = migrate_image(image)
        variant_params['Images']['Image'.dup] = url
      end
    end

    variant.delete("Images")

    variant.merge!(variant_params)

    params['Skus']['Sku'.dup] = variant
  end

  object.delete("variants")

  params['Attributes'] = {}

  params['Attributes'] = {
    'name' => object.delete("title") || object.delete("name") ,
    'name_ms' => object.delete("name_ms") || object.delete("name") || object.delete("title"),
    'description' => object.delete("description"),
    'short_description' => object.delete("short_description") || object.delete("highlights"),
    'brand' => object.delete("brand") || 'Unbranded',
    'warranty_type' => object.delete("warranty_type") || 'No Warranty',
    'model' => object.delete("model"),
    'package_content' => object.delete("package_content") || object.delete("box_content")
  }

  params['Attributes'].merge!(object)
  params['Attributes'].delete("2_in_1_type") 
  params
end