chargebee 2.48.0 → 2.50.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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +49 -0
  3. data/Gemfile.lock +2 -6
  4. data/README.md +0 -1
  5. data/Rakefile +13 -0
  6. data/chargebee.gemspec +5 -3
  7. data/lib/chargebee/environment.rb +8 -1
  8. data/lib/chargebee/list_result.rb +9 -5
  9. data/lib/chargebee/models/addon.rb +23 -7
  10. data/lib/chargebee/models/address.rb +6 -2
  11. data/lib/chargebee/models/attached_item.rb +16 -6
  12. data/lib/chargebee/models/business_entity.rb +6 -2
  13. data/lib/chargebee/models/card.rb +15 -5
  14. data/lib/chargebee/models/comment.rb +12 -4
  15. data/lib/chargebee/models/configuration.rb +3 -1
  16. data/lib/chargebee/models/coupon.rb +40 -10
  17. data/lib/chargebee/models/coupon_code.rb +12 -4
  18. data/lib/chargebee/models/coupon_set.rb +23 -7
  19. data/lib/chargebee/models/credit_note.rb +44 -16
  20. data/lib/chargebee/models/currency.rb +18 -6
  21. data/lib/chargebee/models/customer.rb +83 -25
  22. data/lib/chargebee/models/customer_entitlement.rb +3 -1
  23. data/lib/chargebee/models/differential_price.rb +19 -6
  24. data/lib/chargebee/models/entitlement.rb +6 -2
  25. data/lib/chargebee/models/entitlement_override.rb +6 -2
  26. data/lib/chargebee/models/estimate.rb +64 -20
  27. data/lib/chargebee/models/event.rb +7 -3
  28. data/lib/chargebee/models/export.rb +54 -18
  29. data/lib/chargebee/models/feature.rb +24 -8
  30. data/lib/chargebee/models/gift.rb +23 -7
  31. data/lib/chargebee/models/hosted_page.rb +68 -23
  32. data/lib/chargebee/models/in_app_subscription.rb +12 -4
  33. data/lib/chargebee/models/invoice.rb +129 -44
  34. data/lib/chargebee/models/invoice_estimate.rb +5 -1
  35. data/lib/chargebee/models/item.rb +18 -6
  36. data/lib/chargebee/models/item_entitlement.rb +12 -4
  37. data/lib/chargebee/models/item_family.rb +17 -6
  38. data/lib/chargebee/models/item_price.rb +24 -8
  39. data/lib/chargebee/models/non_subscription.rb +3 -1
  40. data/lib/chargebee/models/omnichannel_subscription.rb +9 -3
  41. data/lib/chargebee/models/order.rb +36 -12
  42. data/lib/chargebee/models/payment_intent.rb +9 -3
  43. data/lib/chargebee/models/payment_schedule_scheme.rb +9 -3
  44. data/lib/chargebee/models/payment_source.rb +57 -16
  45. data/lib/chargebee/models/payment_voucher.rb +12 -4
  46. data/lib/chargebee/models/plan.rb +23 -7
  47. data/lib/chargebee/models/portal_session.rb +12 -4
  48. data/lib/chargebee/models/price_variant.rb +16 -6
  49. data/lib/chargebee/models/pricing_page_session.rb +6 -2
  50. data/lib/chargebee/models/promotional_credit.rb +15 -5
  51. data/lib/chargebee/models/purchase.rb +8 -2
  52. data/lib/chargebee/models/quote.rb +60 -20
  53. data/lib/chargebee/models/ramp.rb +15 -5
  54. data/lib/chargebee/models/recorded_purchase.rb +6 -2
  55. data/lib/chargebee/models/resource_migration.rb +3 -1
  56. data/lib/chargebee/models/rule.rb +17 -0
  57. data/lib/chargebee/models/site_migration_detail.rb +3 -1
  58. data/lib/chargebee/models/subscription.rb +129 -37
  59. data/lib/chargebee/models/subscription_entitlement.rb +6 -2
  60. data/lib/chargebee/models/time_machine.rb +9 -3
  61. data/lib/chargebee/models/transaction.rb +33 -11
  62. data/lib/chargebee/models/unbilled_charge.rb +18 -6
  63. data/lib/chargebee/models/usage.rb +15 -5
  64. data/lib/chargebee/models/usage_event.rb +24 -0
  65. data/lib/chargebee/models/virtual_bank_account.rb +18 -6
  66. data/lib/chargebee/nativeRequest.rb +138 -0
  67. data/lib/chargebee/request.rb +11 -11
  68. data/lib/chargebee/result.rb +25 -10
  69. data/lib/chargebee/util.rb +8 -5
  70. data/lib/chargebee.rb +4 -2
  71. data/spec/chargebee/list_result_spec.rb +1 -1
  72. data/spec/chargebee_spec.rb +5 -6
  73. metadata +5 -22
