item_builder 0.1.28 → 0.1.29

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 637545e1e40b3f319760f991d19621b9a0e68b48a16c9219ce4103995070727f
4
- data.tar.gz: 9128cf0c849fc64ac5f60393c173a7c95d68dc169a75acae8c08b22bad451428
3
+ metadata.gz: 99df6cad1a31d94df70b1deb5aa40b57d48eb6fab7a27c36a2843a0d81710aa9
4
+ data.tar.gz: e07088f915c42ce126e8ce943113d272312c65dd1961b703b9210ef4b6459da8
5
5
  SHA512:
6
- metadata.gz: 1b854582f9f8bd9f31eee880d643dc1f4884529740fcbf147c892ab5e08cecc07fe969c7f8f0926d712a8934c8390a1a15ee05681ad211be3873ddd7b1a0ca30
7
- data.tar.gz: 7bf2f7c0711a76a18ca01bb6321a0f7d82d5a81d37cf6f633aed36af3728da47de0e8093e4f1571e66ba99e4d3deb47ac6b57045cc8251e686e9a6226e6afdd3
6
+ metadata.gz: 996034fe165910db1cc1d7431492329383068effe64f8f014a98b333b1b6a94c8a166b19a9a113c84afe2eb4d7a95c4992a93e5104a3f3f59efb82b322619e4e
7
+ data.tar.gz: 20ffc61ea320c64af957763e8c69bc6aea2aebe0c3b62b99f38029d8d5f9df904b210125b0430965e0de4d9051ad5f2b78d7e67107d10590970a3709b8f0d74b
data/lib/item_builder.rb CHANGED
@@ -128,6 +128,6 @@ class ItemBuilder
128
128
  def reserved_stocks
129
129
  @reserved_stocks ||= JSON.parse(RestClient.get(
130
130
  "#{order_host}?#{reserved_params}"
131
- ).body) if [3,13].include?(listings[0].channel_id)
131
+ ).body) if [3,13,18].include?(listings[0].channel_id)
132
132
  end
133
133
  end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'item_builder/modes/quantity/base'
4
+ class ItemBuilder
5
+ module Modes
6
+ module Quantity
7
+ class ZilingoService < Base
8
+ def perform
9
+ available_quantity - local_quantity.to_i
10
+ end
11
+
12
+ def local_quantity
13
+ quantities = sku_quantities(listing.local_item_id)
14
+ quantities[listing.local_id]
15
+ end
16
+
17
+ def headers
18
+ { content_type: :json, accept: :json }
19
+ end
20
+
21
+ def data(item_id)
22
+ {
23
+ "credential": JSON.parse(credential)['credential'],
24
+ "data": { "item_id": item_id }
25
+ }.to_json
26
+ end
27
+
28
+ def credential
29
+ return @credential if @credential
30
+
31
+ account_id = listing.profile_channel_association_id
32
+ host = ENV['CREDENTIAL_URL'] || raise('credential url is not set')
33
+ url = "#{host}/credential?account_id=#{account_id}"
34
+ @credential = rest_client(method: :get, url: url)
35
+ end
36
+
37
+ def url
38
+ url = ENV['API_GATEWAY_URL'] || raise('api gateway is not set')
39
+ url + "/zilingo/item_quantities"
40
+ end
41
+
42
+ def sku_quantities(item_id)
43
+ args = {
44
+ method: :post, url: url, payload: data(item_id), headers: headers
45
+ }
46
+ resp = JSON.parse(rest_client(args, [200, 500, 406]))
47
+ response_process(resp)
48
+ end
49
+
50
+ def response_process(resp)
51
+ hash = Hash.new
52
+ resp['zilingoSKUQuantities'].each do |sku|
53
+ hash[sku['zilingoSKUId']] = sku['quantity'] + sku['frozenQuantity']
54
+ end
55
+ hash
56
+ end
57
+
58
+ def rest_client(params, rescued_codes = 200)
59
+ RestClient::Request.execute(params.merge(timeout: 3)) do |response|
60
+ code = response.code
61
+ unless Array.wrap(rescued_codes).include?(code)
62
+ raise "Response Code is #{code}"
63
+ end
64
+
65
+ response
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -6,6 +6,7 @@ require 'item_builder/get_quantity_service'
6
6
  require 'item_builder/modes/quantity/base'
7
7
  require 'item_builder/modes/quantity/lazada_service'
8
8
  require 'item_builder/modes/quantity/zalora_service'
9
+ require 'item_builder/modes/quantity/zilingo_service'
9
10
  class ItemBuilder
10
11
  module Modes
11
12
  class QuantityService
@@ -14,6 +15,7 @@ class ItemBuilder
14
15
  QUANTITY_CHANNEL = {}.tap do |hash|
15
16
  hash[3] = :Lazada
16
17
  hash[13] = :Zalora
18
+ hash[18] = :Zilingo
17
19
  end.freeze
18
20
 
19
21
  def perform
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ItemBuilder
4
- VERSION = '0.1.28'
4
+ VERSION = '0.1.29'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: item_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.28
4
+ version: 0.1.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - okaaryanata
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-10 00:00:00.000000000 Z
11
+ date: 2021-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -131,6 +131,7 @@ files:
131
131
  - lib/item_builder/modes/quantity/base.rb
132
132
  - lib/item_builder/modes/quantity/lazada_service.rb
133
133
  - lib/item_builder/modes/quantity/zalora_service.rb
134
+ - lib/item_builder/modes/quantity/zilingo_service.rb
134
135
  - lib/item_builder/modes/quantity_service.rb
135
136
  - lib/item_builder/modes/simple_service.rb
136
137
  - lib/item_builder/modes/update/base.rb