zuora_api 1.4.12b → 1.4.12

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: 770c633a809034a9cf6b3ffad145e4915a5081bd
4
- data.tar.gz: 98a679cd09831b911c32228915f6d8e038d43cd0
3
+ metadata.gz: ebc4bb86fbbf7590bc62e08d4f0a0159e9685d1c
4
+ data.tar.gz: 10c3a81d25f0cfd3503a4ee1ae0661249ddf8b48
5
5
  SHA512:
6
- metadata.gz: a892d7463a1bfb08da2309a72ea39500d95bc75d60a4405af6060521a7d72db3570403f93d77707c72aa73f076a80b67d9520e474256377f106987e3ef225560
7
- data.tar.gz: b6a230a53b2335a17dce756a77575ecc88225d8fd6f115a62f39c5ff38f6a10d96f9eaaf5765fed58b39a1f5cac45d2d3c179343f88cbb9fecca702f7d08da3a
6
+ metadata.gz: 21e52ba82573b4d98dd54417145b081488c3f8d7a3b0e4cb2fd0e92bbfd624652bbec24b165bb3281e52d505d9515ef24d89448d2a588aa41d0ea0005ccd54e5
7
+ data.tar.gz: f1dd71d072f2dea943722cf9fbc6bad92a8f536a2a02a479a03a340fa8e9111eee5c5761cf99a54f085bd9b2d77f49571ac85762b180358eab9bdf9c5e1106eb
data/.gitlab-ci.yml CHANGED
@@ -48,16 +48,3 @@ rubygems-deploy:
48
48
  - gem push $version
49
49
  only:
50
50
  - master
51
-
52
- rubygems-deploy:
53
- stage: deploy
54
- allow_failure: false
55
- when: manual
56
- script:
57
- - bundle install
58
- - gem install rake
59
- - version=$(rake install | grep -o 'pkg/zuora_api-.*gem')
60
- - curl -u $USERNAME:$PASSWORD https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
61
- - gem push $version
62
- only:
63
- - staging
data/lib/zuora_api.rb CHANGED
@@ -2,7 +2,6 @@ require 'rails'
2
2
  require "zuora_api/login"
3
3
  require 'zuora_api/exceptions'
4
4
  require "insights_api/login"
5
- require "zuora_api/metrics_helper"
6
5
  module ZuoraAPI
7
6
  # Your code goes here...
8
7
  end
@@ -1,12 +1,10 @@
1
1
  require "httparty"
2
2
  require "nokogiri"
3
- require "uri"
4
-
5
3
  module ZuoraAPI
6
4
  class Login
7
5
  ENVIRONMENTS = [SANDBOX = 'Sandbox', PRODUCTION = 'Production', PREFORMANCE = 'Preformance', SERVICES = 'Services', UNKNOWN = 'Unknown' ]
8
6
  REGIONS = [EU = 'EU', US = 'US' ]
9
- XML_SAVE_OPTIONS = Nokogiri::XML::Node::SaveOptions::AS_XML | Nokogiri::XML::Node::SaveOptions::NO_DECLARATION
7
+ XML_SAVE_OPTIONS = Nokogiri::XML::Node::SaveOptions::AS_XML | Nokogiri::XML::Node::SaveOptions::NO_DECLARATION
10
8
  attr_accessor :username, :password, :region,:url, :wsdl_number, :current_session, :environment, :status, :errors, :current_error, :user_info, :tenant_id, :tenant_name, :entity_id, :timeout_sleep
11
9
 
12
10
  def initialize(username: nil, password: nil, status: nil, url: nil, entity_id: nil, session: nil, **keyword_args)
@@ -43,6 +41,7 @@ module ZuoraAPI
43
41
  }
44
42
  end
45
43
 
44
+
46
45
  def update_environment
47
46
  if !self.url.blank?
48
47
  env_path = self.url.split('https://').last.split('.zuora.com').first
@@ -115,12 +114,12 @@ module ZuoraAPI
115
114
  end
116
115
  end
117
116
  end
118
-
117
+
119
118
 