@@ -0,0 +1,138 @@
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 = {}, subdomain = nil, isJsonRequest = false)
10
+ raise Error.new('No environment configured.') unless env
11
+ api_key = env.api_key
12
+
13
+ uri = URI(env.api_url(url, subdomain))
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 = isJsonRequest ? params : URI.encode_www_form(params || {})
21
+ end
22
+ user_agent = ChargeBee.user_agent
23
+ content_type_header = isJsonRequest ? "application/json;charset=UTF-8" : "application/x-www-form-urlencoded"
24
+ headers = {
25
+ "User-Agent" => user_agent,
26
+ "Accept" => "application/json",
27
+ "Lang-Version" => RUBY_VERSION,
28
+ "OS-Version" => RUBY_PLATFORM,
29
+ "Content-Type" => content_type_header
30
+ }.merge(headers)
31
+
32
+ http = Net::HTTP.new(uri.host, uri.port)
33
+ http.use_ssl = true
34
+ http.open_timeout=env.connect_timeout
35
+ http.read_timeout=env.read_timeout
36
+ if ChargeBee.verify_ca_certs?
37
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
38
+ http.ca_file = ChargeBee.ca_cert_path
39
+ else
40
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
41
+ end
42
+
43
+ request_class = case method.to_s.downcase.to_sym
44
+ when :get then Net::HTTP::Get
45
+ when :post then Net::HTTP::Post
46
+ when :put then Net::HTTP::Put
47
+ when :delete then Net::HTTP::Delete
48
+ else raise Error.new("Unsupported HTTP method: #{method}")
49
+ end
50
+
51
+ request = request_class.new(uri, headers)
52
+ request.body = payload if payload
53
+
54
+ request.basic_auth(api_key, nil)
55
+
56
+ begin
57
+ response = http.request(request)
58
+ rescue => e
59
+ raise IOError.new("IO Exception when trying to connect to ChargeBee with URL #{uri} . Reason: #{e}", e)
60
+ end
61
+ handle_response(response, headers)
62
+ end
63
+
64
+ def self.handle_response(response, headers)
65
+ rcode = response.code.to_i
66
+ rbody = response.body
67
+
68
+ # converting headers to rest-client format previously we were using rest-client,
69
+ # and mapping headers to that format to support backward compatability
70
+ rheaders = beautify_headers(response.to_hash)
71
+
72
+ # When a custom 'Accept-Encoding' header is set to gzip, Net::HTTP will not automatically
73
+ # decompress the response. Therefore, we need to manually handle decompression
74
+ # based on the 'Content-Encoding' header in the response.
75
+ # https://github.com/ruby/ruby/blob/19c1f0233eb5202403c52b196f1d573893eacab7/lib/net/http/generic_request.rb#L82
76
+ if headers.keys.any? { |k| k.downcase == 'accept-encoding' } && rheaders[:content_encoding] == 'gzip' && rbody && !rbody.empty?
77
+ rbody = Zlib::GzipReader.new(StringIO.new(rbody)).read
78
+ end
79
+
80
+ if rcode >= 200 && rcode < 300
81
+ begin
82
+ resp = JSON.parse(rbody)
83
+ rescue JSON::ParserError => e
84
+ raise handle_json_error(rbody, e)
85
+ end
86
+ return Util.symbolize_keys(resp), rheaders, rcode
87
+ else
88
+ raise handle_for_error(rcode, rbody)
89
+ end
90
+ end
91
+
92
+ def self.handle_json_error(rbody, e)
93
+ if rbody.include?("503")
94
+ 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)
95
+ elsif rbody.include?("504")
96
+ 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)
97
+ else
98
+ 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)
99
+ end
100
+ end
101
+
102
+ def self.handle_for_error(rcode, rbody)
103
+ return Error.new("No response returned by ChargeBee API. HTTP status code: #{rcode}") if rcode == 204
104
+ begin
105
+ error_obj = JSON.parse(rbody)
106
+ error_obj = Util.symbolize_keys(error_obj)
107
+ rescue Exception => e
108
+ raise Error.new("Error response not in JSON format. The http status code is #{rcode} \n #{rbody.inspect}",e)
109
+ end
110
+ type = error_obj[:type]
111
+ case type
112
+ when "payment"
113
+ raise PaymentError.new(rcode, error_obj)
114
+ when "operation_failed"
115
+ raise OperationFailedError.new(rcode, error_obj)
116
+ when "invalid_request"
117
+ raise InvalidRequestError.new(rcode, error_obj)
118
+ else
119
+ raise APIError.new(rcode, error_obj)
120
+ end
121
+ end
122
+ # directly copying headers formatting from rest-client to support backward compatability for rest-client
123
+ def self.beautify_headers(headers)
124
+ headers.inject({}) do |out, (key, value)|
125
+ key_sym = key.tr('-', '_').downcase.to_sym
126
+
127
+ # Handle Set-Cookie specially since it cannot be joined by comma.
128
+ if key.downcase == 'set-cookie'
129
+ out[key_sym] = value
130
+ else
131
+ out[key_sym] = value.join(', ')
132
+ end
133
+
134
+ out
135
+ end
136
+ end
137
+ end
138
+ end
@@ -1,27 +1,27 @@
1
1
  module ChargeBee
