zuora_api 1.7.48 → 1.7.49

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
  SHA256:
3
- metadata.gz: 1d42d8b994883bc0b9c7dce96886b9cf73c36d38588d966b90a11db463c6a5b9
4
- data.tar.gz: 365ba88fcf1624b2f25785cd8550a90d6d75633514665b8438bca87bb118be7c
3
+ metadata.gz: ae66e3f70b9d98bc1ad9b8d6bd08c3ac43bea36234db0af1efe428a129614fee
4
+ data.tar.gz: 812c7ab8f8133b8754ff7646169e3466b907099f707d394b9d6ea54e2073db66
5
5
  SHA512:
6
- metadata.gz: ab039d7a51f44a1cea743c3071b135e6a62a2c27df60a7777d248872637f32d14eb927b4af75bf0edcdabd97726558a3a950fc2aa406e299f2f28ea940c74c0d
7
- data.tar.gz: 163c586e8c33b6ea7b4e3d413979b005b5531b5091f7226ddbd5896eceedf4d8519e58cf6e048ad2c1b913e9838fbe86e4be8b44195ca0ce23838a3b441e72ef
6
+ metadata.gz: 2981b12a15b6195df7115f769ffb71ebe4a84e5af2d305ab8396b0d497088054dec8be21cb1ae7bc51f731ea6856edcaef83caa3cdc804d9d74f1a8ff1295b74
7
+ data.tar.gz: 85a4af2320a8f70115b35ab322fa844c0d72ac97c603339b598086c6c2f088ceebf8276157f08a7efc1511e03a083a129df128ed1994566f03133bacd2266ef7
@@ -1,6 +1,25 @@
1
1
  module ZuoraAPI
2
2
  module Exceptions
3
- class Error < StandardError; end
3
+ class Error < StandardError;
4
+ def parse_message(message)
5
+ case message
6
+ when /^Payment status should be Processed. Invalid payment is P-\d*./
7
+ @message = "Payment status should be Processed."
8
+ when /^Adjustment cannot be created for invoice(.*) with a zero balance./
9
+ @message = "Adjustment cannot be created for invoice with a zero balance."
10
+ when /^The balance of all the invoice items and tax items is 0. No write-off is needed for the invoice .*./
11
+ @message = "The balance of all the invoice items and tax items is 0. No write-off is needed for the invoice."
12
+ when /^Json input does not match schema. Error(s): string ".*" is too long .*/
13
+ @message = "Json input does not match schema. Error(s): String is too long."
14
+ when /^Query failed.*: (.*)$/
15
+ @message = "Query failed: #{$1}"
16
+ when /^Query failed .*: .*:(.*)$/
17
+ @message = "Query failed: #{$1}"
18
+ else
19
+ @message = message
20
+ end
21
+ end
22
+ end
4
23
  class FileDownloadError < StandardError; end
5
24
  class AuthorizationNotPerformed < Error; end
6
25
  class ZuoraAPISessionError < Error
@@ -9,7 +28,7 @@ module ZuoraAPI
9
28
 
10
29
  def initialize(message = nil,response=nil, errors = [], successes = [])
11
30
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
12
- @message = message
31
+ @message = parse_message(message)
13
32
  @response = response
14
33
  @default_message = "Error with Zuora Session."
15
34
  end
@@ -25,7 +44,7 @@ module ZuoraAPI
25
44
 
26
45
  def initialize(message = nil,response=nil, errors = [], successes = [], *args)
27
46
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
28
- @message = message
47
+ @message = parse_message(message)
29
48
  @response = response
30
49
  @default_message = "Error with Zuora Entity"
31
50
  @errors = errors
@@ -43,22 +62,7 @@ module ZuoraAPI
43
62
 
44
63
  def initialize(message = nil,response=nil, errors = [], successes = [], *args)