120
119
  input_xml = Nokogiri::XML(request.to_xml(:save_with => XML_SAVE_OPTIONS).strip)
121
120
  input_xml.xpath('//ns1:session', 'ns1' =>'http://api.zuora.com/').children.remove
122
121
  Rails.logger.debug('Connect') {"Request SOAP XML: #{input_xml.to_xml(:save_with => XML_SAVE_OPTIONS).strip}"} if debug
123
-
122
+
124
123
  @response_query = HTTParty.post(self.url,:body => request.to_xml(:save_with => XML_SAVE_OPTIONS).strip, :headers => {'Content-Type' => "text/xml; charset=utf-8"}, :timeout => 10)
125
124
  @output_xml = Nokogiri::XML(@response_query.body)
126
125
  Rails.logger.debug('Connect') {"Response SOAP XML: #{@output_xml.to_xml(:save_with => XML_SAVE_OPTIONS).strip}"} if debug
@@ -175,16 +174,16 @@ module ZuoraAPI
175
174
  else
176
175
  #If Session only is used for Gem TODO Depercate
177
176
  if (self.password.blank? && self.current_session.present?)
178
- self.current_session = self.current_session
177
+ self.current_session = self.current_session
179
178
  self.username = @output_xml.xpath('//ns1:Username', 'ns1' =>'http://api.zuora.com/').text if self.username.blank?
180
-
179
+
181
180
  #Username & password combo
182
181
  elsif (self.password.present? && self.username.present?)
183
182
  retrieved_session = @output_xml.xpath('//ns1:Session', 'ns1' =>'http://api.zuora.com/').text
184
183
  raise ZuoraAPI::Exceptions::ZuoraAPISessionError.new("No session found for api call.") if retrieved_session.blank?
185
184
  self.current_session = retrieved_session
186
185
  end
187
-
186
+
188
187
  self.current_error = nil
189
188
  self.status = 'Active'
190
189
  end
@@ -210,9 +209,6 @@ module ZuoraAPI
210
209
 
211
210
  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, timeout_retry: false, timeout: 120,**keyword_args)
212
211
  tries ||= 2
213
- error_type = ""
214
- start_time = Time.now
215
-
216
212
  xml = Nokogiri::XML::Builder.new do |xml|
