zuora_api 1.3.9991 → 1.3.9992

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
  SHA1:
3
- metadata.gz: 4b5c4afd4b1f7a1f539bd7234adb3bb044504d79
4
- data.tar.gz: 7e56cec61a7a04764005a33dc76f5848900b5581
3
+ metadata.gz: 1545862494cd38e964941c2afedc76412969c3c2
4
+ data.tar.gz: efacf4819c5b3a4ea3a30a44b46ad7c4a392987f
5
5
  SHA512:
6
- metadata.gz: 9d5571fd173d6e273547d161716ddd9953213f760e5ed1192fdf638c7f563224028e5698cdd5b40f2784f844daa47beb4bfdc50867eba9be96c9a80a1602b2f9
7
- data.tar.gz: fb28ee7c99c3b172896df8cc8f5fdc013dade319395519a6d9eba1641ed2a500f6ec991035f8d449a8dc48437e419abf40c13dc3d896079cd794df231a125f7c
6
+ metadata.gz: ecf0ec7e8ea922b7ef92c07030729e0d93b82bb031f8cbc6caa6c11b226ce853d5217a54ef20aa5ac84c8433351959fd450b0d8003b30fb7c93f4b68d3412c49
7
+ data.tar.gz: 466c4df3142e028f2173de67094c1f3a5182228b7e65fa38605d4b0ac50ef918fb3a923695ae3b944d3ec81412a1bedfcdbd660b03916e76d0468b8582020748
@@ -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
- raise ZuoraAPI::Exceptions::ZuoraAPISessionError.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 == "INVALID_SESSION")
227
- raise ZuoraAPI::Exceptions::ZuoraAPIRequestLimit.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 == "REQUEST_EXCEEDED_LIMIT")
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 debug
234
+ if errors.include?(ex.class)
239
235
  raise ex
240
236
  else
241
- return [output_xml, response]
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 debug
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
- #Zuora Regular REST API Unauthorized
342
- raise ZuoraAPI::Exceptions::ZuoraAPISessionError.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"] == 90000011 && response.code == 401)
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 debug
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 debug
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
@@ -1,3 +1,3 @@
1
1
  module ZuoraAPI
2
- VERSION = "1.3.9991"
2
+ VERSION = "1.3.9992"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuora_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.9991
4
+ version: 1.3.9992
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zuora Strategic Solutions Group