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