2
- class Request
2
+ class Request
3
3
 
4
- def self.send_list_request(method, url, params={}, env=nil, headers={})
4
+ def self.send_list_request(method, url, params={}, env=nil, headers={}, sub_domain=nil, isJsonRequest=nil, jsonKeys={})
5
5
  serialized = {}
6
6
  params.each do |k, v|
7
7
  if(v.kind_of? Array)
8
8
  v = v.to_json
9
9
  end
10
10
  serialized["#{k}"] = v
11
- end
12
- self.send(method, url, serialized, env, headers)
11
+ end
12
+ self.send(method, url, serialized, env, headers, sub_domain, isJsonRequest=nil, jsonKeys={})
13
13
  end
14
14
 
15
- def self.send(method, url, params={}, env=nil, headers={})
15
+ def self.send(method, url, params={}, env=nil, headers={}, sub_domain=nil, isJsonRequest=nil, jsonKeys={})
16
16
  env ||= ChargeBee.default_env
17
- ser_params = Util.serialize(params)
18
- resp, rheaders = Rest.request(method, url, env, ser_params||={}, headers)
17
+ ser_params = isJsonRequest ? params.to_json : Util.serialize(params, nil, nil, jsonKeys)
18
+ resp, rheaders, rcode = NativeRequest.request(method, url, env, ser_params||={}, headers, sub_domain, isJsonRequest)
19
19
  if resp.has_key?(:list)
20
- ListResult.new(resp[:list], resp[:next_offset], rheaders)
21
- else
22
- Result.new(resp, rheaders)
20
+ ListResult.new(resp[:list], resp[:next_offset], rheaders, rcode)
21
+ else
22
+ Result.new(resp, rheaders, rcode)
23
23
  end
24
24
  end
25
-
25
+
26
26
  end
27
27
  end
@@ -3,15 +3,24 @@ module ChargeBee
3
3
 
4
4
  IDEMPOTENCY_REPLAYED_HEADER = :chargebee_idempotency_replayed
5
5
 
6
- def initialize(response, rheaders = nil)
6
+ def initialize(response, rheaders = nil, http_status_code=nil)
7
7
  @response = response
8
8
  @rheaders = rheaders