217
213
  xml['SOAP-ENV'].Envelope('xmlns:SOAP-ENV' => "http://schemas.xmlsoap.org/soap/envelope/",
218
214
  "xmlns:#{ns2}" => "http://object.api.zuora.com/",
@@ -243,15 +239,13 @@ module ZuoraAPI
243
239
  input_xml = Nokogiri::XML(xml.to_xml(:save_with => XML_SAVE_OPTIONS).strip)
244
240
  input_xml.xpath('//ns1:session', 'ns1' =>'http://api.zuora.com/').children.remove
245
241
  Rails.logger.debug('Connect') {"Request SOAP XML: #{input_xml.to_xml(:save_with => XML_SAVE_OPTIONS).strip}"} if debug
246
-
247
242
  response = HTTParty.post(self.url,:body => xml.doc.to_xml(:save_with => XML_SAVE_OPTIONS).strip, :headers => {'Content-Type' => "text/xml; charset=utf-8"}, :timeout => timeout)
248
243
  output_xml = Nokogiri::XML(response.body)
249
244
  Rails.logger.debug('Connect') {"Response SOAP XML: #{output_xml.to_xml(:save_with => XML_SAVE_OPTIONS).strip}"} if debug
250
245
 
251
246
  raise_errors(type: :SOAP, body: output_xml, response: response)
252
-
247
+
253
248
  rescue ZuoraAPI::Exceptions::ZuoraAPISessionError => ex
254
- error_type = "#{ex.class}"
255
249
  if !(tries -= 1).zero? && z_session
256
250
  Rails.logger.debug {"Session Invalid"}
257
251
  self.new_session
@@ -264,14 +258,12 @@ module ZuoraAPI
264
258
  end
265
259
  end
266
260
  rescue ZuoraAPI::Exceptions::ZuoraAPIError, ZuoraAPI::Exceptions::ZuoraAPIRequestLimit, ZuoraAPI::Exceptions::ZuoraAPILockCompetition => ex
267
- error_type = "#{ex.class}"
268
261
  if errors.include?(ex.class)
269
262
  raise ex
270
263
  else
271
264
  return output_xml, input_xml, response
272
265
  end
273
266
  rescue Net::OpenTimeout, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError => ex
274
- error_type = "#{ex.class}"
275
267
  if !(tries -= 1).zero? && timeout_retry
276
268
  Rails.logger.info {"#{ex.class} Timed out will retry after 5 seconds"}
277
269
  sleep(self.timeout_sleep)
@@ -280,21 +272,9 @@ module ZuoraAPI
280
272
  raise ex
281
273
  end
282
274
  rescue => ex
283
- error_type = "#{ex.class}"
284
275
  raise ex
285
276
  else
286
277
  return output_xml, input_xml, response
287
- ensure
288
- # Writing to telegraf
289
- begin
290
- end_time = Time.now
291
- response_time = end_time - start_time
292
- status_code = response.code if response
293
- endpoint_name = url.present? ? URI(url).host : url
294
- ::MetricsHelpers::MetricsHelpers.write_to_telegraf("response_time": response_time, "status_code": status_code, "endpoint_name": endpoint_name, "direction": "outbound", "error_type": error_type, "function_name": "#{self.class}##{__method__}", "method_name": "POST")
295
- rescue
296
- Rails.logger.info {"Failed to send metric"}
297
- end
298
278
  end
299
279
 
300
280
  def raise_errors(type: :SOAP, body: nil, response: nil)
@@ -307,7 +287,7 @@ module ZuoraAPI
307
287
  error = body.xpath('//faultcode').text
308
288
  message = body.xpath('//faultstring').text
309
289
  end
310
-
290
+
311
291
  if error.blank? || message.blank?
312
292
  error = body.xpath('//ns1:Code', 'ns1' =>'http://api.zuora.com/').text
313
293
  message = body.xpath('//ns1:Message', 'ns1' =>'http://api.zuora.com/').text
@@ -318,9 +298,9 @@ module ZuoraAPI
318
298
  error = []
319
299
  success = []
320
300
  body.xpath('//ns1:result', 'ns1' =>'http://api.zuora.com/').each_with_index do |call, object_index|
321
-
301
+
322
302
  if call.xpath('./ns1:Success', 'ns1' =>'http://api.zuora.com/').text == 'false'
323
- message = "#{call.xpath('./*/ns1:Code', 'ns1' =>'http://api.zuora.com/').text}::#{call.xpath('./*/ns1:Message', 'ns1' =>'http://api.zuora.com/').text}"
303
+ message = "#{call.xpath('./*/ns1:Code', 'ns1' =>'http://api.zuora.com/').text}::#{call.xpath('./*/ns1:Message', 'ns1' =>'http://api.zuora.com/').text}"
324
304
  error.push(message)
325
305
  else
326
306
  success.push(call.xpath('./ns1:Id', 'ns1' =>'http://api.zuora.com/').text)
@@ -352,7 +332,7 @@ module ZuoraAPI
352
332
  raise ZuoraAPI::Exceptions::ZuoraAPIRequestLimit.new("The total number of concurrent requests has exceeded the limit allowed by the system. Please resubmit your request later.", body, response.code)
353
333
  end
354
334
 
355
- when :JSON
335
+ when :JSON
356
336
  if body.class == Hash && (!body["success"] || !body["Success"] || response.code != 200)
357
337
  messages_array = (body["reasons"] || []).map {|error| error['message']}.compact
358
338
  codes_array = (body["reasons"] || []).map {|error| error['code']}.compact
@@ -378,7 +358,7 @@ module ZuoraAPI
378
358
  end
379
359
 
380
360
  #All Errors catch
381
- if codes_array.size > 0
361
+ if codes_array.size > 0
382
362
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{messages_array.join(', ')}", body, response.code)
383
363
  end
384
364
 
@@ -395,7 +375,7 @@ module ZuoraAPI
395
375
  raise ZuoraAPI::Exceptions::ZuoraAPISessionError.new("#{body["faultcode"]}::#{body["faultstring"]}", body, response.code)
396
376
  else
397
377
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{body["faultcode"]}::#{body["faultstring"]}", body, response.code)
398
- end
378
+ end
399
379
  end
400
380
 
401
381
  if body["Errors"].present? || body["errors"].present?
@@ -407,14 +387,14 @@ module ZuoraAPI
407
387
  end
408
388
  end
409
389
  end
410
-
390
+
411
391
  #Zuora REST Actions error (Create, Update, Delete)
412
392
  if body.class == Array
413
393
  all_errors = body.select {|obj| !obj['Success'] || !obj['success'] }.map {|obj| obj['Errors'] || obj['errors'] }.compact
414
394
  all_success = body.select {|obj| obj['Success'] || obj['success']}.compact
415
395
 
416
- if all_errors.size > 0
417
- raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{all_errors.flatten.group_by {|error| error['Message']}.keys.uniq.join(' ')}", body, response.code, all_errors, all_success )
396
+ if all_errors.size > 0
397
+ raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{all_errors.flatten.group_by {|error| error['Message']}.keys.uniq.join(' ')}", body, response.code, all_errors, all_success )
418
398
  end
419
399
  end
420
400
 
@@ -422,7 +402,7 @@ module ZuoraAPI
422
402
  if response.code != 200
423
403
  if response.code == 429
424
404
  raise ZuoraAPI::Exceptions::ZuoraAPIRequestLimit.new("The total number of concurrent requests has exceeded the limit allowed by the system. Please resubmit your request later.", body, response.code)
425
- else
405
+ else
426
406
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new("#{response.message}", body, response.code)
427
407
  end
428
408
  end
@@ -469,16 +449,11 @@ module ZuoraAPI
469
449
 
470
450
  def describe_call(object = nil)
471
451
  tries ||= 2
472
-
473
- error_type = ""
474
- start_time = Time.now
475
-
476
452
  self.get_session
477
453
  base = self.url.include?(".com") ? self.url.split(".com")[0].concat(".com") : self.url.split(".eu")[0].concat(".eu")
478
454
  url = object ? "#{base}/apps/api/describe/#{object}" : "#{base}/apps/api/describe/"
479
455
  headers = !self.entity_id.blank? ? {"entityId" => self.entity_id, 'Content-Type' => "text/xml; charset=utf-8"} : {'Content-Type' => "text/xml; charset=utf-8"}
480
- response = HTTParty.get(url, :headers => headers , basic_auth: {:username => self.username, :password => self.password}, :timeout => 1)
481
-
456
+ response = HTTParty.get(url, :headers => headers , basic_auth: {:username => self.username, :password => self.password}, :timeout => 120)
482
457
  output_xml = Nokogiri::XML(response.body)
483
458
  des_hash = Hash.new
484
459
  if object == nil
@@ -509,7 +484,6 @@ module ZuoraAPI
509
484
  des_hash[:related_objects] = output_xml.xpath(".//related-objects").xpath(".//object").map{ |x| [x.xpath(".//name").text.to_sym, [ [:url, x.attributes["href"].value], [:label, x.xpath(".//name").text ] ].to_h] }.to_h
510
485
  end
511
486
  rescue Net::ReadTimeout, Net::OpenTimeout, Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError => ex
512
- error_type = "#{ex.class}"
513
487
  if !(tries -= 1).zero?
514
488
  Rails.logger.info {"#{ex.class} Timed out will retry after 5 seconds"}
515
489
  sleep(self.timeout_sleep)
@@ -518,32 +492,18 @@ module ZuoraAPI
518
492
  raise ex
519
493
  end
520
494
  rescue => ex
521
- error_type = "#{ex.class}"
522
495
  raise ex
523
496
  else
524
497
  return des_hash
525
- ensure
526
- # Writing to telegraf
527
- begin
528
- end_time = Time.now
529
- response_time = end_time - start_time
530
- status_code = response.code if response
531
- endpoint_name = url.present? ? URI(url).host : url
532
- ::MetricsHelpers::MetricsHelpers.write_to_telegraf("response_time": response_time, "status_code": status_code, "endpoint_name": endpoint_name, "direction": "outbound", "error_type": error_type, "function_name": "#{self.class}##{__method__}", "method_name": "GET")
533
- rescue
534
- Rails.logger.info {"Failed to send metric"}
535
- end
536
498
  end
537
499
 
538
500
  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, timeout_retry: false, timeout: 120, **keyword_args)
