zuora_connect 2.0.25 → 2.0.26
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 +49 -7
- data/lib/zuora_connect/version.rb +1 -1
- metadata +29 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 239f7a1bb6772f339b0c133922484240ab3d1386977da45fd19c056efe8ab287
|
4
|
+
data.tar.gz: 953110b10aa289412dba1f78e7d20fef51c25fb7e7d5a727b7cc2e87e46a6bdf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d36513091307381a8f13907ccd9e9c1302e2745fb071f7b895edca58d5e769e002ea749a65a55c71d7a1d86a085c54e07df628e208c0b134617021d75696dd4d
|
7
|
+
data.tar.gz: e422088de704297c8ab7cbf9a876f120059d9ed641ad31d6ed54fa43520e88ee5beb1b81c172e3adb10f9a82e3466a6946c9c057d88a26062e3a38052ec6925b
|
@@ -19,6 +19,12 @@ module ZuoraConnect
|
|
19
19
|
IGNORED_LOCALS = ['fr', 'ja', 'es', 'zh', 'de']
|
20
20
|
INTERNAL_HOSTS = []
|
21
21
|
LOGIN_TENANT_DESTINATION = 'target_login'
|
22
|
+
AWS_AUTH_ERRORS = [
|
23
|
+
Aws::Sigv4::Errors::MissingCredentialsError,
|
24
|
+
Aws::Errors::MissingCredentialsError,
|
25
|
+
Aws::S3::Errors::AccessDenied,
|
26
|
+
].freeze
|
27
|
+
AWS_AUTH_ERRORS_MSG = "AWS Auth Errors".freeze
|
22
28
|
|
23
29
|
def init
|
24
30
|
self.connect_user = 'Nobody'
|
@@ -250,8 +256,9 @@ module ZuoraConnect
|
|
250
256
|
|
251
257
|
def refresh(session: {}, session_fallback: false)
|
252
258
|
refresh_count ||= 0
|
259
|
+
skip_connect ||= false
|
253
260
|
#Check how app was deployed
|
254
|
-
if
|
261
|
+
if self.id < 25000000 && !skip_connect
|
255
262
|
start = Time.now
|
256
263
|
response = HTTParty.get(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/tasks/#{self.id}.json",:body => {:access_token => self.access_token})
|
257
264
|
response_time = Time.now - start
|
@@ -263,7 +270,12 @@ module ZuoraConnect
|
|
263
270
|
rescue JSON::ParserError => ex
|
264
271
|
raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("JSON parse error", response.body, response.code)
|
265
272
|
end
|
266
|
-
|
273
|
+
|
274
|
+
self.build_task(task_data: parsed_json, session: session)
|
275
|
+
if self.kms_key.present?
|
276
|
+
self.zuora_logins = parsed_json
|
277
|
+
self.save(:validate => false)
|
278
|
+
end
|
267
279
|
else
|
268
280
|
raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Communicating with Connect", response.body, response.code)
|
269
281
|
end
|
@@ -274,21 +286,31 @@ module ZuoraConnect
|
|
274
286
|
self.cache_app_instance
|
275
287
|
self.reset_mark_for_refresh
|
276
288
|
rescue *(ZuoraAPI::Login::CONNECTION_EXCEPTIONS + ZuoraAPI::Login::CONNECTION_READ_EXCEPTIONS) => ex
|
277
|
-
|
278
|
-
|
289
|
+
refresh_count += 1
|
290
|
+
if refresh_count < 3
|
291
|
+
sleep(10)
|
279
292
|
ZuoraConnect.logger.debug("REFRESH TASK - Connection Failure Retrying(#{refresh_count})", ex, self.default_ougai_items)
|
280
293
|
retry
|
294
|
+
elsif refresh_count < 4 && self['zuora_logins'].present?
|
295
|
+
ZuoraConnect.logger.warn("REFRESH TASK - Fallback to local encrypted store", ex, self.default_ougai_items)
|
296
|
+
skip_connect = true
|
297
|
+
retry
|
281
298
|
else
|
282
299
|
ZuoraConnect.logger.fatal("REFRESH TASK - Connection Failed", ex, self.default_ougai_items)
|
283
300
|
raise
|
284
301
|
end
|
285
302
|
rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
|
286
|
-
|
303
|
+
refresh_count += 1
|
304
|
+
if refresh_count < 3
|
287
305
|
ZuoraConnect.logger.debug("REFRESH TASK - Communication Failure Retrying(#{refresh_count})", ex, self.default_ougai_items)
|
288
306
|
if ex.code == 401
|
289
307
|
self.refresh_oauth
|
290
308
|
end
|
291
309
|
retry
|
310
|
+
elsif refresh_count < 4 && self['zuora_logins'].present?
|
311
|
+
ZuoraConnect.logger.warn("REFRESH TASK - Fallback to local encrypted store", ex, self.default_ougai_items)
|
312
|
+
skip_connect = true
|
313
|
+
retry
|
292
314
|
else
|
293
315
|
ZuoraConnect.logger.fatal("REFRESH TASK - Communication Failed #{ex.code}", ex, self.default_ougai_items)
|
294
316
|
raise
|
@@ -301,26 +323,46 @@ module ZuoraConnect
|
|
301
323
|
end
|
302
324
|
|
303
325
|
def zuora_logins
|
326
|
+
raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Zuora Logins is blank, cannot decrypt.") if super.blank?
|
304
327
|
return JSON.parse(kms_decrypt(super))
|
305
328
|
end
|
306
329
|
|
307
330
|
def kms_decrypt(value)
|
331
|
+
kms_tries ||= 0
|
308
332
|
kms_client = Aws::KMS::Client.new({region: Rails.application.secrets.aws['AWS_REGION'], credentials: self.aws_auth_client}.delete_if { |k, v| v.blank? })
|
309
333
|
resp = kms_client.decrypt({ciphertext_blob: [value].pack("H*") })
|
310
334
|
return resp.plaintext
|
335
|
+
rescue *AWS_AUTH_ERRORS => ex
|
336
|
+
Rails.logger.error(AWS_AUTH_ERRORS_MSG, ex)
|
337
|
+
if (kms_tries += 1) < 3
|
338
|
+
retry
|
339
|
+
else
|
340
|
+
raise
|
341
|
+
end
|
311
342
|
end
|
312
343
|
|
313
344
|
def kms_encrypt(value)
|
345
|
+
kms_tries ||= 0
|
314
346
|
kms_client = Aws::KMS::Client.new({region: Rails.application.secrets.aws['AWS_REGION'], credentials: self.aws_auth_client}.delete_if {|k,v| v.blank? })
|
315
|
-
kms_key = ENV['AWS_KMS_ARN'] || Rails.application.secrets.aws['AWS_KMS_ARN']
|
316
347
|
|
317
348
|
resp = kms_client.encrypt({key_id: kms_key, plaintext: value})
|
318
349
|
return resp.ciphertext_blob.unpack('H*').first
|
350
|
+
rescue *AWS_AUTH_ERRORS => ex
|
351
|
+
Rails.logger.error(AWS_AUTH_ERRORS_MSG, ex)
|
352
|
+
if (kms_tries += 1) < 3
|
353
|
+
retry
|
354
|
+
else
|
355
|
+
raise
|
356
|
+
end
|
357
|
+
end
|
358
|
+
|
359
|
+
def kms_key
|
360
|
+
return ENV['AWS_KMS_ARN'] || Rails.application.secrets.aws['AWS_KMS_ARN']
|
319
361
|
end
|
320
362
|
|
321
363
|
def aws_auth_client
|
322
364
|
if Rails.env.to_s == 'development'
|
323
|
-
|
365
|
+
return Aws::Credentials.new(Rails.application.secrets.aws['AWS_ACCESS_KEY_ID'], Rails.application.secrets.aws['AWS_SECRET_ACCESS_KEY'])
|
324
366
|
else
|
325
367
|
return nil
|
326
368
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zuora_connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Connect Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: apartment
|
@@ -423,41 +423,41 @@ test_files:
|
|
423
423
|
- test/integration/navigation_test.rb
|
424
424
|
- test/controllers/zuora_connect/api/v1/app_instance_controller_test.rb
|
425
425
|
- test/fixtures/zuora_connect/app_instances.yml
|
426
|
+
- test/lib/generators/zuora_connect/datatable_generator_test.rb
|
427
|
+
- test/models/zuora_connect/app_instance_test.rb
|
428
|
+
- test/zuora_connect_test.rb
|
429
|
+
- test/dummy/Rakefile
|
430
|
+
- test/dummy/config.ru
|
431
|
+
- test/dummy/public/422.html
|
432
|
+
- test/dummy/public/404.html
|
433
|
+
- test/dummy/public/500.html
|
434
|
+
- test/dummy/public/favicon.ico
|
426
435
|
- test/dummy/app/controllers/application_controller.rb
|
436
|
+
- test/dummy/app/helpers/application_helper.rb
|
427
437
|
- test/dummy/app/views/layouts/application.html.erb
|
428
|
-
- test/dummy/app/assets/stylesheets/application.css
|
429
438
|
- test/dummy/app/assets/javascripts/application.js
|
430
|
-
- test/dummy/app/
|
431
|
-
- test/dummy/
|
432
|
-
- test/dummy/bin/bundle
|
433
|
-
- test/dummy/bin/rake
|
439
|
+
- test/dummy/app/assets/stylesheets/application.css
|
440
|
+
- test/dummy/README.rdoc
|
434
441
|
- test/dummy/bin/rails
|
435
|
-
- test/dummy/
|
436
|
-
- test/dummy/
|
437
|
-
- test/dummy/
|
442
|
+
- test/dummy/bin/rake
|
443
|
+
- test/dummy/bin/bundle
|
444
|
+
- test/dummy/bin/setup
|
445
|
+
- test/dummy/config/secrets.yml
|
438
446
|
- test/dummy/config/boot.rb
|
447
|
+
- test/dummy/config/initializers/mime_types.rb
|
448
|
+
- test/dummy/config/initializers/filter_parameter_logging.rb
|
449
|
+
- test/dummy/config/initializers/session_store.rb
|
450
|
+
- test/dummy/config/initializers/inflections.rb
|
451
|
+
- test/dummy/config/initializers/cookies_serializer.rb
|
452
|
+
- test/dummy/config/initializers/assets.rb
|
453
|
+
- test/dummy/config/initializers/wrap_parameters.rb
|
454
|
+
- test/dummy/config/initializers/backtrace_silencers.rb
|
439
455
|
- test/dummy/config/database.yml
|
456
|
+
- test/dummy/config/environment.rb
|
457
|
+
- test/dummy/config/application.rb
|
458
|
+
- test/dummy/config/routes.rb
|
440
459
|
- test/dummy/config/environments/production.rb
|
441
460
|
- test/dummy/config/environments/development.rb
|
442
461
|
- test/dummy/config/environments/test.rb
|
443
|
-
- test/dummy/config/secrets.yml
|
444
462
|
- test/dummy/config/locales/en.yml
|
445
|
-
- test/dummy/config/initializers/inflections.rb
|
446
|
-
- test/dummy/config/initializers/backtrace_silencers.rb
|
447
|
-
- test/dummy/config/initializers/mime_types.rb
|
448
|
-
- test/dummy/config/initializers/filter_parameter_logging.rb
|
449
|
-
- test/dummy/config/initializers/assets.rb
|
450
|
-
- test/dummy/config/initializers/cookies_serializer.rb
|
451
|
-
- test/dummy/config/initializers/session_store.rb
|
452
|
-
- test/dummy/config/initializers/wrap_parameters.rb
|
453
|
-
- test/dummy/public/favicon.ico
|
454
|
-
- test/dummy/public/500.html
|
455
|
-
- test/dummy/public/404.html
|
456
|
-
- test/dummy/public/422.html
|
457
|
-
- test/dummy/Rakefile
|
458
|
-
- test/dummy/README.rdoc
|
459
|
-
- test/dummy/config.ru
|
460
|
-
- test/lib/generators/zuora_connect/datatable_generator_test.rb
|
461
463
|
- test/test_helper.rb
|
462
|
-
- test/zuora_connect_test.rb
|
463
|
-
- test/models/zuora_connect/app_instance_test.rb
|