9
+ @http_status_code = http_status_code
9
10
  end
10
11
 
11
12
  def get_response_headers()
12
13
  @rheaders
13
14
  end
14
15
 
16
+ def get_raw_response()
17
+ @response
18
+ end
19
+
20
+ def get_http_status_code()
21
+ @http_status_code
22
+ end
23
+
15
24
  def is_idempotency_replayed()
16
25
  replayed_header = get_response_headers[IDEMPOTENCY_REPLAYED_HEADER]
17
26
  if replayed_header != nil
@@ -97,7 +106,7 @@ module ChargeBee
97
106
 
98
107
  def invoice()
99
108
  invoice = get(:invoice, Invoice,
100
- {:line_items => Invoice::LineItem, :discounts => Invoice::Discount, :line_item_discounts => Invoice::LineItemDiscount, :taxes => Invoice::Tax, :line_item_taxes => Invoice::LineItemTax, :line_item_tiers => Invoice::LineItemTier, :linked_payments => Invoice::LinkedPayment, :dunning_attempts => Invoice::DunningAttempt, :applied_credits => Invoice::AppliedCredit, :adjustment_credit_notes => Invoice::AdjustmentCreditNote, :issued_credit_notes => Invoice::IssuedCreditNote, :linked_orders => Invoice::LinkedOrder, :notes => Invoice::Note, :shipping_address => Invoice::ShippingAddress, :statement_descriptor => Invoice::StatementDescriptor, :billing_address => Invoice::BillingAddress, :einvoice => Invoice::Einvoice, :site_details_at_creation => Invoice::SiteDetailsAtCreation, :tax_origin => Invoice::TaxOrigin});
109
+ {:line_items => Invoice::LineItem, :discounts => Invoice::Discount, :line_item_discounts => Invoice::LineItemDiscount, :taxes => Invoice::Tax, :line_item_taxes => Invoice::LineItemTax, :line_item_credits => Invoice::LineItemCredit, :line_item_tiers => Invoice::LineItemTier, :linked_payments => Invoice::LinkedPayment, :dunning_attempts => Invoice::DunningAttempt, :applied_credits => Invoice::AppliedCredit, :adjustment_credit_notes => Invoice::AdjustmentCreditNote, :issued_credit_notes => Invoice::IssuedCreditNote, :linked_orders => Invoice::LinkedOrder, :notes => Invoice::Note, :shipping_address => Invoice::ShippingAddress, :statement_descriptor => Invoice::StatementDescriptor, :billing_address => Invoice::BillingAddress, :einvoice => Invoice::Einvoice, :site_details_at_creation => Invoice::SiteDetailsAtCreation, :tax_origin => Invoice::TaxOrigin});
101
110
  return invoice;
102
111
  end
103
112
 
@@ -158,13 +167,13 @@ module ChargeBee
158
167
  estimate.init_dependant(@response[:estimate], :subscription_estimate,
159
168
  {:shipping_address => SubscriptionEstimate::ShippingAddress, :contract_term => SubscriptionEstimate::ContractTerm});
160
169
  estimate.init_dependant(@response[:estimate], :invoice_estimate,
161
- {:line_items => InvoiceEstimate::LineItem, :discounts => InvoiceEstimate::Discount, :taxes => InvoiceEstimate::Tax, :line_item_taxes => InvoiceEstimate::LineItemTax, :line_item_tiers => InvoiceEstimate::LineItemTier, :line_item_discounts => InvoiceEstimate::LineItemDiscount});
170
+ {:line_items => InvoiceEstimate::LineItem, :discounts => InvoiceEstimate::Discount, :taxes => InvoiceEstimate::Tax, :line_item_taxes => InvoiceEstimate::LineItemTax, :line_item_tiers => InvoiceEstimate::LineItemTier, :line_item_credits => InvoiceEstimate::LineItemCredit, :line_item_discounts => InvoiceEstimate::LineItemDiscount});
162
171
  estimate.init_dependant(@response[:estimate], :next_invoice_estimate,
163
- {:line_items => InvoiceEstimate::LineItem, :discounts => InvoiceEstimate::Discount, :taxes => InvoiceEstimate::Tax, :line_item_taxes => InvoiceEstimate::LineItemTax, :line_item_tiers => InvoiceEstimate::LineItemTier, :line_item_discounts => InvoiceEstimate::LineItemDiscount});
172
+ {:line_items => InvoiceEstimate::LineItem, :discounts => InvoiceEstimate::Discount, :taxes => InvoiceEstimate::Tax, :line_item_taxes => InvoiceEstimate::LineItemTax, :line_item_tiers => InvoiceEstimate::LineItemTier, :line_item_credits => InvoiceEstimate::LineItemCredit, :line_item_discounts => InvoiceEstimate::LineItemDiscount});
164
173
  estimate.init_dependant_list(@response[:estimate], :subscription_estimates,
165
174
  {:shipping_address => SubscriptionEstimate::ShippingAddress, :contract_term => SubscriptionEstimate::ContractTerm});
