zuora_connect 1.5.13 → 1.5.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d4aa843cfaaa52510961165dff8cd70413c0be92
4
- data.tar.gz: 4d030a6e5ab5373f13486ed26f6904083b57286f
3
+ metadata.gz: b73f9738a5746908f0cbf6db3bd327b69980e0f6
4
+ data.tar.gz: 8abe423e467c692445c180a108def67225ebf21e
5
5
  SHA512:
6
- metadata.gz: b2e6b09882b99450c5724c58091ab59f9b43e7fcf036c413a3354497973685544afaadf8ad23125e5f242c91175292df9865c46a95cee71df458bcc6c373e20a
7
- data.tar.gz: b8d01e503b830326b5a5496fe426587e90aceb8ec662ec5044548b7fa80b0be8a3562ae179ea357e60e72f1dd5dea7256ab4984998d70a79d4983dfc30b516c8
6
+ metadata.gz: c491398a80320a9ed09625b0f0809642ed2c9898c24e8c890858103849cb6b131ba55e746e8f35bcdeba0c89c302cd531ae49348b7d784ac5ea30b2e24e22c9b
7
+ data.tar.gz: 1457f3288b2ebd62ab6675b211b89006a3e79cde2323da9fde9b1bc9cd5851a2ec3b90a1bbaef183c57189e46a14b8c5c11c966ca6e3f442fc9c2bc1a40224dc
@@ -8,6 +8,7 @@ module ZuoraConnect
8
8
  def init
9
9
  @options = Hash.new
10
10
  @logins = Hash.new
11
+ @api_version = "v2"
11
12
  self.attr_builder("timezone", ZuoraConnect.configuration.default_time_zone)
12
13
  self.attr_builder("locale", ZuoraConnect.configuration.default_locale)
13
14
  PaperTrail.whodunnit = "Backend" if defined?(PaperTrail)
@@ -396,6 +397,8 @@ module ZuoraConnect
396
397
 
397
398
  def updateOption(optionId, value)
398
399
  if self.access_token && self.refresh_token