539
501
  tries ||= 2
540
502
  headers["entityId"] = self.entity_id if !self.entity_id.blank?
541
503
  raise "Method not supported, supported methods include: :get, :post, :put, :delete, :patch, :head, :options" if ![:get, :post, :put, :delete, :patch, :head, :options].include?(method)
542
-
543
- error_type = ""
544
- start_time = Time.now
545
504
  response = HTTParty::Request.new("Net::HTTP::#{method.to_s.capitalize}".constantize, url, body: body, headers: {'Content-Type' => "application/json; charset=utf-8"}.merge(z_session ? {"Authorization" => "ZSession #{self.get_session}"} : {}).merge(headers), timeout: timeout).perform
546
505
 
506
+ Rails.logger.debug('Connect') {"Response Code: #{response.code}" } if debug
547
507
  begin
548
508
  output_json = JSON.parse(response.body)
549
509
  rescue JSON::ParserError => ex
@@ -554,7 +514,6 @@ module ZuoraAPI
554
514
  raise_errors(type: :JSON, body: output_json, response: response)
555
515
 
556
516
  rescue ZuoraAPI::Exceptions::ZuoraAPISessionError => ex
557
- error_type = "#{ex.class}"
558
517
  if !(tries -= 1).zero? && z_session
559
518
  Rails.logger.debug {"Session Invalid"}