45
64
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
46
-
47
- case message
48
- when /^Payment status should be Processed. Invalid payment is P-\d*./
49
- @message = "Payment status should be Processed."
50
- when /^Adjustment cannot be created for invoice(.*) with a zero balance./
51
- @message = "Adjustment cannot be created for invoice with a zero balance."
52
- when /^The balance of all the invoice items and tax items is 0. No write-off is needed for the invoice .*./
53
- @message = "The balance of all the invoice items and tax items is 0. No write-off is needed for the invoice."
54
- when /^Json input does not match schema. Error(s): string ".*" is too long .*/
55
- @message = "Json input does not match schema. Error(s): String is too long."
56
- when /^Query failed \(.*\): .* Table (.*) does not exist$/
57
- @message = "Query failed: Table #{$1} does not exist"
58
- else
59
- @message = message
60
- end
61
-
65
+ @message = parse_message(message)
62
66
  @response = response
63
67
  @default_message = "Error communicating with Zuora."
64
68
  @errors = errors
@@ -76,7 +80,7 @@ module ZuoraAPI
76
80
 
77
81
  def initialize(message = nil,response = nil, errors = [], successes = [], *args)
78
82
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
79
- @message = message
83
+ @message = parse_message(message)
80
84
  @response = response
81
85
  @default_message = "Zuora Internal Server Error."
82
86
  @errors = errors
@@ -94,7 +98,7 @@ module ZuoraAPI
94
98
 
95
99
  def initialize(message = nil,response=nil, errors = [], successes = [], *args)
96
100
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
97
- @message = message
101
+ @message = parse_message(message)
98
102
  @response = response
99
103
  @default_message = "Your request limit has been exceeded for zuora."
100
104
  end
@@ -110,7 +114,7 @@ module ZuoraAPI
110
114
 
111
115
  def initialize(message = nil,response=nil, errors = [], successes = [], *args)
112
116
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
113
- @message = message
117
+ @message = parse_message(message)
114
118
  @response = response
115
119
  @default_message = "An unkown error occured. Workflow is not responsible. Please contact Support."
116
120
  end
@@ -126,7 +130,7 @@ module ZuoraAPI
126
130
 
127
131
  def initialize(message = nil,response=nil, errors = [], successes = [], *args)
128
132
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
129
- @message = message
133
+ @message = parse_message(message)
130
134
  @response = response
131
135
  @default_message = "Operation failed due to lock competition. Please retry"
132
136
  end
@@ -142,7 +146,7 @@ module ZuoraAPI
142
146
 
143
147
  def initialize(message = nil,response=nil, errors = [], successes = [], *args)
144
148
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
145
- @message = message
149
+ @message = parse_message(message)
146
150
  @response = response
147
151
  @default_message = "Operation failed due to lock competition. Please retry"
148
152
  end
@@ -158,7 +162,7 @@ module ZuoraAPI
158
162
 
159
163
  def initialize(message = nil, response=nil, errors = [], successes = [], *args)
160
164
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
161
- @message = message
165
+ @message = parse_message(message)
162
166
  @response = response
163
167
  @default_message = "An unexpected error occurred"
164
168
  end
@@ -174,7 +178,7 @@ module ZuoraAPI
174
178
 
175
179
  def initialize(message = nil,response=nil, errors = [], successes = [], *args)
176
180
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
177
- @message = message
181
+ @message = parse_message(message)
178
182
  @response = response
179
183
  @default_message = "There is a temporary error with zuora system."
180
184
  end
@@ -190,7 +194,7 @@ module ZuoraAPI
190
194
 
191
195
  def initialize(message = nil,response=nil, errors = [], successes = [], *args)
192
196
  @code = response.class.to_s == "HTTParty::Response" ? response.code : nil
193
- @message = message
197
+ @message = parse_message(message)
194
198
  @response = response
195
199
  @default_message = "Authentication type is not supported by this Login"
196
200
  end
@@ -631,7 +631,9 @@ module ZuoraAPI
631
631
  when /^\/query\/jobs.*/ #DataQuery Paths
632
632
  case match_string
633
633
  when /^GET::200::\/query\/jobs\/([a-zA-Z0-9\-_]*)$/ #Get DQ job
