zuora_api 1.7.48 → 1.7.49

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: 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