560
519
  self.new_session
@@ -567,14 +526,12 @@ module ZuoraAPI
567
526
  end
568
527
  end
569
528
  rescue ZuoraAPI::Exceptions::ZuoraAPIError, ZuoraAPI::Exceptions::ZuoraAPIRequestLimit, ZuoraAPI::Exceptions::ZuoraAPILockCompetition => ex
570
- error_type = "#{ex.class}"
571
529
  if errors.include?(ex.class)
572
530
  raise ex
573
531
  else
574
532
  return [output_json, response]
575
533
  end
576
534
  rescue Net::OpenTimeout, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError => ex
577
- error_type = "#{ex.class}"
578
535
  if !(tries -= 1).zero? && timeout_retry
579
536
  Rails.logger.info {"#{ex.class} Timed out will retry after 5 seconds"}
580
537
  sleep(self.timeout_sleep)
@@ -583,21 +540,9 @@ module ZuoraAPI
583
540
  raise ex
584
541
  end
585
542
  rescue => ex
586
- error_type = "#{ex.class}"
587
543
  raise ex
588
544
  else
589
545
  return [output_json, response]
590
- ensure
591
- # Writing to telegraf
592
- begin
593
- end_time = Time.now
594
- response_time = end_time - start_time
595
- status_code = response.code if response
596
- endpoint_name = url.present? ? URI(url).host : url
597
- ::MetricsHelpers::MetricsHelpers.write_to_telegraf("response_time": response_time, "status_code": status_code, "endpoint_name": endpoint_name, "direction": "outbound", "error_type": error_type, "function_name": "#{self.class}##{__method__}", "method_name": "#{method.upcase}")
598
- rescue
599
- Rails.logger.info {"Failed to send metric"}
600
- end
601
546
  end
602
547
 
603
548
  def update_create_tenant
@@ -653,12 +598,9 @@ module ZuoraAPI
653
598
  require 'fileutils'
654
599
  FileUtils.mkdir_p(file_path) unless File.exists?(file_path)
655
600
 
656
- error_type = ""
657
- start_time = Time.now
658
-
659
601
  begin
660
- status_code = nil
661
602
  uri = URI.parse(url)
603
+
662
604
  http = Net::HTTP.new(uri.host, uri.port)
663
605
  http.read_timeout = timeout #Seconds