634
- if (body.dig('data', "errorMessage").present? || body.dig('data', "queryStatus") == "failed") #&&
634
+ if body.dig('data', "errorCode") == "LINK_10000005"
635
+ raise ZuoraAPI::Exceptions::ZuoraAPITemporaryError.new(body.dig('data', "errorMessage"), response)
636
+ elsif (body.dig('data', "errorMessage").present? || body.dig('data', "queryStatus") == "failed")
635
637
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new(body.dig('data', "errorMessage"), response)
636
638
  end
637
639
  when /^GET::404::\/query\/jobs\/([a-zA-Z0-9\-_]*)$/ #Get DQ job not found
@@ -703,6 +705,11 @@ module ZuoraAPI
703
705
 
704
706
  #Internal Server Error
705
707
  if codes_array.map{|code| code.to_s.slice(6,7).to_i}.include?(60)
708
+ if messages_array.uniq.size == 1
709
+ if messages_array.first.match(/^There is an invoice pending tax.*|^The Zuora GetTax call to Avalara.*|^The tax calculation call to Zuora Connect returned the following error: Status Code: 4.*/)
710
+ raise ZuoraAPI::Exceptions::ZuoraAPIError.new(messages_array.first, response)
711
+ end
712
+ end
706
713
  raise ZuoraAPI::Exceptions::ZuoraAPIInternalServerError.new("#{messages_array.join(', ')}", response)
707
714
  end
708
715
 
@@ -723,10 +730,11 @@ module ZuoraAPI
723
730
 
724
731
  if body["Errors"].present? || body["errors"].present?
725
732
  codes, messages = [[],[]]
726
- body.fetch("Errors", []).select { |obj| messages.push(obj["Message"]); codes.push(obj["Code"]) }
727
- body.fetch("errors", []).select { |obj| messages.push(obj["Message"]); codes.push(obj["Code"]) }
733
+ body.fetch("Errors", []).each { |obj| messages.push(obj["Message"]); messages.push(obj["title"]); codes.push(obj["Code"]); codes.push(obj["code"]) }
734
+ body.fetch("errors", []).each { |obj| messages.push(obj["Message"]); messages.push(obj["title"]); codes.push(obj["Code"]); codes.push(obj["code"]) }
735
+ codes, messages = [codes.uniq.compact, messages.uniq.compact]
728
736
  if codes.size > 0
729
- if codes.uniq.size == 1
737
+ if codes.size == 1
730
738
  raise_errors_helper(error: codes.first, message: messages.first, response: response, errors: messages)
731
739
  else
732
740
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{messages.join(", ")}", response, messages)
@@ -823,7 +831,7 @@ module ZuoraAPI
823
831
  raise ZuoraAPI::Exceptions::ZuoraAPIInternalServerError.new(message, response, errors, success)
824
832
  end
825
833
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new(message, response, errors, success)
826
- when /.*TEMPORARY_ERROR/
834
+ when /.*TEMPORARY_ERROR/, /.*TRANSACTION_TIMEOUT/
827
835
  raise ZuoraAPI::Exceptions::ZuoraAPITemporaryError.new(message, response, errors, success)
828
836
  when /.*INVALID_VALUE/
829
837
  if message.include?("data integrity violation")
@@ -835,12 +843,12 @@ module ZuoraAPI
835
843
  raise ZuoraAPI::Exceptions::ZuoraAPIUnkownError.new(message, response, errors, success)
836
844
  end
837
845
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new(message, response, errors, success)
838
- when /INVALID_ID/, /MAX_RECORDS_EXCEEDED/, /INVALID_FIELD/, /MALFORMED_QUERY/, /NO_PERMISSION/, /PDF_QUERY_ERROR/, /MISSING_REQUIRED_VALUE/, /INVALID_TYPE/, /TRANSACTION_FAILED/, /API_DISABLED/, /CANNOT_DELETE/, /ACCOUNTING_PERIOD_CLOSED/
846
+ when /invalid/, /INVALID_ID/, /MAX_RECORDS_EXCEEDED/, /INVALID_FIELD/, /MALFORMED_QUERY/, /NO_PERMISSION/, /PDF_QUERY_ERROR/, /MISSING_REQUIRED_VALUE/, /INVALID_TYPE/, /TRANSACTION_FAILED/, /API_DISABLED/, /CANNOT_DELETE/, /ACCOUNTING_PERIOD_CLOSED/
839
847
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new(message, response, errors, success)
840
848
  when /.*UNEXPECTED_ERROR/
