item_builder 0.1.28 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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