664
606
  http.use_ssl = true if uri.scheme.downcase == 'https'
@@ -667,8 +609,6 @@ module ZuoraAPI
667
609
  response_save = nil
668
610
  http.request_get(uri.path, headers) do |response|
669
611
  response_save = response
670
- status_code = response.code if response
671
-
672
612
  case response
673
613
  when Net::HTTPNotFound
674
614
  Rails.logger.fatal("404 - Not Found")
@@ -754,32 +694,18 @@ module ZuoraAPI
754
694
 
755
695
  file_handle.close
756
696
  Rails.logger.info("Filepath: #{file_handle.path} Size: #{File.size(file_handle.path).to_f/1000000} mb")
757
-
697
+
758
698
  return file_handle
759
699
  end
760
700
  end
761
701
  rescue Exception => e
762
- error_type = "#{e.class}"
763
702
  Rails.logger.fatal('GetFile') {"Download Failed: #{response_save} - #{e.class} : #{e.message}"}
764
703
  Rails.logger.fatal('GetFile') {"Download Failed: #{e.backtrace.join("\n")}"}
765
704
  raise
766
- ensure
767
- # Writing to telegraf
768
- begin
769
- end_time = Time.now
770
- response_time = end_time - start_time
771
- status_code = response.code if response
772
- endpoint_name = url.present? ? URI(url).host : url
773
- ::MetricsHelpers::MetricsHelpers.write_to_telegraf("response_time": response_time, "status_code": status_code, "endpoint_name": endpoint_name, "direction": "outbound", "error_type": error_type, "function_name": "#{self.class}##{__method__}", "method_name": "GET")
774
- rescue
775
- Rails.logger.info {"Failed to send metric"}
776
- end
777
705
  end
778
706
  end
779
707
 
780
708
  def getDataSourceExport(query, extract: true, encrypted: false, zip: true)
781
- error_type = ""
782
- start_time = Time.now
783
709
  Rails.logger.info('Export') {"Build export"}
784
710
  Rails.logger.debug('Export query') {"#{query}"}
785
711
  request = Nokogiri::XML::Builder.new do |xml|
@@ -802,23 +728,7 @@ module ZuoraAPI
802
728
  end
803
729
  end
804
730
  end
805
-
806
- begin
807
- response_query = HTTParty.post(self.url, body: request.to_xml(:save_with => XML_SAVE_OPTIONS).strip, headers: {'Content-Type' => "application/json; charset=utf-8"}, :timeout => 120)
808
- rescue => e
809
- error_type = "#{e.class}"
810
- ensure
811
- begin
812
- end_time = Time.now
813
- response_time = end_time - start_time
814
- status_code = response.code if response
815
- endpoint_name = url.present? ? URI(url).host : url
816
- ::MetricsHelpers::MetricsHelpers.write_to_telegraf("response_time": response_time, "status_code": status_code, "endpoint_name": endpoint_name, "direction": "outbound", "error_type": error_type, "function_name": "#{self.class}##{__method__}", "method_name": "POST")
817
- rescue
818
- Rails.logger.info {"Failed to send metric"}
819
- end
820
- end
821
-
731
+ response_query = HTTParty.post(self.url, body: request.to_xml(:save_with => XML_SAVE_OPTIONS).strip, headers: {'Content-Type' => "application/json; charset=utf-8"}, :timeout => 120)
822
732
  output_xml = Nokogiri::XML(response_query.body)
823
733
 
824
734
  raise 'Export Creation Unsuccessful : ' + output_xml.xpath('//ns1:Message', 'ns1' =>'http://api.zuora.com/').text if output_xml.xpath('//ns1:Success', 'ns1' =>'http://api.zuora.com/').text != "true"
@@ -839,35 +749,15 @@ module ZuoraAPI
839
749
  end
840
750
  end
841
751
  result = 'Waiting'
842
-
843
- start_time = Time.now
844
- error_type = ""
845
-
846
752
  while result != "Completed"
847
753
  sleep 3