841
849
  raise ZuoraAPI::Exceptions::ZuoraUnexpectedError.new(message, response, errors, success)
842
850
  when /.*soapenv:Server.*/
843
- if /Invalid value.*for type|Id is invalid/.match(message).present?
851
+ if /^Invalid value.*for type.*|^Id is invalid/.match(message).present?
844
852
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new(message, response, errors, success)
845
853
  end
846
854
  raise ZuoraAPI::Exceptions::ZuoraAPIInternalServerError.new(message, response, errors, success)
@@ -100,10 +100,15 @@ module ZuoraAPI
100
100
  rescue *(CONNECTION_EXCEPTIONS + CONNECTION_READ_EXCEPTIONS) => ex
101
101
  if !tries.zero?
102
102
  tries -= 1
103
- Rails.logger.info {"#{ex.class} Timed out will retry after 5 seconds"}
104
103
  sleep(self.timeout_sleep)
105
104
  retry
106
105
  else
106
+ if Rails.logger.class.to_s == "Ougai::Logger"
107
+ Rails.logger.error("BasicLogin - Timed out will retry after #{self.timeout_sleep} seconds", ex)
108
+ else
109
+ Rails.logger.error("BasicLogin - #{ex.class} Timed out will retry after #{self.timeout_sleep} seconds")
110
+ end
111
+
107
112
  self.current_error = "Request timed out. Try again"
108
113
  self.status = 'Timeout'
109
114
  return self.status
@@ -62,10 +62,14 @@ module ZuoraAPI
62
62
  rescue *(CONNECTION_EXCEPTIONS + CONNECTION_READ_EXCEPTIONS) => ex
63
63
  if !tries.zero?
64
64
  tries -= 1
65
- Rails.logger.info {"#{ex.class} Timed out will retry after 5 seconds"}
66
65
  sleep(self.timeout_sleep)
67
66
  retry
68
67
  else
68
+ if Rails.logger.class.to_s == "Ougai::Logger"
69
+ Rails.logger.error("OAuthLogin - Timed out will retry after #{self.timeout_sleep} seconds", ex)
70
+ else
71
+ Rails.logger.error("OAuthLogin - #{ex.class} Timed out will retry after #{self.timeout_sleep} seconds")
72
+ end
69
73
  self.current_error = "Request timed out. Try again"
70
74
  self.status = 'Timeout'
71
75
  return self.status
@@ -120,10 +124,14 @@ module ZuoraAPI
120
124
  rescue *(CONNECTION_EXCEPTIONS + CONNECTION_READ_EXCEPTIONS) => ex
121
125
  if !tries.zero?
122
126
  tries -= 1
123
- Rails.logger.info {"#{ex.class} Timed out will retry after 5 seconds"}
124
127
  sleep(self.timeout_sleep)
125
128
  retry
126
129
  else
130
+ if Rails.logger.class.to_s == "Ougai::Logger"
131
+ Rails.logger.error("OAuthLogin - Timed out will retry after #{self.timeout_sleep} seconds", ex)
132
+ else
133
+ Rails.logger.error("OAuthLogin - #{ex.class} Timed out will retry after #{self.timeout_sleep} seconds")
134
+ end
127
135
  self.current_error = "Invalid login, please check client ID and Client Secret or URL endpoint"
128
136
  self.status = 'Timeout'
129
137
  return self.status
@@ -1,3 +1,3 @@
1
1
  module ZuoraAPI
2
- VERSION = "1.7.48"
2
+ VERSION = "1.7.49"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuora_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.48
4
+ version: 1.7.49
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zuora Strategic Solutions Group
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-21 00:00:00.000000000 Z
11
+ date: 2020-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler