chargebee 2.47.0.beta.1 → 2.47.0

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
- SHA256:
3
- metadata.gz: 9ba2e9aa886846370aae3bdc348f1bb5b1aa6fc09f80d1b49724078980c13f6e
4
- data.tar.gz: 6cdeb1bc586bad518cf36f2176fdc1d84a186e88cae3e8761628a8282fd93915
2
+ SHA1:
3
+ metadata.gz: 6faa46d51fb6ea60406a763027cc3b76c7478ce4
4
+ data.tar.gz: 72dc97688118a2b2563c6e1de9a4e41d6ce80986
5
5
  SHA512:
6
- metadata.gz: 9ff62f2371fc2682a0d279dc6457c4da9a5912d3607088dd35d97f34d3e6a9460bdd39b0d5988fdc4808a41ddf3be86c4a71a2b03e944bbd9a93d44b2c28be4c
7
- data.tar.gz: 292df818217334208d83cfe72b0dc118918db9efb6103a889f56f010e32978d70f3eb251393d424240b6efe851a506f1d94b010f0d89231a852f6c4b654911d2
6
+ metadata.gz: e54108ac52fb4bbd9463959f602d5fdbd5655a3e3b38665b7f420a027ed5c90bf30c4bd340ff270caddaa53666148e2b184ddc8e5a9758cf33f2b40cd92206f7
7
+ data.tar.gz: be4ad479e9ea815ea9f803065dcbb3822a352381fc38b8f553006a86f1ca9a76521170b1d2dbfe985864ee9e6ed8a58a3d2d7990e8ce92afb1194c1786969886
data/CHANGELOG.md CHANGED
@@ -1,3 +1,28 @@
1
+ ### v2.47.0 (2024-11-27)
2
+
3
+ #### New Resource:
4
+ * OmnichannelSubscriptionItem has been added.
5
+
6
+ #### New Attribute:
7
+ * resource_version has been added to OmnichannelSubscription.
8
+ * resource_version has been added to OmnichannelTransaction.
9
+ * resource_version has been added to RecordedPurchase.
10
+
11
+ #### New Input Parameters:
12
+ * limit has been added to OmnichannelSubscription#ListRequest.
13
+ * offset has been added to OmnichannelSubscription#ListRequest.
14
+ * customer_id has been added to OmnichannelSubscription#ListRequest.
15
+ * replace_coupon_list has been added to HostedPage#CheckoutExistingRequest.
16
+ * replace_coupon_list has been added to HostedPage#CheckoutExistingForItemsRequest.
17
+ * subscription[po_number] has been added to HostedPage#CheckoutNewForItemsRequest.
18
+
19
+ #### Removed Subresource:
20
+ * OmnichannelSubscriptionItem subresource has been removed from OmnichannelSubscription and is now a standalone resource.
21
+
22
+ #### Deprecated Attribute:
23
+ * metadata has been deprecated from subscription.
24
+
25
+
1
26
  ### v2.46.0 (2024-11-14)
2
27
  * * *
3
28
 
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- chargebee (2.46.0)
4
+ chargebee (2.47.0)
5
5
  cgi (>= 0.1.0, < 1.0.0)
6
6
  json_pure (~> 2.1)
7
+ rest-client (>= 1.8, <= 2.0.2)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
@@ -20,6 +21,10 @@ GEM
20
21
  mime-types-data (3.2022.0105)
21
22
  mocha (1.13.0)
22
23
  netrc (0.11.0)
24
+ rest-client (2.0.2)
25
+ http-cookie (>= 1.0.2, < 2.0)
26
+ mime-types (>= 1.16, < 4.0)
27
+ netrc (~> 0.8)
23
28
  rspec (3.0.0)
24
29
  rspec-core (~> 3.0.0)
25
30
  rspec-expectations (~> 3.0.0)
@@ -38,7 +43,6 @@ GEM
38
43
 
39
44
  PLATFORMS
40
45
  arm64-darwin-21
41
- arm64-darwin-23
42
46
  x86_64-darwin-20
43
47
  x86_64-linux
44
48
 
data/Rakefile CHANGED
@@ -148,16 +148,3 @@ task :validate do
148
148
  exit!
149
149
  end
150
150
  end
151
-
152
- desc "Create tag v#{version} and build and push #{gem_file} to Rubygems for Beta version."
153
- task :release_beta => :build do
154
- unless `git branch` =~ /^\* next$/
155
- puts "You must be on the next branch to release beta!"
156
- exit!
157
- end
158
- sh "git commit --allow-empty -a -m 'Release #{version}'"
159
- sh "git tag v#{version}"
160
- sh "git push origin next"
161
- sh "git push origin v#{version}"
162
- sh "gem push pkg/#{name}-#{version}.gem"
163
- end
data/chargebee.gemspec CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
4
4
  s.rubygems_version = '1.3.5'
5
5
  s.required_ruby_version = '>= 1.9.3'
6
6
  s.name = 'chargebee'
7
- s.version = '2.47.0.beta.1'
8
- s.date = '2024-11-14'
7
+ s.version = '2.47.0'
8
+ s.date = '2024-11-27'
9
9
  s.summary = "Ruby client for Chargebee API."
10
10
  s.description = "Subscription Billing - Simple. Secure. Affordable. More details at www.chargebee.com."
