Sha256: abb41154bb7b30087950b4ec0c88f2014fbaf8a090869d684cac5e91b552d4c4

Contents?: true

Size: 1.14 KB

Versions: 5

Compression:

Stored size: 1.14 KB

Contents

module SolidusBling
  class Product < ApplicationRecord
    belongs_to :account

    def self.update bling_account
      bling_api = SolidusBling::Api.new(bling_account)
      skus = ::Spree::Variant.pluck(:sku)
      hash_products = {}
      products = skus.map do |sku|
        begin 
          attempts ||= 1
          req = Typhoeus.get("#{bling_api.account.api_base_url}/produtos?codigo=#{sku}", headers: bling_api.headers)
          res_json = JSON.parse(req.body)
          # p "#{sku} => #{res_json}"
          next if res_json["data"] == []
          product = res_json["data"].first
          hash_products[sku] = product["id"]
          { 
            account_id: bling_api.account.id,
            sku: sku,
            external_id: product["id"].to_s,
            name: product["nome"]
          }
        rescue => e
          hash_products[sku] = res_json
          # p "#{sku} => #{res_json} => #{e}"
          sleep 1
          retry if (attempts += 1) < 5
        end
      end.compact.uniq
      SolidusBling::Product.upsert_all(products, unique_by: :sku)
      ::Spree::Bus.publish :bling_products_updated, products: hash_products
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
solidus_bling-2.0.7 app/models/solidus_bling/product.rb
solidus_bling-2.0.6 app/models/solidus_bling/product.rb
solidus_bling-2.0.5 app/models/solidus_bling/product.rb
solidus_bling-2.0.4 app/models/solidus_bling/product.rb
solidus_bling-2.0.3 app/models/solidus_bling/product.rb