400
+ #Refresh token if already expired
401
+ self.refresh_oauth if self.oauth_expired?
399
402
  return HTTParty.get(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/application_options/#{optionId}/edit?value=#{value}",:body => {:access_token => self.username})
400
403
  else
401
404
  return false
@@ -408,6 +411,9 @@ module ZuoraConnect
408
411
  #This can add a new login
409
412
  #This can change to another existing login
410
413
  def update_logins(options)
414
+ #Refresh token if already expired
415
+ self.refresh_oauth if self.oauth_expired?
416
+
411
417
  count ||= 0
412
418
  response = HTTParty.post(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/tasks/#{self.id}/logins",:body => {:access_token => self.username}.merge(options))
413
419
  if response.code == 200
@@ -416,15 +422,16 @@ module ZuoraConnect
416
422
  raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Communicating with Connect", response.body, response.code)
417
423
  end
418
424
  rescue Net::ReadTimeout, Net::OpenTimeout, Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError
419
- if (count += 1) < 2
425
+ if (count += 1) < 3
420
426
  retry
421
427
  else
422
428
  raise
423
429
  end
424
430
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
425
- if count < 2 && ex.code == 401
426
- self.refresh_oauth
427
- count += 1
431
+ if (count += 1) < 3
432
+ if ex.code == 401
433
+ self.refresh_oauth
434
+ end
428
435
  retry
429
436
  else
430
437
  raise
@@ -432,8 +439,12 @@ module ZuoraConnect
432
439
  end
433
440
 
434
441
  def refresh(session = nil)
442
+ #Refresh token if already expired
443
+ self.refresh_oauth if self.oauth_expired?
444
+
435
445
  count ||= 0
436
446
  start = Time.now
447
+ Rails.logger.info("[#{self.id}] REFRESHING - Get Task Info")
437
448
  response = HTTParty.get(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/tasks/#{self.id}.json",:body => {:access_token => self.access_token})
438
449
  response_time = Time.now - start
439
450
 
@@ -445,16 +456,16 @@ module ZuoraConnect
445
456
  raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Communicating with Connect", response.body, response.code)
446
457
  end
447
458
  rescue Net::ReadTimeout, Net::OpenTimeout, Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError
448
- if count < 2
449
- count += 1
459
+ if (count += 1) < 3
450
460
  retry
451
461
  else
452
462
  raise
453
463
  end
454
464
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
455
- if count < 2 && ex.code == 401
456
- self.refresh_oauth
457
- count += 1
465
+ if (count += 1) < 3
466
+ if ex.code == 401
467
+ self.refresh_oauth
468
+ end
458
469
  retry
459
470
  else
460
471
  raise
@@ -533,9 +544,9 @@ module ZuoraConnect
533
544
  response_time = Time.now - start
534
545
  Rails.logger.info("[#{self.id}] REFRESHING - OAuth in #{response_time.round(2).to_s}")
535
546
 
536
- response_body = JSON.parse(response.body)
537
-
538
547
  if response.code == 200
548
+ response_body = JSON.parse(response.body)
549
+
539
550
  self.refresh_token = response_body["refresh_token"]
540
551
  self.access_token = response_body["access_token"]
541
552
  self.oauth_expires_at = Time.at(response_body["created_at"].to_i) + response_body["expires_in"].seconds
@@ -546,18 +557,16 @@ module ZuoraConnect
546
557
  end
547
558
 
548
559
  rescue Net::ReadTimeout, Net::OpenTimeout, Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError => ex
549
- if count < 2
550
- count += 1
560
+ if (count += 1) < 3
551
561
  retry
552
562
  else
553
563
  raise
554
564
  end
555
565
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
556
- if count < 3
566
+ if (count += 1) < 3
557
567
  Rails.logger.info("REFRESHING - OAuth Failed - Retrying(#{count})")
558
568
  self.reload
559
569
  sleep(5)
560
- count += 1
561
570
  retry
562
571
  else
563
572
  Rails.logger.fatal("REFRESHING - OAuth Failed")
@@ -566,7 +575,7 @@ module ZuoraConnect
566
575
  end
567
576
 
568
577
  def oauth_expired?
569
- (expires_at < Time.now)
578
+ (self.oauth_expires_at < Time.now)
570
579
  end
571
580
 
572
581
  def attr_builder(field,val)
@@ -5,16 +5,18 @@ module ZuoraConnect
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  def authenticate_app_api_request
8
+ #Skip session for api requests
9
+ request.session_options[:skip] = true
8
10
  start_time = Time.now
9
11
  if !request.headers["API-Token"].blank?
10
12
  @appinstance = ZuoraConnect::AppInstance.where(:api_token => request.headers["API-Token"]).first
11
- Rails.logger.debug("[#{@appinstance.id}] API REQUEST - API token") if !@appinstance.blank?
13
+ Rails.logger.debug("[#{@appinstance.id}] API REQUEST - API token") if @appinstance.present?
12
14
  check_instance
13
15
  else
14
16
  authenticate_or_request_with_http_basic do |username, password|
15
17
  @appinstance = ZuoraConnect::AppInstance.where(:token => password).first
16
18
  @appinstance ||= ZuoraConnect::AppInstance.where(:api_token => password).first
17
- Rails.logger.debug("[#{@appinstance.id}] API REQUEST - Basic Auth") if !@appinstance.blank?
19
+ Rails.logger.debug("[#{@appinstance.id}] API REQUEST - Basic Auth") if @appinstance.present?
18
20
  check_instance
19
21
  end
20
22
  end
@@ -65,7 +67,7 @@ module ZuoraConnect
65
67
 
66
68
  private
67
69
  def setup_instance_via_data
68
- reset_session
70
+ session.clear
69
71
  values = JSON.parse(ZuoraConnect::AppInstance.decrypt_response(Base64.urlsafe_decode64(request["data"])))
70
72
  Rails.logger.debug("Data: #{values.to_json}")
71
73
  if values["param_data"]
@@ -98,7 +100,7 @@ module ZuoraConnect
98
100
  end
99
101
 
100
102
  def setup_instance_via_session
101
- if !session["appInstance"].blank?
103
+ if session["appInstance"].present?
102
104
  @appinstance = ZuoraConnect::AppInstance.where(:id => session["appInstance"]).first
103
105
  else
104
106
  raise ZuoraConnect::Exceptions::SessionInvalid.new("Session Blank -- Relaunch Application")
@@ -125,7 +127,7 @@ module ZuoraConnect
125
127
 
126
128
  #API ONLY
127
129
  def check_instance
128
- if !@appinstance.blank?
130
+ if @appinstance.present?
129
131
  @appinstance.new_session(:session => @appinstance.data_lookup(:session => session))
130
132
  Thread.current[:appinstance] = @appinstance
131
133
  PaperTrail.whodunnit = "API User" if defined?(PaperTrail)
@@ -1,4 +1,4 @@
1
1
  module ZuoraConnect
2
- VERSION = "1.5.13"
2
+ VERSION = "1.5.14"
3
3
  end
4
4
 
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: 1.5.13
4
+ version: 1.5.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connect Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-24 00:00:00.000000000 Z
11
+ date: 2018-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apartment