item_builder 0.1.33 → 0.1.34
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 +4 -4
- data/lib/item_builder.rb +13 -1
- data/lib/item_builder/modes.rb +2 -0
- data/lib/item_builder/modes/active_service.rb +2 -1
- data/lib/item_builder/modes/quantity_service.rb +2 -0
- data/lib/item_builder/version.rb +1 -1
- data/lib/item_builder/zalora_quantity_service.rb +64 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e9895ea021aab0e2ffe939409176b92e8478b8c31a1645480e55ed07f14e86d
|
4
|
+
data.tar.gz: a35617cca876d0d21c28b5bd11c6d8a209111b9ef0b96540908b177f38755cec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fd151f3dc3afba437effd13e5d2cb199fc8590615bca4c696e0d5eb291eddeb23a331cc12569bedea8eb50a5a3979fc3cd959625b18c41b166c22fa5f19e22c
|
7
|
+
data.tar.gz: 6ce4e2f994f07c8bd0074a23d1fd7764e86c43a323ff588506af7ffa4aaf53f0bcaca3589f9710d23168041cdc5715a5a8b23269c076a0ddd9cbad3667b91d6e
|
data/lib/item_builder.rb
CHANGED
@@ -9,6 +9,7 @@ require 'item_builder/modes/simple_service'
|
|
9
9
|
require 'item_builder/modes/active_service'
|
10
10
|
require 'item_models'
|
11
11
|
require 'item_builder/zilingo_quantity_service'
|
12
|
+
require 'item_builder/zalora_quantity_service'
|
12
13
|
|
13
14
|
class ItemBuilder
|
14
15
|
def self.build(listing_ids, mode)
|
@@ -41,6 +42,11 @@ class ItemBuilder
|
|
41
42
|
new_param = qty_simple_params(listing)
|
42
43
|
.merge({zilingo_delta_quantity: zilingo_delta_quantity})
|
43
44
|
|
45
|
+
modes[mode].new(new_param).perform
|
46
|
+
elsif listing.channel_id == 13
|
47
|
+
new_param = qty_simple_params(listing)
|
48
|
+
.merge({zalora_reserved_stock: zalora_reserved_stock})
|
49
|
+
|
44
50
|
modes[mode].new(new_param).perform
|
45
51
|
else
|
46
52
|
modes[mode].new(qty_simple_params(listing)).perform
|
@@ -128,6 +134,12 @@ class ItemBuilder
|
|
128
134
|
).perform
|
129
135
|
end
|
130
136
|
|
137
|
+
def zalora_reserved_stock
|
138
|
+
@zalora_reserved_stock ||= ItemBuilder::ZaloraQuantityService.new(
|
139
|
+
listings: listings, skus: skus
|
140
|
+
).perform
|
141
|
+
end
|
142
|
+
|
131
143
|
def modes
|
132
144
|
{
|
133
145
|
price: ItemBuilder::Modes::PriceService,
|
@@ -151,6 +163,6 @@ class ItemBuilder
|
|
151
163
|
def reserved_stocks
|
152
164
|
@reserved_stocks ||= JSON.parse(RestClient.get(
|
153
165
|
"#{order_host}?#{reserved_params}"
|
154
|
-
).body) if [3
|
166
|
+
).body) if [3].include?(listings[0].channel_id)
|
155
167
|
end
|
156
168
|
end
|
data/lib/item_builder/modes.rb
CHANGED
@@ -18,6 +18,7 @@ class ItemBuilder
|
|
18
18
|
attr_reader :variant_listings
|
19
19
|
attr_reader :reserved_stocks
|
20
20
|
attr_reader :zilingo_delta_quantity
|
21
|
+
attr_reader :zalora_reserved_stock
|
21
22
|
def initialize(args)
|
22
23
|
@listing = args.fetch(:listing)
|
23
24
|
@wh_spaces = args.fetch(:wh_spaces, [])
|
@@ -29,6 +30,7 @@ class ItemBuilder
|
|
29
30
|
@variant_listings = args.fetch(:variant_listings, [])
|
30
31
|
@reserved_stocks = args.fetch(:reserved_stocks, [])
|
31
32
|
@zilingo_delta_quantity = args.fetch(:zilingo_delta_quantity, [])
|
33
|
+
@zalora_reserved_stock = args.fetch(:zalora_reserved_stock, [])
|
32
34
|
end
|
33
35
|
|
34
36
|
def base
|
@@ -29,7 +29,8 @@ class ItemBuilder
|
|
29
29
|
bundles: bundles, item_bundle_variants: item_bundle_variants,
|
30
30
|
existing_alloc_stocks: existing_alloc_stocks,
|
31
31
|
reserved_stocks: reserved_stocks,
|
32
|
-
zilingo_delta_quantity: zilingo_delta_quantity
|
32
|
+
zilingo_delta_quantity: zilingo_delta_quantity,
|
33
|
+
zalora_reserved_stock: zalora_reserved_stock
|
33
34
|
).to_h
|
34
35
|
end
|
35
36
|
|
@@ -49,6 +49,8 @@ class ItemBuilder
|
|
49
49
|
def reserved_stock
|
50
50
|
if channel_name == 'Zilingo'
|
51
51
|
zilingo_delta_quantity[listing.local_id].to_i
|
52
|
+
elsif channel_name == 'Zalora'
|
53
|
+
zalora_reserved_stock[listing.local_id].to_i
|
52
54
|
else
|
53
55
|
reserved_stocks.find {|rs| rs['variant_id'] == listing.variant_id }['reserved_quantity']
|
54
56
|
end
|
data/lib/item_builder/version.rb
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'item_builder/modes.rb'
|
4
|
+
class ItemBuilder
|
5
|
+
class ZaloraQuantityService
|
6
|
+
attr_reader :listings, :skus
|
7
|
+
def initialize(args)
|
8
|
+
@listings = args.fetch(:listings)
|
9
|
+
@skus = args.fetch(:skus)
|
10
|
+
end
|
11
|
+
|
12
|
+
def perform
|
13
|
+
args = {
|
14
|
+
method: :post, url: url, payload: data, headers: headers
|
15
|
+
}
|
16
|
+
resp = JSON.parse(rest_client(args, [200, 500, 406]))
|
17
|
+
response_process(resp)
|
18
|
+
end
|
19
|
+
|
20
|
+
def headers
|
21
|
+
{ content_type: :json, accept: :json }
|
22
|
+
end
|
23
|
+
|
24
|
+
def data
|
25
|
+
{
|
26
|
+
"credential": JSON.parse(credential)['credential'],
|
27
|
+
"data": { "skus": skus }
|
28
|
+
}.to_json
|
29
|
+
end
|
30
|
+
|
31
|
+
def credential
|
32
|
+
return @credential if @credential
|
33
|
+
|
34
|
+
account_id = listings[0].profile_channel_association_id
|
35
|
+
host = ENV['CREDENTIAL_URL'] || raise('credential url is not set')
|
36
|
+
url = "#{host}/credential?account_id=#{account_id}"
|
37
|
+
@credential = rest_client(method: :get, url: url)
|
38
|
+
end
|
39
|
+
|
40
|
+
def url
|
41
|
+
url = ENV['API_GATEWAY_URL'] || raise('api gateway is not set')
|
42
|
+
url + "/zalora/product_stocks"
|
43
|
+
end
|
44
|
+
|
45
|
+
def response_process(resp)
|
46
|
+
hash = Hash.new
|
47
|
+
resp.dig("SuccessResponse", "Body", "ProductStocks", "ProductStock").each do |sku|
|
48
|
+
hash[sku['SellerSku']] = sku['ReservedStock']
|
49
|
+
end
|
50
|
+
hash
|
51
|
+
end
|
52
|
+
|
53
|
+
def rest_client(params, rescued_codes = 200)
|
54
|
+
RestClient::Request.execute(params.merge(timeout: 3)) do |response|
|
55
|
+
code = response.code
|
56
|
+
unless Array.wrap(rescued_codes).include?(code)
|
57
|
+
raise "Response Code is #{code}"
|
58
|
+
end
|
59
|
+
|
60
|
+
response
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
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.
|
4
|
+
version: 0.1.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- okaaryanata
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -144,6 +144,7 @@ files:
|
|
144
144
|
- lib/item_builder/modes/update/zalora_service.rb
|
145
145
|
- lib/item_builder/modes/update_service.rb
|
146
146
|
- lib/item_builder/version.rb
|
147
|
+
- lib/item_builder/zalora_quantity_service.rb
|
147
148
|
- lib/item_builder/zilingo_quantity_service.rb
|
148
149
|
homepage:
|
149
150
|
licenses: []
|