zuora_api 1.3.9991 → 1.3.9992
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/zuora_api/login.rb +48 -27
- data/lib/zuora_api/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1545862494cd38e964941c2afedc76412969c3c2
|
4
|
+
data.tar.gz: efacf4819c5b3a4ea3a30a44b46ad7c4a392987f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecf0ec7e8ea922b7ef92c07030729e0d93b82bb031f8cbc6caa6c11b226ce853d5217a54ef20aa5ac84c8433351959fd450b0d8003b30fb7c93f4b68d3412c49
|
7
|
+
data.tar.gz: 466c4df3142e028f2173de67094c1f3a5182228b7e65fa38605d4b0ac50ef918fb3a923695ae3b944d3ec81412a1bedfcdbd660b03916e76d0468b8582020748
|
data/lib/zuora_api/login.rb
CHANGED
@@ -187,7 +187,7 @@ module ZuoraAPI
|
|
187
187
|
return self.current_session
|
188
188
|
end
|
189
189
|
|
190
|
-
def soap_call(ns1: 'ns1', ns2: 'ns2', batch_size: nil, single_transaction: false,debug: true, z_session: true, **keyword_args)
|
190
|
+
def soap_call(ns1: 'ns1', ns2: 'ns2', batch_size: nil, single_transaction: false, debug: true, errors: [ZuoraAPI::Exceptions::ZuoraAPISessionError, ZuoraAPI::Exceptions::ZuoraAPIError, ZuoraAPI::Exceptions::ZuoraAPIRequestLimit, ZuoraAPI::Exceptions::ZuoraAPILockCompetition], z_session: true, **keyword_args)
|
191
191
|
tries ||= 2
|
192
192
|
xml = Nokogiri::XML::Builder.new do |xml|
|
193
193
|
xml['SOAP-ENV'].Envelope('xmlns:SOAP-ENV' => "http://schemas.xmlsoap.org/soap/envelope/",
|
@@ -223,26 +223,22 @@ module ZuoraAPI
|
|
223
223
|
output_xml = Nokogiri::XML(response.body)
|
224
224
|
Rails.logger.debug('Connect') {"Response SOAP XML: #{output_xml.to_xml(:save_with => Nokogiri::XML::Node::SaveOptions::AS_XML | Nokogiri::XML::Node::SaveOptions::NO_DECLARATION).strip}"} if debug
|
225
225
|
|
226
|
-
|
227
|
-
|
228
|
-
raise ZuoraAPI::Exceptions::ZuoraAPILockCompetition.new("#{output_xml.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text}::#{output_xml.xpath('//fns:FaultMessage', 'fns' =>'http://fault.api.zuora.com/').text}") if (!output_xml.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text.blank? && output_xml.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text == "LOCK_COMPETITION")
|
229
|
-
|
230
|
-
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{output_xml.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text}::#{output_xml.xpath('//fns:FaultMessage', 'fns' =>'http://fault.api.zuora.com/').text}") if !output_xml.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text.blank?
|
231
|
-
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{output_xml.xpath('//faultcode').text}::#{output_xml.xpath('//faultstring').text}") if !output_xml.xpath('//faultcode').text.blank?
|
226
|
+
raise_errors(type: :SOAP, body: output_xml, response: response)
|
227
|
+
|
232
228
|
rescue ZuoraAPI::Exceptions::ZuoraAPISessionError => ex
|
233
229
|
if !(tries -= 1).zero? && z_session
|
234
230
|
Rails.logger.debug {"Session Invalid"}
|
235
231
|
self.new_session
|
236
232
|
retry
|
237
233
|
else
|
238
|
-
if
|
234
|
+
if errors.include?(ex.class)
|
239
235
|
raise ex
|
240
236
|
else
|
241
|
-
return [output_xml,
|
237
|
+
return [output_xml, input_xml]
|
242
238
|
end
|
243
239
|
end
|
244
240
|
rescue ZuoraAPI::Exceptions::ZuoraAPIError, ZuoraAPI::Exceptions::ZuoraAPIRequestLimit, ZuoraAPI::Exceptions::ZuoraAPILockCompetition => ex
|
245
|
-
if
|
241
|
+
if errors.include?(ex.class)
|
246
242
|
raise ex
|
247
243
|
else
|
248
244
|
return [output_xml, input_xml]
|
@@ -253,6 +249,41 @@ module ZuoraAPI
|
|
253
249
|
return [output_xml, input_xml]
|
254
250
|
end
|
255
251
|
|
252
|
+
def raise_errors(type: :SOAP, body: nil, response: nil)
|
253
|
+
case type
|
254
|
+
when :SOAP
|
255
|
+
raise ZuoraAPI::Exceptions::ZuoraAPISessionError.new("#{body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text}::#{body.xpath('//fns:FaultMessage', 'fns' =>'http://fault.api.zuora.com/').text}") if (!body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text.blank? && body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text == "INVALID_SESSION")
|
256
|
+
|
257
|
+
raise ZuoraAPI::Exceptions::ZuoraAPIRequestLimit.new("#{body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text}::#{body.xpath('//fns:FaultMessage', 'fns' =>'http://fault.api.zuora.com/').text}") if (!body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text.blank? && body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text == "REQUEST_EXCEEDED_LIMIT")
|
258
|
+
raise ZuoraAPI::Exceptions::ZuoraAPIRequestLimit.new("#{body.xpath('//ns1:Code', 'ns1' =>'http://api.zuora.com/').text}::#{body.xpath('//ns1:Message', 'ns1' =>'http://api.zuora.com/').text}") if (!body.xpath('//ns1:Code', 'ns1' =>'http://api.zuora.com/').text.blank? && body.xpath('//ns1:Code', 'ns1' =>'http://api.zuora.com/').text == "REQUEST_EXCEEDED_LIMIT")
|
259
|
+
|
260
|
+
raise ZuoraAPI::Exceptions::ZuoraAPILockCompetition.new("#{body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text}::#{body.xpath('//fns:FaultMessage', 'fns' =>'http://fault.api.zuora.com/').text}") if (!body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text.blank? && body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text == "LOCK_COMPETITION")
|
261
|
+
raise ZuoraAPI::Exceptions::ZuoraAPILockCompetition.new("#{body.xpath('//ns1:Code', 'ns1' =>'http://api.zuora.com/').text}::#{body.xpath('//ns1:Message', 'ns1' =>'http://api.zuora.com/').text}") if (!body.xpath('//ns1:Code', 'ns1' =>'http://api.zuora.com/').text.blank? && body.xpath('//ns1:Code', 'ns1' =>'http://api.zuora.com/').text == "LOCK_COMPETITION")
|
262
|
+
|
263
|
+
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text}::#{body.xpath('//fns:FaultMessage', 'fns' =>'http://fault.api.zuora.com/').text}") if !body.xpath('//fns:FaultCode', 'fns' =>'http://fault.api.zuora.com/').text.blank?
|
264
|
+
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{body.xpath('//faultcode').text}::#{body.xpath('//faultstring').text}") if !body.xpath('//faultcode').text.blank?
|
265
|
+
|
266
|
+
when :JSON
|
267
|
+
#Zuora Regular REST API Unauthorized
|
268
|
+
raise ZuoraAPI::Exceptions::ZuoraAPISessionError.new("#{body["reasons"][0]["message"]}") if body.class != Array && (!body["success"] && !body["reasons"].blank? && body["reasons"] == Array && body["reasons"][0]["code"] == 90000011 && response.code == 401)
|
269
|
+
#Zuora AQuA Unauthorized
|
270
|
+
raise ZuoraAPI::Exceptions::ZuoraAPISessionError.new("Unauthorized") if response.code == 401
|
271
|
+
|
272
|
+
#Zuora REST API Limit Errors
|
273
|
+
raise ZuoraAPI::Exceptions::ZuoraAPIRequestLimit.new("#{body["reasons"][0]["message"]}") if body.class != Array && (!body["success"] && !body["reasons"].blank? && body["reasons"] == Array && body["reasons"][0]["code"] == 50000070 && response.code == 429)
|
274
|
+
|
275
|
+
raise ZuoraAPI::Exceptions::ZuoraAPILockCompetition.new("#{body["reasons"][0]["message"]}") if (!body["success"] && !body["reasons"].blank? && body["reasons"] == Array && body["reasons"][0]["code"] == 53200050)
|
276
|
+
|
277
|
+
#Zuora REST Query Errors
|
278
|
+
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{body["faultcode"]}::#{body["faultstring"]}") if body.class != Array && !body["faultcode"].blank?
|
279
|
+
#Zuora REST actions error
|
280
|
+
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{body["Errors"][0]["Code"]}::#{body["Errors"][0]["Message"]}") if body.class != Array && !body["Success"] && body["Errors"]
|
281
|
+
#Zuora All Other API Errors
|
282
|
+
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{response.message}") if response.code != 200
|
283
|
+
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
256
287
|
def aqua_query(queryName: '', query: '', version: '1.2', jobName: 'Aqua',partner: '', project: '')
|
257
288
|
params = {
|
258
289
|
"format" => 'csv',
|
@@ -329,7 +360,7 @@ module ZuoraAPI
|
|
329
360
|
return des_hash
|
330
361
|
end
|
331
362
|
|
332
|
-
def rest_call(method: :get, body: {},headers: {}, url: rest_endpoint("catalog/products?pageSize=4"), debug: true, z_session: true, **keyword_args)
|
363
|
+
def rest_call(method: :get, body: {},headers: {}, url: rest_endpoint("catalog/products?pageSize=4"), debug: true, errors: [ZuoraAPI::Exceptions::ZuoraAPISessionError, ZuoraAPI::Exceptions::ZuoraAPIError, ZuoraAPI::Exceptions::ZuoraAPIRequestLimit, ZuoraAPI::Exceptions::ZuoraAPILockCompetition], z_session: true, **keyword_args)
|
333
364
|
tries ||= 2
|
334
365
|
headers["entityId"] = self.entity_id if !self.entity_id.blank?
|
335
366
|
raise "Method not supported, supported methods include: :get, :post, :put, :delete, :patch, :head, :options" if ![:get, :post, :put, :delete, :patch, :head, :options].include?(method)
|
@@ -338,32 +369,22 @@ module ZuoraAPI
|
|
338
369
|
output_json = JSON.parse(response.body)
|
339
370
|
Rails.logger.debug('Connect') {"Response JSON: #{output_json}"} if debug
|
340
371
|
|
341
|
-
|
342
|
-
|
343
|
-
#Zuora AQuA Unauthorized
|
344
|
-
raise ZuoraAPI::Exceptions::ZuoraAPISessionError.new("Unauthorized") if response.code == 401
|
345
|
-
#Zuora REST API Limit Errors
|
346
|
-
raise ZuoraAPI::Exceptions::ZuoraAPIRequestLimit.new("#{output_json["reasons"][0]["message"]}") if output_json.class != Array && (!output_json["success"] && !output_json["reasons"].blank? && output_json["reasons"] == Array && output_json["reasons"][0]["code"] == 50000070 && response.code == 429)
|
347
|
-
#Zuora REST Query Errors
|
348
|
-
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{output_json["faultcode"]}::#{output_json["faultstring"]}") if output_json.class != Array && !output_json["faultcode"].blank?
|
349
|
-
#Zuora REST actions error
|
350
|
-
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{output_json["Errors"][0]["Code"]}::#{output_json["Errors"][0]["Message"]}") if output_json.class != Array && !output_json["Success"] && output_json["Errors"]
|
351
|
-
#Zuora All Other API Errors
|
352
|
-
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{response.message}") if response.code != 200
|
372
|
+
raise_errors(type: :JSON, body: output_json, response: response)
|
373
|
+
|
353
374
|
rescue ZuoraAPI::Exceptions::ZuoraAPISessionError => ex
|
354
375
|
if !(tries -= 1).zero? && z_session
|
355
376
|
Rails.logger.debug {"Session Invalid"}
|
356
377
|
self.new_session
|
357
378
|
retry
|
358
379
|
else
|
359
|
-
if
|
380
|
+
if errors.include?(ex.class)
|
360
381
|
raise ex
|
361
382
|
else
|
362
383
|
return [output_json, response]
|
363
384
|
end
|
364
385
|
end
|
365
|
-
rescue ZuoraAPI::Exceptions::ZuoraAPIError, ZuoraAPI::Exceptions::ZuoraAPIRequestLimit => ex
|
366
|
-
if
|
386
|
+
rescue ZuoraAPI::Exceptions::ZuoraAPIError, ZuoraAPI::Exceptions::ZuoraAPIRequestLimit, ZuoraAPI::Exceptions::ZuoraAPILockCompetition => ex
|
387
|
+
if errors.include?(ex.class)
|
367
388
|
raise ex
|
368
389
|
else
|
369
390
|
return [output_json, response]
|
@@ -393,7 +414,7 @@ module ZuoraAPI
|
|
393
414
|
while !response["nextPage"].blank?
|
394
415
|
url = self.rest_endpoint(response["nextPage"].split('/v1/').last)
|
395
416
|
Rails.logger.debug("Fetch Catalog URL #{url}")
|
396
|
-
output_json, response = self.rest_call(:debug => false, :url => url)
|
417
|
+
output_json, response = self.rest_call(:debug => false, :url => url, :errors => [ZuoraAPI::Exceptions::ZuoraAPISessionError])
|
397
418
|
if !output_json['success'] =~ (/(true|t|yes|y|1)$/i) || output_json['success'].class != TrueClass
|
398
419
|
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("Error Getting Catalog: #{output_json}")
|
399
420
|
end
|
data/lib/zuora_api/version.rb
CHANGED