Class: ItemBuilder::Modes::Quantity::ZilingoService
- Inherits:
-
Base
- Object
- Base
- ItemBuilder::Modes::Quantity::ZilingoService
show all
- Defined in:
- lib/item_builder/modes/quantity/zilingo_service.rb
Instance Attribute Summary
Attributes inherited from Base
#available_quantity, #listing, #reserved_stock
Instance Method Summary
collapse
Methods inherited from Base
#initialize
Instance Method Details
#credential ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/item_builder/modes/quantity/zilingo_service.rb', line 28
def credential
return @credential if @credential
account_id = listing.profile_channel_association_id
host = ENV['CREDENTIAL_URL'] || raise('credential url is not set')
url = "#{host}/credential?account_id=#{account_id}"
@credential = rest_client(method: :get, url: url)
end
|
#data(item_id) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/item_builder/modes/quantity/zilingo_service.rb', line 21
def data(item_id)
{
"credential": JSON.parse(credential)['credential'],
"data": { "item_id": item_id }
}.to_json
end
|
17
18
19
|
# File 'lib/item_builder/modes/quantity/zilingo_service.rb', line 17
def
{ content_type: :json, accept: :json }
end
|
#local_quantity ⇒ Object
12
13
14
15
|
# File 'lib/item_builder/modes/quantity/zilingo_service.rb', line 12
def local_quantity
quantities = sku_quantities(listing.local_item_id)
quantities[listing.local_id]
end
|
8
9
10
|
# File 'lib/item_builder/modes/quantity/zilingo_service.rb', line 8
def perform
available_quantity - local_quantity.to_i
end
|
#response_process(resp) ⇒ Object
50
51
52
53
54
55
56
|
# File 'lib/item_builder/modes/quantity/zilingo_service.rb', line 50
def response_process(resp)
hash = Hash.new
resp['zilingoSKUQuantities'].each do |sku|
hash[sku['zilingoSKUId']] = sku['quantity'] + sku['frozenQuantity']
end
hash
end
|
#rest_client(params, rescued_codes = 200) ⇒ Object
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/item_builder/modes/quantity/zilingo_service.rb', line 58
def rest_client(params, rescued_codes = 200)
RestClient::Request.execute(params.merge(timeout: 3)) do |response|
code = response.code
unless Array.wrap(rescued_codes).include?(code)
raise "Response Code is #{code}"
end
response
end
end
|
#sku_quantities(item_id) ⇒ Object
42
43
44
45
46
47
48
|
# File 'lib/item_builder/modes/quantity/zilingo_service.rb', line 42
def sku_quantities(item_id)
args = {
method: :post, url: url, payload: data(item_id), headers:
}
resp = JSON.parse(rest_client(args, [200, 500, 406]))
response_process(resp)
end
|
#url ⇒ Object
37
38
39
40
|
# File 'lib/item_builder/modes/quantity/zilingo_service.rb', line 37
def url
url = ENV['API_GATEWAY_URL'] || raise('api gateway is not set')
url + "/zilingo/item_quantities"
end
|