166
175
  estimate.init_dependant_list(@response[:estimate], :invoice_estimates,
167
- {:line_items => InvoiceEstimate::LineItem, :discounts => InvoiceEstimate::Discount, :taxes => InvoiceEstimate::Tax, :line_item_taxes => InvoiceEstimate::LineItemTax, :line_item_tiers => InvoiceEstimate::LineItemTier, :line_item_discounts => InvoiceEstimate::LineItemDiscount});
176
+ {:line_items => InvoiceEstimate::LineItem, :discounts => InvoiceEstimate::Discount, :taxes => InvoiceEstimate::Tax, :line_item_taxes => InvoiceEstimate::LineItemTax, :line_item_tiers => InvoiceEstimate::LineItemTier, :line_item_credits => InvoiceEstimate::LineItemCredit, :line_item_discounts => InvoiceEstimate::LineItemDiscount});
168
177
  estimate.init_dependant_list(@response[:estimate], :payment_schedule_estimates,
169
178
  {:schedule_entries => PaymentScheduleEstimate::ScheduleEntry});
170
179
  estimate.init_dependant_list(@response[:estimate], :credit_note_estimates,
@@ -461,6 +470,16 @@ module ChargeBee
461
470
  return recorded_purchase;
462
471
  end
463
472
 
473
+ def rule()
474
+ rule = get(:rule, Rule);
475
+ return rule;
476
+ end
477
+
478
+ def usage_event()
479
+ usage_event = get(:usage_event, UsageEvent);
480
+ return usage_event;
481
+ end
482
+
464
483
  def advance_invoice_schedules()
465
484
  advance_invoice_schedules = get_list(:advance_invoice_schedules, AdvanceInvoiceSchedule,
466
485
  {:fixed_interval_schedule => AdvanceInvoiceSchedule::FixedIntervalSchedule, :specific_dates_schedule => AdvanceInvoiceSchedule::SpecificDatesSchedule});
@@ -475,7 +494,7 @@ module ChargeBee
475
494
 
476
495
  def invoices()
477
496
  invoices = get_list(:invoices, Invoice,
478
- {:line_items => Invoice::LineItem, :discounts => Invoice::Discount, :line_item_discounts => Invoice::LineItemDiscount, :taxes => Invoice::Tax, :line_item_taxes => Invoice::LineItemTax, :line_item_tiers => Invoice::LineItemTier, :linked_payments => Invoice::LinkedPayment, :dunning_attempts => Invoice::DunningAttempt, :applied_credits => Invoice::AppliedCredit, :adjustment_credit_notes => Invoice::AdjustmentCreditNote, :issued_credit_notes => Invoice::IssuedCreditNote, :linked_orders => Invoice::LinkedOrder, :notes => Invoice::Note, :shipping_address => Invoice::ShippingAddress, :statement_descriptor => Invoice::StatementDescriptor, :billing_address => Invoice::BillingAddress, :einvoice => Invoice::Einvoice, :site_details_at_creation => Invoice::SiteDetailsAtCreation, :tax_origin => Invoice::TaxOrigin});
497
+ {:line_items => Invoice::LineItem, :discounts => Invoice::Discount, :line_item_discounts => Invoice::LineItemDiscount, :taxes => Invoice::Tax, :line_item_taxes => Invoice::LineItemTax, :line_item_credits => Invoice::LineItemCredit, :line_item_tiers => Invoice::LineItemTier, :linked_payments => Invoice::LinkedPayment, :dunning_attempts => Invoice::DunningAttempt, :applied_credits => Invoice::AppliedCredit, :adjustment_credit_notes => Invoice::AdjustmentCreditNote, :issued_credit_notes => Invoice::IssuedCreditNote, :linked_orders => Invoice::LinkedOrder, :notes => Invoice::Note, :shipping_address => Invoice::ShippingAddress, :statement_descriptor => Invoice::StatementDescriptor, :billing_address => Invoice::BillingAddress, :einvoice => Invoice::Einvoice, :site_details_at_creation => Invoice::SiteDetailsAtCreation, :tax_origin => Invoice::TaxOrigin});
479
498
  return invoices;