11
11
  s.metadata = {
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.extra_rdoc_files = %w[README.md LICENSE]
24
24
 
25
25
  s.add_dependency('json_pure', '~> 2.1')
26
+ s.add_dependency('rest-client', '>=1.8', '<=2.0.2')
26
27
  s.add_dependency('cgi', '>=0.1.0', '<1.0.0')
27
28
  s.add_development_dependency('rspec', '~> 3.0.0')
28
29
  s.add_development_dependency('mocha')
@@ -88,6 +89,7 @@ Gem::Specification.new do |s|
88
89
  lib/chargebee/models/model.rb
89
90
  lib/chargebee/models/non_subscription.rb
90
91
  lib/chargebee/models/omnichannel_subscription.rb
92
+ lib/chargebee/models/omnichannel_subscription_item.rb
91
93
  lib/chargebee/models/omnichannel_transaction.rb
92
94
  lib/chargebee/models/order.rb
93
95
  lib/chargebee/models/payment_intent.rb
@@ -122,8 +124,8 @@ Gem::Specification.new do |s|
122
124
  lib/chargebee/models/unbilled_charge.rb
123
125
  lib/chargebee/models/usage.rb
124
126
  lib/chargebee/models/virtual_bank_account.rb
125
- lib/chargebee/nativeRequest.rb
126
127
  lib/chargebee/request.rb
128
+ lib/chargebee/rest.rb
127
129
  lib/chargebee/result.rb
128
130
  lib/chargebee/util.rb
129
131
  lib/ssl/ca-certs.crt
@@ -1,11 +1,8 @@
1
1
  module ChargeBee
2
2
  class OmnichannelSubscription < Model
3
3
 
4
- class OmnichannelSubscriptionItem < Model
5
- attr_accessor :id, :id_at_source, :status, :current_term_start, :current_term_end, :expired_at, :expiration_reason, :cancelled_at, :cancellation_reason
6
- end
7
-
8
- attr_accessor :id, :id_at_source, :app_id, :source, :customer_id, :created_at, :omnichannel_subscription_items
4
+ attr_accessor :id, :id_at_source, :app_id, :source, :customer_id, :created_at, :resource_version,
5
+ :omnichannel_subscription_items
9
6
 
10
7
  # OPERATIONS
11
8
  #-----------
@@ -0,0 +1,11 @@
1
+ module ChargeBee
2
+ class OmnichannelSubscriptionItem < Model
3
+
4
+ attr_accessor :id, :item_id_at_source, :status, :current_term_start, :current_term_end, :expired_at,
5
+ :expiration_reason, :cancelled_at, :cancellation_reason, :resource_version
6
+
7
+ # OPERATIONS
8
+ #-----------
9
+
10
+ end # ~OmnichannelSubscriptionItem
11
+ end # ~ChargeBee
@@ -2,7 +2,7 @@ module ChargeBee
2
2
  class OmnichannelTransaction < Model
3
3
 
4
4
  attr_accessor :id, :id_at_source, :app_id, :price_currency, :price_units, :price_nanos, :type,
5
- :transacted_at, :created_at
5
+ :transacted_at, :created_at, :resource_version
6
6
 
7
7
  # OPERATIONS
8
8
  #-----------
@@ -10,7 +10,7 @@ module ChargeBee
10
10
  end
11
11
 
12
12
  attr_accessor :id, :customer_id, :app_id, :source, :status, :omnichannel_transaction_id, :created_at,
13
- :linked_omnichannel_subscriptions, :error_detail
13
+ :resource_version, :linked_omnichannel_subscriptions, :error_detail
14
14
 
15
15
  # OPERATIONS
16
16
  #-----------
@@ -56,9 +56,13 @@ module ChargeBee
56
56
  :offline_payment_method, :channel, :net_term_days, :active_id, :subscription_items, :item_tiers,
57
57
  :charged_items, :due_invoices_count, :due_since, :total_dues, :mrr, :arr, :exchange_rate, :base_currency_code,
58
58
  :addons, :event_based_addons, :charged_event_based_addons, :coupon, :coupons, :shipping_address,
59
- :referral_info, :invoice_notes, :meta_data, :metadata, :deleted, :changes_scheduled_at, :contract_term,
59
+ :referral_info, :invoice_notes, :meta_data, :deleted, :changes_scheduled_at, :contract_term,
60
60
  :cancel_reason_code, :free_period, :free_period_unit, :create_pending_invoices, :auto_close_invoices,
61
- :discounts, :business_entity_id
61
+ :discounts, :business_entity_id, :metadata
62
+ def metadata
63
+ warn "[DEPRECATION] `metadata` is deprecated please use meta_data instead."
64
+ @metadata
65
+ end
62
66
 
63
67
  # OPERATIONS
64
68
  #-----------
@@ -15,7 +15,7 @@ module ChargeBee
15
15
  def self.send(method, url, params={}, env=nil, headers={})
16
16
  env ||= ChargeBee.default_env
17
17
  ser_params = Util.serialize(params)
18
- resp, rheaders = NativeRequest.request(method, url, env, ser_params||={}, headers)
18
+ resp, rheaders = Rest.request(method, url, env, ser_params||={}, headers)
19
19
  if resp.has_key?(:list)
20
20
  ListResult.new(resp[:list], resp[:next_offset], rheaders)
21
21
  else
@@ -0,0 +1,99 @@
1
+ require 'rest_client'
2
+ require 'json'
3
+
4
+ module ChargeBee
5
+ module Rest
6
+
7
+ def self.request(method, url, env, params=nil, headers={})
8
+ raise Error.new('No environment configured.') unless env
9
+ api_key = env.api_key
10
+
11
+ if(ChargeBee.verify_ca_certs?)
12
+ ssl_opts = {
13
+ :verify_ssl => OpenSSL::SSL::VERIFY_PEER,
14
+ :ssl_ca_file => ChargeBee.ca_cert_path
15
+ }
16
+ else
17
+ ssl_opts = {
18
+ :verify_ssl => false
19
+ }
20
+ end
21
+ case method.to_s.downcase.to_sym
22
+ when :get, :head, :delete
23
+ headers = { :params => params }.merge(headers)
24
+ payload = nil
25
+ else
26
+ payload = params
27
+ end
28
+
29
+ user_agent = ChargeBee.user_agent
30
+ headers = {
31
+ "User-Agent" => user_agent,
32
+ :accept => :json,
33
+ "Lang-Version" => RUBY_VERSION,
34
+ "OS-Version" => RUBY_PLATFORM
35
+ }.merge(headers)
36
+ opts = {
37
+ :method => method,
38
+ :url => env.api_url(url),
39
+ :user => api_key,
40
+ :headers => headers,
41
+ :payload => payload,
42
+ :open_timeout => env.connect_timeout,
43
+ :timeout => env.read_timeout
44
+ }.merge(ssl_opts)
45
+
46
+ begin
47
+ response = RestClient::Request.execute(opts)
48
+ rescue RestClient::ExceptionWithResponse => e
49
+ if rcode = e.http_code and rbody = e.http_body
50
+ raise handle_for_error(e, rcode, rbody)
51
+ else
52
+ raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
53
+ end
54
+ rescue Exception => e
55
+ raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
56
+ end
57
+ rheaders = response.headers
58
+ rbody = response.body
59
+ rcode = response.code
60
+ begin
61
+ resp = JSON.parse(rbody)
62
+ rescue Exception => e
63
+ if rbody.include? "503"
64
+ raise Error.new("Sorry, the server is currently unable to handle the request due to a temporary overload or scheduled maintenance. Please retry after sometime. \n type: internal_temporary_error, \n http_status_code: 503, \n error_code: internal_temporary_error,\n content: #{rbody.inspect}",e)
65
+ elsif rbody.include? "504"
66
+ raise Error.new("The server did not receive a timely response from an upstream server, request aborted. If this problem persists, contact us at support@chargebee.com. \n type: gateway_timeout, \n http_status_code: 504, \n error_code: gateway_timeout,\n content: #{rbody.inspect}",e)
67
+ else
68
+ raise Error.new("Sorry, something went wrong when trying to process the request. If this problem persists, contact us at support@chargebee.com. \n type: internal_error, \n http_status_code: 500, \n error_code: internal_error,\n content: #{rbody.inspect}",e)
69
+ end
70
+ end
71
+ resp = Util.symbolize_keys(resp)
72
+ return resp, rheaders
73
+ end
74
+
75
+ def self.handle_for_error(e, rcode=nil, rbody=nil)
76
+ if(rcode == 204)
77
+ raise Error.new("No response returned by the chargebee api. The http status code is #{rcode}")
78
+ end
79
+ begin
80
+ error_obj = JSON.parse(rbody)
81
+ error_obj = Util.symbolize_keys(error_obj)
82
+ rescue Exception => e
83
+ raise Error.new("Error response not in JSON format. The http status code is #{rcode} \n #{rbody.inspect}",e)
84
+ end
85
+ type = error_obj[:type]
86
+ if("payment" == type)
87
+ raise PaymentError.new(rcode, error_obj)
88
+ elsif("operation_failed" == type)
89
+ raise OperationFailedError.new(rcode, error_obj)
90
+ elsif("invalid_request" == type)
91
+ raise InvalidRequestError.new(rcode, error_obj)
92
+ else
93
+ raise APIError.new(rcode, error_obj)
94
+ end
95
+
96
+ end
97
+
98
+ end
99
+ end
@@ -433,8 +433,10 @@ module ChargeBee
433
433
  end
434
434
 
435
435
  def omnichannel_subscription()
436
- omnichannel_subscription = get(:omnichannel_subscription, OmnichannelSubscription,
437
- {:omnichannel_subscription_items => OmnichannelSubscription::OmnichannelSubscriptionItem});
436
+ omnichannel_subscription = get(:omnichannel_subscription, OmnichannelSubscription, {},
437
+ {:omnichannel_subscription_items => OmnichannelSubscriptionItem});
438
+ omnichannel_subscription.init_dependant_list(@response[:omnichannel_subscription], :omnichannel_subscription_items,
439
+ {});
438
440
  return omnichannel_subscription;
439
441
  end
440
442
 
@@ -443,6 +445,11 @@ module ChargeBee
443
445
  return omnichannel_transaction;
444
446
  end
445
447
 
448
+ def omnichannel_subscription_item()
449
+ omnichannel_subscription_item = get(:omnichannel_subscription_item, OmnichannelSubscriptionItem);
450
+ return omnichannel_subscription_item;
451
+ end
452
+
446
453
  def recorded_purchase()
447
454
  recorded_purchase = get(:recorded_purchase, RecordedPurchase,
448
455
  {:linked_omnichannel_subscriptions => RecordedPurchase::LinkedOmnichannelSubscription, :error_detail => RecordedPurchase::ErrorDetail});
data/lib/chargebee.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/chargebee/environment'
2
- require File.dirname(__FILE__) + '/chargebee/nativeRequest'
2
+ require File.dirname(__FILE__) + '/chargebee/rest'
3
3
  require File.dirname(__FILE__) + '/chargebee/util'
4
4
  require File.dirname(__FILE__) + '/chargebee/request'
5
5
  require File.dirname(__FILE__) + '/chargebee/result'
@@ -81,12 +81,12 @@ require File.dirname(__FILE__) + '/chargebee/models/payment_schedule_estimate'
81
81
  require File.dirname(__FILE__) + '/chargebee/models/omnichannel_subscription'
82
82
  require File.dirname(__FILE__) + '/chargebee/models/omnichannel_transaction'
83
83
  require File.dirname(__FILE__) + '/chargebee/models/recorded_purchase'
84
-
84
+ require File.dirname(__FILE__) + '/chargebee/models/omnichannel_subscription_item'
85
85
 
86
86
 
87
87
  module ChargeBee
88
88
 
89
- VERSION = '2.47.0.beta.1'
89
+ VERSION = '2.47.0'
90
90
 
91
91
  @@default_env = nil
92
92
  @@verify_ca_certs = true
@@ -43,7 +43,7 @@ describe ChargeBee::ListResult do
43
43
  end
44
44
 
45
45
  before do
46
- ChargeBee::NativeRequest.stubs(:request).returns(response)
46
+ ChargeBee::Rest.stubs(:request).returns(response)
47
47
  end
48
48
 
49
49
  it "returns list object, with next offset attribute" do
@@ -1,10 +1,11 @@
1
1
  require 'spec_helper'
2
+ require 'rest_client'
2
3
  require 'sample_response'
3
4
 
4
5
  describe "chargebee" do
5
6
 
6
7
  before(:all) do
7
- @request = ChargeBee::NativeRequest
8
+ @request = RestClient::Request
8
9
  end
9
10
 
10
11
  it "serialize should convert the hash to acceptable format" do
@@ -54,7 +55,7 @@ describe "chargebee" do
54
55
  end
55
56
 
56
57
  it "should properly convert the response json into proper object" do
57
- @request.expects(:request).once.returns([simple_subscription, headers])
58
+ @request.expects(:execute).once.returns(mock_response(simple_subscription, headers))
58
59
  result = ChargeBee::Subscription.retrieve("simple_subscription")
59
60
  h = result.get_response_headers
60
61
  expect(h).to eq(headers)
@@ -67,7 +68,7 @@ describe "chargebee" do
67
68
  end
68
69
 
69
70
  it "should properly convert the nested response json into proper object with sub types" do
70
- @request.expects(:request).once.returns([nested_subscription, headers])
71
+ @request.expects(:execute).once.returns(mock_response(nested_subscription, headers))
71
72
  result = ChargeBee::Subscription.retrieve("nested_subscription")
72
73
  s = result.subscription
73
74
  expect(s.id).to eq("nested_subscription")
@@ -79,7 +80,7 @@ describe "chargebee" do
79
80
  end
80
81
 
81
82
  it "should properly convert the list response json into proper result object" do
82
- @request.expects(:request).once.returns([list_subscriptions, headers])
83
+ @request.expects(:execute).once.returns(mock_response(list_subscriptions, headers))
83
84
  result = ChargeBee::Subscription.list({:limit => 2})
84
85
  expect(result.length).to eq(2)
85
86
  result.each do |i|
@@ -88,7 +89,7 @@ describe "chargebee" do
88
89
  end
89
90
 
90
91
  it "should parse event api response and provide the content properly" do
91
- @request.expects(:request).once.returns([sample_event, headers])
92
+ @request.expects(:execute).once.returns(mock_response(sample_event, headers))
92
93
  result = ChargeBee::Event.retrieve("sample_event")
93
94
  event = result.event
94
95
  s = event.content.subscription
metadata CHANGED
@@ -1,76 +1,96 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chargebee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.47.0.beta.1
4
+ version: 2.47.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rajaraman S
8
8
  - Thiyagarajan T
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-11-14 00:00:00.000000000 Z
12
+ date: 2024-11-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json_pure
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
20
  version: '2.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ~>
26
26
  - !ruby/object:Gem::Version
27
27
  version: '2.1'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rest-client
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '1.8'
35
+ - - <=
36
+ - !ruby/object:Gem::Version
37
+ version: 2.0.2
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '1.8'
45
+ - - <=
46
+ - !ruby/object:Gem::Version
47
+ version: 2.0.2
28
48
  - !ruby/object:Gem::Dependency
29
49
  name: cgi
30
50
  requirement: !ruby/object:Gem::Requirement
31
51
  requirements:
32
- - - ">="
52
+ - - '>='
33
53
  - !ruby/object:Gem::Version
34
54
  version: 0.1.0
35
- - - "<"
55
+ - - <
36
56
  - !ruby/object:Gem::Version
37
57
  version: 1.0.0
38
58
  type: :runtime
39
59
  prerelease: false
40
60
  version_requirements: !ruby/object:Gem::Requirement
41
61
  requirements:
42
- - - ">="
62
+ - - '>='
43
63
  - !ruby/object:Gem::Version
44
64
  version: 0.1.0
45
- - - "<"
65
+ - - <
46
66
  - !ruby/object:Gem::Version
47
67
  version: 1.0.0
48
68
  - !ruby/object:Gem::Dependency
49
69
  name: rspec
50
70
  requirement: !ruby/object:Gem::Requirement
51
71
  requirements:
52
- - - "~>"
72
+ - - ~>
53
73
  - !ruby/object:Gem::Version
54
74
  version: 3.0.0
55
75
  type: :development
56
76
  prerelease: false
57
77
  version_requirements: !ruby/object:Gem::Requirement
58
78
  requirements:
59
- - - "~>"
79
+ - - ~>
60
80
  - !ruby/object:Gem::Version
61
81
  version: 3.0.0
62
82
  - !ruby/object:Gem::Dependency
63
83
  name: mocha
64
84
  requirement: !ruby/object:Gem::Requirement
65
85
  requirements:
66
- - - ">="
86
+ - - '>='
67
87
  - !ruby/object:Gem::Version
68
88
  version: '0'
69
89
  type: :development
70
90
  prerelease: false
71
91
  version_requirements: !ruby/object:Gem::Requirement
72
92
  requirements:
73
- - - ">="
93
+ - - '>='
74
94
  - !ruby/object:Gem::Version
75
95
  version: '0'
76
96
  description: Subscription Billing - Simple. Secure. Affordable. More details at www.chargebee.com.
@@ -142,6 +162,7 @@ files:
142
162
  - lib/chargebee/models/model.rb
143
163
  - lib/chargebee/models/non_subscription.rb
144
164
  - lib/chargebee/models/omnichannel_subscription.rb
165
+ - lib/chargebee/models/omnichannel_subscription_item.rb
145
166
  - lib/chargebee/models/omnichannel_transaction.rb
146
167
  - lib/chargebee/models/order.rb
147
168
  - lib/chargebee/models/payment_intent.rb
@@ -176,8 +197,8 @@ files:
176
197
  - lib/chargebee/models/unbilled_charge.rb
177
198
  - lib/chargebee/models/usage.rb
178
199
  - lib/chargebee/models/virtual_bank_account.rb
179
- - lib/chargebee/nativeRequest.rb
180
200
  - lib/chargebee/request.rb
201
+ - lib/chargebee/rest.rb
181
202
  - lib/chargebee/result.rb
182
203
  - lib/chargebee/util.rb
183
204
  - lib/ssl/ca-certs.crt
@@ -191,24 +212,25 @@ licenses:
191
212
  - MIT
192
213
  metadata:
193
214
  changelog_uri: https://github.com/chargebee/chargebee-ruby/blob/master/CHANGELOG.md
194
- post_install_message:
215
+ post_install_message:
195
216
  rdoc_options:
196
- - "--charset=UTF-8"
217
+ - --charset=UTF-8
197
218
  require_paths:
198
219
  - lib
199
220
  required_ruby_version: !ruby/object:Gem::Requirement
200
221
  requirements:
201
- - - ">="
222
+ - - '>='
202
223
  - !ruby/object:Gem::Version
203
224
  version: 1.9.3
204
225
  required_rubygems_version: !ruby/object:Gem::Requirement
205
226
  requirements:
206
- - - ">="
227
+ - - '>='
207
228
  - !ruby/object:Gem::Version
208
229
  version: '0'
209
230
  requirements: []
210
- rubygems_version: 3.5.9
211
- signing_key:
231
+ rubyforge_project:
232
+ rubygems_version: 2.4.5
233
+ signing_key:
212
234
  specification_version: 2
213
235
  summary: Ruby client for Chargebee API.
214
236
  test_files:
@@ -1,136 +0,0 @@
1
- require 'json'
2
- require 'net/http'
3
- require 'uri'
4
- require 'stringio'
5
-
6
- module ChargeBee
7
- module NativeRequest
8
-
9
- def self.request(method, url, env, params = nil, headers = {})
10
- raise Error.new('No environment configured.') unless env
11
- api_key = env.api_key
12
-
13
- uri = URI(env.api_url(url))
14
-
15
- case method.to_s.downcase.to_sym
16
- when :get, :head, :delete
17
- uri.query = URI.encode_www_form(params) if params
18
- payload = nil
19
- else
20
- payload = URI.encode_www_form(params || {})
21
- end
22
- user_agent = ChargeBee.user_agent
23
- headers = {
24
- "User-Agent" => user_agent,
25
- "Accept" => "application/json",
26
- "Lang-Version" => RUBY_VERSION,
27
- "OS-Version" => RUBY_PLATFORM,
28
- "Content-Type" => "application/x-www-form-urlencoded"
29
- }.merge(headers)
30
-
31
- http = Net::HTTP.new(uri.host, uri.port)
32
- http.use_ssl = true
33
- http.open_timeout=env.connect_timeout
34
- http.read_timeout=env.read_timeout
35
- if ChargeBee.verify_ca_certs?
36
- http.verify_mode = OpenSSL::SSL::VERIFY_PEER
37
- http.ca_file = ChargeBee.ca_cert_path
38
- else
39
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
40
- end
41
-
42
- request_class = case method.to_s.downcase.to_sym
43
- when :get then Net::HTTP::Get
44
- when :post then Net::HTTP::Post
45
- when :put then Net::HTTP::Put
46
- when :delete then Net::HTTP::Delete
47
- else raise Error.new("Unsupported HTTP method: #{method}")
48
- end
49
-
50
- request = request_class.new(uri, headers)
51
- request.body = payload if payload
52
-
53
- request.basic_auth(api_key, nil)
54
- begin
55
- response = http.request(request)
56
- rescue => e
57
- raise IOError.new("IO Exception when trying to connect to ChargeBee with URL #{uri} . Reason: #{e}", e)
58
- end
59
- handle_response(response, headers)
60
- end
61
-
62
- def self.handle_response(response, headers)
63
- rcode = response.code.to_i
64
- rbody = response.body
65
-
66
- # converting headers to rest-client format previously we were using rest-client,
67
- # and mapping headers to that format to support backward compatability
68
- rheaders = beautify_headers(response.to_hash)
69
-
70
- # When a custom 'Accept-Encoding' header is set to gzip, Net::HTTP will not automatically
71
- # decompress the response. Therefore, we need to manually handle decompression
72
- # based on the 'Content-Encoding' header in the response.
73
- # https://github.com/ruby/ruby/blob/19c1f0233eb5202403c52b196f1d573893eacab7/lib/net/http/generic_request.rb#L82
74
- if headers.keys.any? { |k| k.downcase == 'accept-encoding' } && rheaders[:content_encoding] == 'gzip' && rbody && !rbody.empty?
75
- rbody = Zlib::GzipReader.new(StringIO.new(rbody)).read
76
- end
77
-
78
- if rcode >= 200 && rcode < 300
79
- begin
80
- resp = JSON.parse(rbody)
81
- rescue JSON::ParserError => e
82
- raise handle_json_error(rbody, e)
83
- end
84
- return Util.symbolize_keys(resp), rheaders
85
- else
86
- raise handle_for_error(rcode, rbody)
87
- end
88
- end
89
-
90
- def self.handle_json_error(rbody, e)
91
- if rbody.include?("503")
92
- raise Error.new("Sorry, the server is currently unable to handle the request due to a temporary overload or scheduled maintenance. Please retry after sometime. \n type: internal_temporary_error, \n http_status_code: 503, \n error_code: internal_temporary_error,\n content: #{rbody.inspect}",e)
93
- elsif rbody.include?("504")
94
- raise Error.new("The server did not receive a timely response from an upstream server, request aborted. If this problem persists, contact us at support@chargebee.com. \n type: gateway_timeout, \n http_status_code: 504, \n error_code: gateway_timeout,\n content: #{rbody.inspect}",e)
95
- else
96
- raise Error.new("Sorry, something went wrong when trying to process the request. If this problem persists, contact us at support@chargebee.com. \n type: internal_error, \n http_status_code: 500, \n error_code: internal_error,\n content: #{rbody.inspect}",e)
97
- end
98
- end
99
-
100
- def self.handle_for_error(rcode, rbody)
101
- return Error.new("No response returned by ChargeBee API. HTTP status code: #{rcode}") if rcode == 204
102
- begin
103
- error_obj = JSON.parse(rbody)
104
- error_obj = Util.symbolize_keys(error_obj)
105
- rescue Exception => e
106
- raise Error.new("Error response not in JSON format. The http status code is #{rcode} \n #{rbody.inspect}",e)
107
- end
108
- type = error_obj[:type]
109
- case type
110
- when "payment"
111
- raise PaymentError.new(rcode, error_obj)
112
- when "operation_failed"
113
- raise OperationFailedError.new(rcode, error_obj)
114
- when "invalid_request"
115
- raise InvalidRequestError.new(rcode, error_obj)
116
- else
117
- raise APIError.new(rcode, error_obj)
118
- end
119
- end
120
- # directly copying headers formatting from rest-client to support backward compatability for rest-client
121
- def self.beautify_headers(headers)
122
- headers.inject({}) do |out, (key, value)|
123
- key_sym = key.tr('-', '_').downcase.to_sym
124
-
125
- # Handle Set-Cookie specially since it cannot be joined by comma.
126
- if key.downcase == 'set-cookie'
127
- out[key_sym] = value
128
- else
129
- out[key_sym] = value.join(', ')
130
- end
131
-
132
- out
133
- end
134
- end
135
- end
136
- end