zuora_connect 2.0.60p → 2.0.60q
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/app/models/zuora_connect/app_instance_base.rb +37 -20
- data/lib/zuora_connect/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3a9478b4c078e02402f100894a54bac2b08c1a89465e83ec55cb9f1bbe3f5dff
|
|
4
|
+
data.tar.gz: e0d5c40113abe3b72ef867ca59f620ce19dc1dee778a7e4e531aedae68a6812c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2c8392e166c5bad4c990c00344476adec37e7dff8176865202a8fedc47e853222197fc2837dd5ea780b96c7fbb92922bcb482206079d376c29c1fadee90a18d9
|
|
7
|
+
data.tar.gz: 66a9558d6ba34f591a82d1c1f5a92d8930fffde9258afc142e7dd68abbffbfbfdf830bbb2576cfe01e74bef6248ce2bc65b347c16cd08d434b69328fcc407c0b
|
|
@@ -22,6 +22,9 @@ module ZuoraConnect
|
|
|
22
22
|
CONNECT_APPLICATION_ID = 0
|
|
23
23
|
CONNECT_COMMUNICATION_SLEEP = Rails.env.test? ? 0.seconds : 5.seconds
|
|
24
24
|
CATALOG_LOOKUP_PAGE_SIZE = 10_000
|
|
25
|
+
CATALOG_LOOKUP_CACHE_TIME_KEY = 'CatalogCachedAt'
|
|
26
|
+
CATALOG_LOOKUP_TTL = 60.seconds
|
|
27
|
+
CATALOG_LOOKUP_CACHE_RESULT_KEY = 'CatalogCache'
|
|
25
28
|
IGNORED_LOCALS = ['fr', 'ja', 'es', 'zh', 'de']
|
|
26
29
|
INTERNAL_HOSTS = []
|
|
27
30
|
LOGIN_TENANT_DESTINATION = 'target_login'
|
|
@@ -1015,25 +1018,29 @@ module ZuoraConnect
|
|
|
1015
1018
|
end
|
|
1016
1019
|
|
|
1017
1020
|
if source == 'API'
|
|
1018
|
-
zuora_login = self.login_lookup(type: 'Zuora').first
|
|
1019
|
-
login = zuora_login.client(entity_reference)
|
|
1020
|
-
|
|
1021
1021
|
catalog_container = {}
|
|
1022
|
-
response = {
|
|
1023
|
-
'nextPage' => login.rest_endpoint("catalog/products?pageSize=#{CATALOG_LOOKUP_PAGE_SIZE}")
|
|
1024
|
-
}
|
|
1025
|
-
while response['nextPage'].present?
|
|
1026
|
-
url = login.rest_endpoint(response['nextPage'].split('/v1/').last)
|
|
1027
|
-
output_json, response = login.rest_call(debug: false, url: url, timeout_retry: true)
|
|
1028
|
-
|
|
1029
|
-
case object
|
|
1030
|
-
when :product
|
|
1031
|
-
output_json.fetch('products', []).each do |product|
|
|
1032
|
-
if object_id.nil?
|
|
1033
|
-
catalog_container[product['id']] = product.except('productRatePlans')
|
|
1034
|
-
elsif object_id.is_a?(String)
|
|
1035
|
-
next unless product['id'] == object_id
|
|
1036
1022
|
|
|
1023
|
+
if (Redis.current.hget(CATALOG_LOOKUP_CACHE_TIME_KEY, self.id).to_i + CATALOG_LOOKUP_TTL.to_i) > Time.now.to_i
|
|
1024
|
+
begin
|
|
1025
|
+
catalog_container = JSON.parse(Redis.current.hget(CATALOG_LOOKUP_CACHE_RESULT_KEY, self.id))
|
|
1026
|
+
rescue JSON::ParserError => ex
|
|
1027
|
+
Rails.logger.warn('Failed to parse catalog cache', ex)
|
|
1028
|
+
end
|
|
1029
|
+
else
|
|
1030
|
+
zuora_login = self.login_lookup(type: 'Zuora').first
|
|
1031
|
+
login = zuora_login.client(entity_reference)
|
|
1032
|
+
|
|
1033
|
+
response = {
|
|
1034
|
+
'nextPage' => login.rest_endpoint("catalog/products?pageSize=#{CATALOG_LOOKUP_PAGE_SIZE}")
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
while response['nextPage'].present?
|
|
1038
|
+
url = login.rest_endpoint(response['nextPage'].split('/v1/').last)
|
|
1039
|
+
output_json, response = login.rest_call(debug: false, url: url, timeout_retry: true)
|
|
1040
|
+
|
|
1041
|
+
case object
|
|
1042
|
+
when :product
|
|
1043
|
+
output_json.fetch('products', []).each do |product|
|
|
1037
1044
|
rate_plans = {}
|
|
1038
1045
|
product['productRatePlans'].each do |rate_plan|
|
|
1039
1046
|
charges = {}
|
|
@@ -1058,13 +1065,23 @@ module ZuoraConnect
|
|
|
1058
1065
|
end
|
|
1059
1066
|
|
|
1060
1067
|
product['productRatePlans'] = rate_plans
|
|
1061
|
-
catalog_container = product
|
|
1068
|
+
catalog_container[product['id']] = product
|
|
1062
1069
|
end
|
|
1070
|
+
else
|
|
1071
|
+
raise "Available objects include [:product]"
|
|
1063
1072
|
end
|
|
1064
|
-
else
|
|
1065
|
-
raise "Available objects include [:product]"
|
|
1066
1073
|
end
|
|
1074
|
+
|
|
1075
|
+
Redis.current.hset(CATALOG_LOOKUP_CACHE_RESULT_KEY, self.id, catalog_container.to_json)
|
|
1076
|
+
Redis.current.hset(CATALOG_LOOKUP_CACHE_TIME_KEY, self.id, Time.now.to_i)
|
|
1067
1077
|
end
|
|
1078
|
+
|
|
1079
|
+
if object_id.nil?
|
|
1080
|
+
catalog_container.transform_values! { |v| v.except('productRatePlans') }
|
|
1081
|
+
elsif object_id.is_a?(String)
|
|
1082
|
+
catalog_container = catalog_container[object_id]
|
|
1083
|
+
end
|
|
1084
|
+
|
|
1068
1085
|
return catalog_container
|
|
1069
1086
|
end
|
|
1070
1087
|
|