848
- begin
849
- response_query = HTTParty.post(self.url, body: confirmRequest.to_xml(:save_with => XML_SAVE_OPTIONS).strip, headers: {'Content-Type' => "application/json; charset=utf-8"}, :timeout => 120)
850
- rescue => e
851
- error_type = "#{e.class}"
852
- end
754
+ response_query = HTTParty.post(self.url, body: confirmRequest.to_xml(:save_with => XML_SAVE_OPTIONS).strip, headers: {'Content-Type' => "application/json; charset=utf-8"}, :timeout => 120)
853
755
  output_xml = Nokogiri::XML(response_query.body)
756
+
854
757
  result = output_xml.xpath('//ns2:Status', 'ns2' =>'http://object.api.zuora.com/').text
855
- status_code = response_query.code if response_query
856
758
  raise "Export Creation Unsuccessful : #{output_xml.xpath('//ns1:Message', 'ns1' =>'http://api.zuora.com/').text}" if result.blank? || result == "Failed"
857
759
  end
858
760
 
859
- begin
860
- end_time = Time.now
861
- response_time = end_time - start_time
862
- status_code = response.code if response
863
- endpoint_name = url.present? ? URI(url).host : url
864
- ::MetricsHelpers::MetricsHelpers.write_to_telegraf("response_time": response_time, "status_code": status_code, "endpoint_name": endpoint_name, "direction": "outbound", "error_type": error_type, "function_name": "#{self.class}##{__method__}", "method_name": "POST")
865
- rescue
866
- Rails.logger.info {"Failed to send metric"}
867
- end
868
-
869
-
870
-
871
761
  file_id = output_xml.xpath('//ns2:FileId', 'ns2' =>'http://object.api.zuora.com/').text
872
762
  Rails.logger.info('Export') {'=====> Export finished'}
873
763
  export_file = get_file(:url => self.fileURL(file_id))
@@ -895,7 +785,7 @@ module ZuoraAPI
895
785
  end
896
786
  end
897
787
  if parse
898
- return [] if output_xml.xpath('//ns1:size', 'ns1' =>'http://api.zuora.com/').text == '0'
788
+ return [] if output_xml.xpath('//ns1:size', 'ns1' =>'http://api.zuora.com/').text == '0'
899
789
  data = output_xml.xpath('//ns1:records', 'ns1' =>'http://api.zuora.com/').map {|record| record.children.map {|element| [element.name, element.text]}.to_h}
900
790
  return data
901
791
  else
@@ -904,33 +794,14 @@ module ZuoraAPI
904
794
  end
905
795
 
906
796
  def createJournalRun(call)
907
- error_type = ""
908
- start_time = Time.now
909
-
910
797
  url = rest_endpoint("/journal-runs")
911
798
  uri = URI(url)
912
799
  req = Net::HTTP::Post.new(uri,initheader = {'Content-Type' =>'application/json'})
913
800
  req.basic_auth self.username, self.password
914
801
  req.body = call
915
-
916
- begin
917
- response = Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
918
- http.request req
919
- end
920
- rescue => e
921
- error_type = "#{e.class}"
922
- ensure
923
- begin
924
- end_time = Time.now
925
- response_time = end_time - start_time
926
- status_code = response.code if response
927
- endpoint_name = url.present? ? URI(url).host : url
928
- ::MetricsHelpers::MetricsHelpers.write_to_telegraf("response_time": response_time, "status_code": status_code, "endpoint_name": endpoint_name, "direction": "outbound", "error_type": error_type, "function_name": "#{self.class}##{__method__}", "method_name": "POST")
929
- rescue
930
- Rails.logger.info {"Failed to send metric"}
931
- end
802
+ response = Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
803
+ http.request req
932
804
  end