480
499
  end
481
500
 
@@ -520,10 +539,6 @@ module ChargeBee
520
539
  JSON.pretty_generate(@response)
521
540
  end
522
541
 
523
- def get_raw_response()
524
- @response;
525
- end
526
-
527
542
  private
528
543
  def get_list(type, klass, sub_types = {}, dependant_types = {}, dependant_sub_types = {})
529
544
  if(@response[type] == nil)
@@ -1,15 +1,18 @@
1
1
  module ChargeBee
2
2
  module Util
3
3
 
4
- def self.serialize(value, prefix = nil, idx = nil)
4
+ def self.serialize(value, prefix = nil, idx = nil, json_keys = nil, level = 0)
5
5
  serialized = {}
6
6
  case value
7
7
  when Hash
8
8
  value.each do |k, v|
9
- if k == :metadata or k == :meta_data # metadata is encoded as a JSON string instead of URL-encoded.
10
- serialized.merge!({k.to_s => as_str(v)})
9
+ should_json_encode = json_keys[k] && json_keys[k] == level
10
+ if should_json_encode
11
+ key = "#{prefix || ''}#{prefix ? "[#{k}]" : k}#{idx ? "[#{idx}]" : ''}"
12
+ serialized.merge!({key.to_s => v.to_json})
11
13
  elsif(v.kind_of? Hash or v.kind_of? Array)
12
- serialized.merge!(serialize(v, k))
14
+ temp_prefix = prefix!=nil ? "#{prefix}[#{k}]" : k
15
+ serialized.merge!(serialize(v, temp_prefix, nil , json_keys, level+1))
13
16
  else
14
17
  key = "#{(prefix!=nil) ? prefix:''}#{(prefix!=nil) ? '['+k.to_s+']' : k}#{(idx != nil) ? '['+idx.to_s+']':''}"
15
18
  serialized.merge!({key => as_str(v)})
@@ -17,7 +20,7 @@ module ChargeBee
17
20
  end
18
21
  when Array
19
22
  value.each_with_index do |v, i|
20
- serialized.merge!(serialize(v, prefix, i))
23
+ serialized.merge!(serialize(v, prefix, i, json_keys, level))
21
24
  end
22
25
  else
23
26
  if(idx != nil and prefix != nil)
data/lib/chargebee.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/chargebee/environment'
2
- require File.dirname(__FILE__) + '/chargebee/rest'
2
+ require File.dirname(__FILE__) + '/chargebee/nativeRequest'
3
3
  require File.dirname(__FILE__) + '/chargebee/util'
4
4
  require File.dirname(__FILE__) + '/chargebee/request'
5
5
  require File.dirname(__FILE__) + '/chargebee/result'
@@ -83,11 +83,13 @@ 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
  require File.dirname(__FILE__) + '/chargebee/models/configuration'
86
+ require File.dirname(__FILE__) + '/chargebee/models/usage_event'
87
+ require File.dirname(__FILE__) + '/chargebee/models/rule'
86
88
 
87
89
 
88
90
  module ChargeBee
89
91
 
90
- VERSION = '2.48.0'
92
+ VERSION = '2.50.0'
91
93
 
92
94
  @@default_env = nil
93
95
  @@verify_ca_certs = true
@@ -43,7 +43,7 @@ describe ChargeBee::ListResult do
43
43
  end
44
44
 
45
45
  before do
46
- ChargeBee::Rest.stubs(:request).returns(response)
46
+ ChargeBee::NativeRequest.stubs(:request).returns(response)
47
47
  end
48
48
 
49
49
  it "returns list object, with next offset attribute" do
@@ -1,11 +1,10 @@
1
1
  require 'spec_helper'
2
- require 'rest_client'
3
2
  require 'sample_response'
4
3
 
5
4
  describe "chargebee" do
6
5
 
7
6
  before(:all) do
8
- @request = RestClient::Request
7
+ @request = ChargeBee::NativeRequest
9
8
  end
10
9
 
11
10
  it "serialize should convert the hash to acceptable format" do
@@ -55,7 +54,7 @@ describe "chargebee" do
55
54
  end
56
55
 
57
56
  it "should properly convert the response json into proper object" do
58
- @request.expects(:execute).once.returns(mock_response(simple_subscription, headers))
57
+ @request.expects(:request).once.returns([simple_subscription, headers])
59
58
  result = ChargeBee::Subscription.retrieve("simple_subscription")
60
59
  h = result.get_response_headers
61
60
  expect(h).to eq(headers)
@@ -68,7 +67,7 @@ describe "chargebee" do
68
67
  end
69
68
 
70
69
  it "should properly convert the nested response json into proper object with sub types" do
71
- @request.expects(:execute).once.returns(mock_response(nested_subscription, headers))
70
+ @request.expects(:request).once.returns([nested_subscription, headers])
72
71
  result = ChargeBee::Subscription.retrieve("nested_subscription")
73
72
  s = result.subscription
74
73
  expect(s.id).to eq("nested_subscription")
@@ -80,7 +79,7 @@ describe "chargebee" do
80
79
  end
81
80
 
82
81
  it "should properly convert the list response json into proper result object" do
83
- @request.expects(:execute).once.returns(mock_response(list_subscriptions, headers))
82
+ @request.expects(:request).once.returns([list_subscriptions, headers])
84
83
  result = ChargeBee::Subscription.list({:limit => 2})
85
84
  expect(result.length).to eq(2)
86
85
  result.each do |i|
@@ -89,7 +88,7 @@ describe "chargebee" do
89
88
  end
90
89
 
91
90
  it "should parse event api response and provide the content properly" do
92
- @request.expects(:execute).once.returns(mock_response(sample_event, headers))
91
+ @request.expects(:request).once.returns([sample_event, headers])
93
92
  result = ChargeBee::Event.retrieve("sample_event")
94
93
  event = result.event
95
94
  s = event.content.subscription
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chargebee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.48.0
4
+ version: 2.50.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rajaraman S
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-12-19 00:00:00.000000000 Z
12
+ date: 2025-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json_pure
@@ -25,26 +25,6 @@ dependencies:
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
48
28
  - !ruby/object:Gem::Dependency
49
29
  name: cgi
50
30
  requirement: !ruby/object:Gem::Requirement
@@ -186,6 +166,7 @@ files:
186
166
  - lib/chargebee/models/ramp.rb
187
167
  - lib/chargebee/models/recorded_purchase.rb
188
168
  - lib/chargebee/models/resource_migration.rb
169
+ - lib/chargebee/models/rule.rb
189
170
  - lib/chargebee/models/site_migration_detail.rb
190
171
  - lib/chargebee/models/subscription.rb
191
172
  - lib/chargebee/models/subscription_entitlement.rb
@@ -197,7 +178,9 @@ files:
197
178
  - lib/chargebee/models/transaction.rb
198
179
  - lib/chargebee/models/unbilled_charge.rb
199
180
  - lib/chargebee/models/usage.rb
181
+ - lib/chargebee/models/usage_event.rb
200
182
  - lib/chargebee/models/virtual_bank_account.rb
183
+ - lib/chargebee/nativeRequest.rb
201
184
  - lib/chargebee/request.rb
202
185
  - lib/chargebee/rest.rb
203
186
  - lib/chargebee/result.rb