item_builder 0.1.44 → 0.1.45
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1f1e518425d71626cb31d4b52998fdfdd6c57adc7d31bae47ae53524f6869331
|
|
4
|
+
data.tar.gz: ad533c38093f28b2f85e7c043c423d9541ec4aca9cd861e2d3ce49a6631a964d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1a8863826c68c15b5fa2ba7caba19586f85b6997e146c329a575293407ae7f698d545749b08f3ecdbecba6298fb520552cc69beaadf4334ef19cfdef4087d645
|
|
7
|
+
data.tar.gz: 38ce7ec15247a53d55afb769e4a702ac78d954561677c6b411501b84b494b48aeb2cf756cf2eb420020496cc2223b1bd7e580e25608214605ea027304aad7713
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'item_builder/modes.rb'
|
|
4
|
+
class ItemBuilder
|
|
5
|
+
class LazadaQuantityService
|
|
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.to_json }
|
|
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 + '/lazada/items'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def response_process(resp)
|
|
46
|
+
hash = {}
|
|
47
|
+
resp['data']['products'].each do |product|
|
|
48
|
+
product['skus'].each do |sku|
|
|
49
|
+
qty = sku['multiWarehouseInventories'][0]
|
|
50
|
+
hash[sku['SellerSku']] = qty['occupyQuantity'] + qty['withholdQuantity']
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
hash
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def rest_client(params, rescued_codes = 200)
|
|
57
|
+
RestClient::Request.execute(params.merge(timeout: 3)) do |response|
|
|
58
|
+
code = response.code
|
|
59
|
+
unless Array.wrap(rescued_codes).include?(code)
|
|
60
|
+
raise "Response Code is #{code}"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
response
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -14,6 +14,7 @@ class ItemBuilder
|
|
|
14
14
|
|
|
15
15
|
QUANTITY_CHANNEL = {}.tap do |hash|
|
|
16
16
|
hash[2] = :Shopify
|
|
17
|
+
hash[3] = :Lazada
|
|
17
18
|
hash[13] = :Zalora
|
|
18
19
|
hash[18] = :Zilingo
|
|
19
20
|
end.freeze
|
|
@@ -66,7 +67,9 @@ class ItemBuilder
|
|
|
66
67
|
|
|
67
68
|
zalora_reserved_stock[listing.local_id].to_i
|
|
68
69
|
else
|
|
69
|
-
|
|
70
|
+
return 0 if lazada_quantity.blank?
|
|
71
|
+
|
|
72
|
+
lazada_quantity[listing.local_id].to_i
|
|
70
73
|
end
|
|
71
74
|
end
|
|
72
75
|
|
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_quantity
|
|
21
|
+
attr_reader :lazada_quantity
|
|
21
22
|
attr_reader :zalora_reserved_stock
|
|
22
23
|
attr_reader :shopify_inventory_location
|
|
23
24
|
def initialize(args)
|
|
@@ -31,6 +32,7 @@ class ItemBuilder
|
|
|
31
32
|
@variant_listings = args.fetch(:variant_listings, [])
|
|
32
33
|
@reserved_stocks = args.fetch(:reserved_stocks, [])
|
|
33
34
|
@zilingo_quantity = args.fetch(:zilingo_quantity, [])
|
|
35
|
+
@lazada_quantity = args.fetch(:lazada_quantity, [])
|
|
34
36
|
@zalora_reserved_stock = args.fetch(:zalora_reserved_stock, [])
|
|
35
37
|
@shopify_inventory_location = args.fetch(:shopify_inventory_location, [])
|
|
36
38
|
end
|
data/lib/item_builder/version.rb
CHANGED
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/lazada_quantity_service'
|
|
12
13
|
require 'item_builder/zalora_quantity_service'
|
|
13
14
|
require 'item_builder/shopify_quantity_service'
|
|
14
15
|
class ItemBuilder
|
|
@@ -54,6 +55,11 @@ class ItemBuilder
|
|
|
54
55
|
new_param = qty_simple_params(listing)
|
|
55
56
|
.merge({shopify_inventory_location: shopify_inventory_location})
|
|
56
57
|
|
|
58
|
+
modes[mode].new(new_param).perform
|
|
59
|
+
elsif listing.channel_id == 3
|
|
60
|
+
new_param = qty_simple_params(listing)
|
|
61
|
+
.merge({lazada_quantity: lazada_quantity})
|
|
62
|
+
|
|
57
63
|
modes[mode].new(new_param).perform
|
|
58
64
|
else
|
|
59
65
|
modes[mode].new(qty_simple_params(listing)).perform
|
|
@@ -159,6 +165,12 @@ class ItemBuilder
|
|
|
159
165
|
).perform
|
|
160
166
|
end
|
|
161
167
|
|
|
168
|
+
def lazada_quantity
|
|
169
|
+
@lazada_quantity ||= ItemBuilder::LazadaQuantityService.new(
|
|
170
|
+
listings: listings, skus: skus
|
|
171
|
+
).perform
|
|
172
|
+
end
|
|
173
|
+
|
|
162
174
|
def modes
|
|
163
175
|
{
|
|
164
176
|
price: ItemBuilder::Modes::PriceService,
|
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.45
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- okaaryanata
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-09-
|
|
11
|
+
date: 2021-09-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -117,6 +117,7 @@ extra_rdoc_files: []
|
|
|
117
117
|
files:
|
|
118
118
|
- lib/item_builder.rb
|
|
119
119
|
- lib/item_builder/get_quantity_service.rb
|
|
120
|
+
- lib/item_builder/lazada_quantity_service.rb
|
|
120
121
|
- lib/item_builder/modes.rb
|
|
121
122
|
- lib/item_builder/modes/active_service.rb
|
|
122
123
|
- lib/item_builder/modes/base_service.rb
|
|
@@ -165,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
165
166
|
- !ruby/object:Gem::Version
|
|
166
167
|
version: '0'
|
|
167
168
|
requirements: []
|
|
168
|
-
rubygems_version: 3.
|
|
169
|
+
rubygems_version: 3.0.9
|
|
169
170
|
signing_key:
|
|
170
171
|
specification_version: 4
|
|
171
172
|
summary: Item builder
|