933
-
934
805
  Rails.logger.debug('Journal Run') {"Response #{response.code} #{response.message}:
935
806
  #{response.body}"}
936
807
 
@@ -943,39 +814,17 @@ module ZuoraAPI
943
814
  Rails.logger.debug('Journal Run') {"Journal Run failed with message #{message}"}
944
815
  return result
945
816
  end
946
-
947
817
  end
948
818
 
949
819
  def checkJRStatus(jrNumber)
950
- error_type = ""
951
-
952
820
  Rails.logger.info('Journal Run') {"Check for completion"}
953
-
954
- start_time = Time.now
955
-
956
821
  url = rest_endpoint("/journal-runs/#{jrNumber}")
957
822
  uri = URI(url)
958
823
  req = Net::HTTP::Get.new(uri,initheader = {'Content-Type' =>'application/json'})
959
824
  req.basic_auth self.username, self.password
960
-
961
- begin
962
- response = Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
963
- http.request req
964
- end
965
- rescue => e
966
- error_type = "#{e.class}"
967
- ensure
968
- begin
969
- end_time = Time.now
970
- response_time = end_time - start_time
971
- status_code = response.code if response
972
- endpoint_name = url.present? ? URI(url).host : url
973
- ::MetricsHelpers::MetricsHelpers.write_to_telegraf("response_time": response_time, "status_code": status_code, "endpoint_name": endpoint_name, "direction": "outbound", "error_type": error_type, "function_name": "#{self.class}##{__method__}", "method_name": "GET")
974
- rescue
975
- Rails.logger.info {"Failed to send metric"}
976
- end
825
+ response = Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
826
+ http.request req
977
827
  end
978
-
979
828
  result = JSON.parse(response.body)
980
829
 
981
830
  if result["success"]
@@ -1,3 +1,3 @@
1
1
  module ZuoraAPI
2
- VERSION = "1.4.12b"
2
+ VERSION = "1.4.12"
3
3
  end
data/zuora_api.gemspec CHANGED
@@ -27,5 +27,4 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency("httparty")
28
28
  spec.add_dependency("rubyzip")
29
29
  spec.add_dependency("railties", ">= 4.1.0", "< 5.1")
30
- spec.add_dependency('telegraf', '~> 0.4.0') # Add dependency for telegraf
31
30
  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.4.12b
4
+ version: 1.4.12
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: 2018-08-08 00:00:00.000000000 Z
11
+ date: 2018-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -142,20 +142,6 @@ dependencies:
142
142
  - - "<"
143
143
  - !ruby/object:Gem::Version
144
144
  version: '5.1'
145
- - !ruby/object:Gem::Dependency
146
- name: telegraf
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: 0.4.0
152
- type: :runtime
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: 0.4.0
159
145
  description: Gem that provides easy integration to Zuora
160
146
  email:
161
147
  - connect@zuora.com
@@ -177,7 +163,6 @@ files:
177
163
  - lib/zuora_api.rb
178
164
  - lib/zuora_api/exceptions.rb
179
165
  - lib/zuora_api/login.rb
180
- - lib/zuora_api/metrics_helper.rb
181
166
  - lib/zuora_api/version.rb
182
167
  - zuora_api.gemspec
183
168
  homepage: https://connect.zuora.com
@@ -194,9 +179,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
194
179
  version: '0'
195
180
  required_rubygems_version: !ruby/object:Gem::Requirement
196
181
  requirements:
197
- - - ">"
182
+ - - ">="
198
183
  - !ruby/object:Gem::Version
199
- version: 1.3.1
184
+ version: '0'
200
185
  requirements: []
201
186
  rubyforge_project:
202
187
  rubygems_version: 2.6.8
@@ -1,12 +0,0 @@
1
- module MetricsHelpers
2
-
3
- class MetricsHelpers
4
- def self.write_to_telegraf(response_time: nil, status_code: nil, endpoint_name: nil, direction: nil, error_type: nil, function_name: nil, method_name: nil)
5
- if Gem.loaded_specs.has_key?('zuora_connect') && defined?(::ZuoraConnect::AppInstance.write_to_telegraf)
6
- Thread.current[:appinstance].present? ? app_instance = Thread.current[:appinstance].id : app_instance = 0
7
- ZuoraConnect::AppInstanceBase.write_to_telegraf("response_time": response_time, "status_code": status_code, "endpoint_name": endpoint_name, "direction": "outbound", "error_type": error_type, "app_instance": app_instance, "function_name": function_name, "method_name": method_name)
8
- end
9
- end
10
- end
11
-
12
- end