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 +4 -4
- data/lib/zuora_api/exceptions.rb +31 -27
- data/lib/zuora_api/login.rb +15 -7
- data/lib/zuora_api/logins/basic.rb +6 -1
- data/lib/zuora_api/logins/oauth.rb +10 -2
- data/lib/zuora_api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae66e3f70b9d98bc1ad9b8d6bd08c3ac43bea36234db0af1efe428a129614fee
|
4
|
+
data.tar.gz: 812c7ab8f8133b8754ff7646169e3466b907099f707d394b9d6ea54e2073db66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2981b12a15b6195df7115f769ffb71ebe4a84e5af2d305ab8396b0d497088054dec8be21cb1ae7bc51f731ea6856edcaef83caa3cdc804d9d74f1a8ff1295b74
|
7
|
+
data.tar.gz: 85a4af2320a8f70115b35ab322fa844c0d72ac97c603339b598086c6c2f088ceebf8276157f08a7efc1511e03a083a129df128ed1994566f03133bacd2266ef7
|
data/lib/zuora_api/exceptions.rb
CHANGED
@@ -1,6 +1,25 @@
|
|
1
1
|
module ZuoraAPI
|
2
2
|
module Exceptions
|
3
|
-
class Error < StandardError;
|
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
|
data/lib/zuora_api/login.rb
CHANGED
@@ -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
|
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", []).
|
727
|
-
body.fetch("errors", []).
|
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.
|
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
|
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
|
data/lib/zuora_api/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2020-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|