chargebee 2.6.2 → 2.6.3

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1483 -1473
  3. data/LICENSE +24 -24
  4. data/README.rdoc +41 -41
  5. data/Rakefile +150 -150
  6. data/chargebee.gemspec +2 -2
  7. data/lib/.DS_Store +0 -0
  8. data/lib/chargebee.rb +85 -85
  9. data/lib/chargebee/environment.rb +28 -28
  10. data/lib/chargebee/errors.rb +43 -43
  11. data/lib/chargebee/list_result.rb +28 -28
  12. data/lib/chargebee/models/addon.rb +45 -45
  13. data/lib/chargebee/models/address.rb +18 -18
  14. data/lib/chargebee/models/card.rb +32 -32
  15. data/lib/chargebee/models/comment.rb +25 -25
  16. data/lib/chargebee/models/contact.rb +10 -10
  17. data/lib/chargebee/models/coupon.rb +40 -40
  18. data/lib/chargebee/models/coupon_code.rb +25 -25
  19. data/lib/chargebee/models/coupon_set.rb +37 -37
  20. data/lib/chargebee/models/credit_note.rb +77 -77
  21. data/lib/chargebee/models/credit_note_estimate.rb +35 -35
  22. data/lib/chargebee/models/customer.rb +120 -120
  23. data/lib/chargebee/models/download.rb +9 -9
  24. data/lib/chargebee/models/estimate.rb +46 -46
  25. data/lib/chargebee/models/event.rb +45 -45
  26. data/lib/chargebee/models/export.rb +86 -82
  27. data/lib/chargebee/models/gift.rb +42 -42
  28. data/lib/chargebee/models/hosted_page.rb +77 -73
  29. data/lib/chargebee/models/invoice.rb +172 -172
  30. data/lib/chargebee/models/invoice_estimate.rb +35 -35
  31. data/lib/chargebee/models/model.rb +101 -101
  32. data/lib/chargebee/models/order.rb +76 -76
  33. data/lib/chargebee/models/payment_source.rb +71 -70
  34. data/lib/chargebee/models/plan.rb +59 -59
  35. data/lib/chargebee/models/portal_session.rb +30 -30
  36. data/lib/chargebee/models/promotional_credit.rb +30 -30
  37. data/lib/chargebee/models/quote.rb +72 -72
  38. data/lib/chargebee/models/resource_migration.rb +13 -13
  39. data/lib/chargebee/models/site_migration_detail.rb +14 -14
  40. data/lib/chargebee/models/subscription.rb +137 -137
  41. data/lib/chargebee/models/subscription_estimate.rb +13 -13
  42. data/lib/chargebee/models/third_party_payment_method.rb +9 -9
  43. data/lib/chargebee/models/time_machine.rb +46 -46
  44. data/lib/chargebee/models/transaction.rb +62 -58
  45. data/lib/chargebee/models/unbilled_charge.rb +31 -31
  46. data/lib/chargebee/models/virtual_bank_account.rb +26 -26
  47. data/lib/chargebee/request.rb +27 -27
  48. data/lib/chargebee/rest.rb +92 -90
  49. data/lib/chargebee/result.rb +240 -240
  50. data/lib/chargebee/util.rb +56 -56
  51. data/lib/ssl/ca-certs.crt +3385 -3385
  52. data/spec/chargebee/list_result_spec.rb +53 -53
  53. data/spec/chargebee_spec.rb +99 -99
  54. data/spec/errors_spec.rb +23 -23
  55. data/spec/sample_response.rb +73 -73
  56. data/spec/spec_helper.rb +24 -24
  57. metadata +2 -2
@@ -1,32 +1,32 @@
1
- module ChargeBee
2
- class UnbilledCharge < Model
3
-
4
- class Tier < Model
5
- attr_accessor :starting_unit, :ending_unit, :quantity_used, :unit_amount
6
- end
7
-
8
- attr_accessor :id, :customer_id, :subscription_id, :date_from, :date_to, :unit_amount, :pricing_model,
9
- :quantity, :amount, :currency_code, :discount_amount, :description, :entity_type, :entity_id,
10
- :is_voided, :voided_at, :tiers, :deleted
11
-
12
- # OPERATIONS
13
- #-----------
14
-
15
- def self.invoice_unbilled_charges(params={}, env=nil, headers={})
16
- Request.send('post', uri_path("unbilled_charges","invoice_unbilled_charges"), params, env, headers)
17
- end
18
-
19
- def self.delete(id, env=nil, headers={})
20
- Request.send('post', uri_path("unbilled_charges",id.to_s,"delete"), {}, env, headers)
21
- end
22
-
23
- def self.list(params={}, env=nil, headers={})
24
- Request.send_list_request('get', uri_path("unbilled_charges"), params, env, headers)
25
- end
26
-
27
- def self.invoice_now_estimate(params={}, env=nil, headers={})
28
- Request.send('post', uri_path("unbilled_charges","invoice_now_estimate"), params, env, headers)
29
- end
30
-
31
- end # ~UnbilledCharge
1
+ module ChargeBee
2
+ class UnbilledCharge < Model
3
+
4
+ class Tier < Model
5
+ attr_accessor :starting_unit, :ending_unit, :quantity_used, :unit_amount
6
+ end
7
+
8
+ attr_accessor :id, :customer_id, :subscription_id, :date_from, :date_to, :unit_amount, :pricing_model,
9
+ :quantity, :amount, :currency_code, :discount_amount, :description, :entity_type, :entity_id,
10
+ :is_voided, :voided_at, :tiers, :deleted
11
+
12
+ # OPERATIONS
13
+ #-----------
14
+
15
+ def self.invoice_unbilled_charges(params={}, env=nil, headers={})
16
+ Request.send('post', uri_path("unbilled_charges","invoice_unbilled_charges"), params, env, headers)
17
+ end
18
+
19
+ def self.delete(id, env=nil, headers={})
20
+ Request.send('post', uri_path("unbilled_charges",id.to_s,"delete"), {}, env, headers)
21
+ end
22
+
23
+ def self.list(params={}, env=nil, headers={})
24
+ Request.send_list_request('get', uri_path("unbilled_charges"), params, env, headers)
25
+ end
26
+
27
+ def self.invoice_now_estimate(params={}, env=nil, headers={})
28
+ Request.send('post', uri_path("unbilled_charges","invoice_now_estimate"), params, env, headers)
29
+ end
30
+
31
+ end # ~UnbilledCharge
32
32
  end # ~ChargeBee
@@ -1,27 +1,27 @@
1
- module ChargeBee
2
- class VirtualBankAccount < Model
3
-
4
- attr_accessor :id, :customer_id, :email, :bank_name, :account_number, :routing_number, :swift_code,
5
- :gateway, :gateway_account_id, :reference_id, :deleted
6
-
7
- # OPERATIONS
8
- #-----------
9
-
10
- def self.create_using_permanent_token(params, env=nil, headers={})
11
- Request.send('post', uri_path("virtual_bank_accounts","create_using_permanent_token"), params, env, headers)
12
- end
13
-
14
- def self.create(params, env=nil, headers={})
15
- Request.send('post', uri_path("virtual_bank_accounts"), params, env, headers)
16
- end
17
-
18
- def self.retrieve(id, env=nil, headers={})
19
- Request.send('get', uri_path("virtual_bank_accounts",id.to_s), {}, env, headers)
20
- end
21
-
22
- def self.list(params={}, env=nil, headers={})
23
- Request.send_list_request('get', uri_path("virtual_bank_accounts"), params, env, headers)
24
- end
25
-
26
- end # ~VirtualBankAccount
1
+ module ChargeBee
2
+ class VirtualBankAccount < Model
3
+
4
+ attr_accessor :id, :customer_id, :email, :bank_name, :account_number, :routing_number, :swift_code,
5
+ :gateway, :gateway_account_id, :resource_version, :updated_at, :created_at, :reference_id, :deleted
6
+
7
+ # OPERATIONS
8
+ #-----------
9
+
10
+ def self.create_using_permanent_token(params, env=nil, headers={})
11
+ Request.send('post', uri_path("virtual_bank_accounts","create_using_permanent_token"), params, env, headers)
12
+ end
13
+
14
+ def self.create(params, env=nil, headers={})
15
+ Request.send('post', uri_path("virtual_bank_accounts"), params, env, headers)
16
+ end
17
+
18
+ def self.retrieve(id, env=nil, headers={})
19
+ Request.send('get', uri_path("virtual_bank_accounts",id.to_s), {}, env, headers)
20
+ end
21
+
22
+ def self.list(params={}, env=nil, headers={})
23
+ Request.send_list_request('get', uri_path("virtual_bank_accounts"), params, env, headers)
24
+ end
25
+
26
+ end # ~VirtualBankAccount
27
27
  end # ~ChargeBee
@@ -1,27 +1,27 @@
1
- module ChargeBee
2
- class Request
3
-
4
- def self.send_list_request(method, url, params={}, env=nil, headers={})
5
- serialized = {}
6
- params.each do |k, v|
7
- if(v.kind_of? Array)
8
- v = v.to_json
9
- end
10
- serialized["#{k}"] = v
11
- end
12
- self.send(method, url, serialized, env, headers)
13
- end
14
-
15
- def self.send(method, url, params={}, env=nil, headers={})
16
- env ||= ChargeBee.default_env
17
- ser_params = Util.serialize(params)
18
- resp = Rest.request(method, url, env, ser_params||={}, headers)
19
- if resp.has_key?(:list)
20
- ListResult.new(resp[:list], resp[:next_offset])
21
- else
22
- Result.new(resp)
23
- end
24
- end
25
-
26
- end
27
- end
1
+ module ChargeBee
2
+ class Request
3
+
4
+ def self.send_list_request(method, url, params={}, env=nil, headers={})
5
+ serialized = {}
6
+ params.each do |k, v|
7
+ if(v.kind_of? Array)
8
+ v = v.to_json
9
+ end
10
+ serialized["#{k}"] = v
11
+ end
12
+ self.send(method, url, serialized, env, headers)
13
+ end
14
+
15
+ def self.send(method, url, params={}, env=nil, headers={})
16
+ env ||= ChargeBee.default_env
17
+ ser_params = Util.serialize(params)
18
+ resp = Rest.request(method, url, env, ser_params||={}, headers)
19
+ if resp.has_key?(:list)
20
+ ListResult.new(resp[:list], resp[:next_offset])
21
+ else
22
+ Result.new(resp)
23
+ end
24
+ end
25
+
26
+ end
27
+ end
@@ -1,90 +1,92 @@
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
- }.merge(headers)
34
- opts = {
35
- :method => method,
36
- :url => env.api_url(url),
37
- :user => api_key,
38
- :headers => headers,
39
- :payload => payload,
40
- :open_timeout => 50,
41
- :timeout => 100
42
- }.merge(ssl_opts)
43
-
44
- begin
45
- response = RestClient::Request.execute(opts)
46
- rescue RestClient::ExceptionWithResponse => e
47
- if rcode = e.http_code and rbody = e.http_body
48
- raise handle_for_error(e, rcode, rbody)
49
- else
50
- raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
51
- end
52
- rescue Exception => e
53
- raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
54
- end
55
- rbody = response.body
56
- rcode = response.code
57
- begin
58
- resp = JSON.parse(rbody)
59
- rescue Exception => e
60
- raise Error.new("Response not in JSON format. Probably not a ChargeBee response \n #{rbody.inspect}",e)
61
- end
62
- resp = Util.symbolize_keys(resp)
63
- resp
64
- end
65
-
66
- def self.handle_for_error(e, rcode=nil, rbody=nil)
67
- if(rcode == 204)
68
- raise Error.new("No response returned by the chargebee api. The http status code is #{rcode}")
69
- end
70
- begin
71
- error_obj = JSON.parse(rbody)
72
- error_obj = Util.symbolize_keys(error_obj)
73
- rescue Exception => e
74
- raise Error.new("Error response not in JSON format. The http status code is #{rcode} \n #{rbody.inspect}",e)
75
- end
76
- type = error_obj[:type]
77
- if("payment" == type)
78
- raise PaymentError.new(rcode, error_obj)
79
- elsif("operation_failed" == type)
80
- raise OperationFailedError.new(rcode, error_obj)
81
- elsif("invalid_request" == type)
82
- raise InvalidRequestError.new(rcode, error_obj)
83
- else
84
- raise APIError.new(rcode, error_obj)
85
- end
86
-
87
- end
88
-
89
- end
90
- end
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 => 50,
43
+ :timeout => 100
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
+ rbody = response.body
58
+ rcode = response.code
59
+ begin
60
+ resp = JSON.parse(rbody)
61
+ rescue Exception => e
62
+ raise Error.new("Response not in JSON format. Probably not a ChargeBee response \n #{rbody.inspect}",e)
63
+ end
64
+ resp = Util.symbolize_keys(resp)
65
+ resp
66
+ end
67
+
68
+ def self.handle_for_error(e, rcode=nil, rbody=nil)
69
+ if(rcode == 204)
70
+ raise Error.new("No response returned by the chargebee api. The http status code is #{rcode}")
71
+ end
72
+ begin
73
+ error_obj = JSON.parse(rbody)
74
+ error_obj = Util.symbolize_keys(error_obj)
75
+ rescue Exception => e
76
+ raise Error.new("Error response not in JSON format. The http status code is #{rcode} \n #{rbody.inspect}",e)
77
+ end
78
+ type = error_obj[:type]
79
+ if("payment" == type)
80
+ raise PaymentError.new(rcode, error_obj)
81
+ elsif("operation_failed" == type)
82
+ raise OperationFailedError.new(rcode, error_obj)
83
+ elsif("invalid_request" == type)
84
+ raise InvalidRequestError.new(rcode, error_obj)
85
+ else
86
+ raise APIError.new(rcode, error_obj)
87
+ end
88
+
89
+ end
90
+
91
+ end
92
+ end
@@ -1,240 +1,240 @@
1
- module ChargeBee
2
- class Result
3
-
4
- def initialize(response)
5
- @response = response
6
- end
7
-
8
- def subscription()
9
- subscription = get(:subscription, Subscription,
10
- {:addons => Subscription::Addon, :event_based_addons => Subscription::EventBasedAddon, :charged_event_based_addons => Subscription::ChargedEventBasedAddon, :coupons => Subscription::Coupon, :shipping_address => Subscription::ShippingAddress, :referral_info => Subscription::ReferralInfo});
11
- return subscription;
12
- end
13
-
14
- def customer()
15
- customer = get(:customer, Customer,
16
- {:billing_address => Customer::BillingAddress, :referral_urls => Customer::ReferralUrl, :contacts => Customer::Contact, :payment_method => Customer::PaymentMethod, :balances => Customer::Balance});
17
- return customer;
18
- end
19
-
20
- def contact()
21
- contact = get(:contact, Contact);
22
- return contact;
23
- end
24
-
25
- def payment_source()
26
- payment_source = get(:payment_source, PaymentSource,
27
- {:card => PaymentSource::Card, :bank_account => PaymentSource::BankAccount, :amazon_payment => PaymentSource::AmazonPayment, :paypal => PaymentSource::Paypal});
28
- return payment_source;
29
- end
30
-
31
- def third_party_payment_method()
32
- third_party_payment_method = get(:third_party_payment_method, ThirdPartyPaymentMethod);
33
- return third_party_payment_method;
34
- end
35
-
36
- def virtual_bank_account()
37
- virtual_bank_account = get(:virtual_bank_account, VirtualBankAccount);
38
- return virtual_bank_account;
39
- end
40
-
41
- def card()
42
- card = get(:card, Card);
43
- return card;
44
- end
45
-
46
- def promotional_credit()
47
- promotional_credit = get(:promotional_credit, PromotionalCredit);
48
- return promotional_credit;
49
- end
50
-
51
- def invoice()
52
- invoice = get(:invoice, Invoice,
53
- {: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, :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, :billing_address => Invoice::BillingAddress});
54
- return invoice;
55
- end
56
-
57
- def credit_note()
58
- credit_note = get(:credit_note, CreditNote,
59
- {:line_items => CreditNote::LineItem, :discounts => CreditNote::Discount, :line_item_discounts => CreditNote::LineItemDiscount, :line_item_tiers => CreditNote::LineItemTier, :taxes => CreditNote::Tax, :line_item_taxes => CreditNote::LineItemTax, :linked_refunds => CreditNote::LinkedRefund, :allocations => CreditNote::Allocation});
60
- return credit_note;
61
- end
62
-
63
- def unbilled_charge()
64
- unbilled_charge = get(:unbilled_charge, UnbilledCharge,
65
- {:tiers => UnbilledCharge::Tier});
66
- return unbilled_charge;
67
- end
68
-
69
- def order()
70
- order = get(:order, Order,
71
- {:order_line_items => Order::OrderLineItem, :shipping_address => Order::ShippingAddress, :billing_address => Order::BillingAddress, :line_item_taxes => Order::LineItemTax, :line_item_discounts => Order::LineItemDiscount, :linked_credit_notes => Order::LinkedCreditNote});
72
- return order;
73
- end
74
-
75
- def gift()
76
- gift = get(:gift, Gift,
77
- {:gifter => Gift::Gifter, :gift_receiver => Gift::GiftReceiver, :gift_timelines => Gift::GiftTimeline});
78
- return gift;
79
- end
80
-
81
- def transaction()
82
- transaction = get(:transaction, Transaction,
83
- {:linked_invoices => Transaction::LinkedInvoice, :linked_credit_notes => Transaction::LinkedCreditNote, :linked_refunds => Transaction::LinkedRefund, :linked_payments => Transaction::LinkedPayment});
84
- return transaction;
85
- end
86
-
87
- def hosted_page()
88
- hosted_page = get(:hosted_page, HostedPage);
89
- return hosted_page;
90
- end
91
-
92
- def estimate()
93
- estimate = get(:estimate, Estimate, {},
94
- {:subscription_estimate => SubscriptionEstimate, :invoice_estimate => InvoiceEstimate, :invoice_estimates => InvoiceEstimate, :next_invoice_estimate => InvoiceEstimate, :credit_note_estimates => CreditNoteEstimate, :unbilled_charge_estimates => UnbilledCharge});
95
- estimate.init_dependant(@response[:estimate], :subscription_estimate,
96
- {:shipping_address => SubscriptionEstimate::ShippingAddress});
97
- estimate.init_dependant(@response[:estimate], :invoice_estimate,
98
- {: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});
99
- estimate.init_dependant(@response[:estimate], :next_invoice_estimate,
100
- {: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});
101
- estimate.init_dependant_list(@response[:estimate], :invoice_estimates,
102
- {: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});
103
- estimate.init_dependant_list(@response[:estimate], :credit_note_estimates,
104
- {:line_items => CreditNoteEstimate::LineItem, :discounts => CreditNoteEstimate::Discount, :taxes => CreditNoteEstimate::Tax, :line_item_taxes => CreditNoteEstimate::LineItemTax, :line_item_discounts => CreditNoteEstimate::LineItemDiscount, :line_item_tiers => CreditNoteEstimate::LineItemTier});
105
- estimate.init_dependant_list(@response[:estimate], :unbilled_charge_estimates,
106
- {:tiers => UnbilledCharge::Tier});
107
- return estimate;
108
- end
109
-
110
- def quote()
111
- quote = get(:quote, Quote,
112
- {:line_items => Quote::LineItem, :discounts => Quote::Discount, :line_item_discounts => Quote::LineItemDiscount, :taxes => Quote::Tax, :line_item_taxes => Quote::LineItemTax, :shipping_address => Quote::ShippingAddress, :billing_address => Quote::BillingAddress});
113
- return quote;
114
- end
115
-
116
- def plan()
117
- plan = get(:plan, Plan,
118
- {:tiers => Plan::Tier, :applicable_addons => Plan::ApplicableAddon, :attached_addons => Plan::AttachedAddon, :event_based_addons => Plan::EventBasedAddon});
119
- return plan;
120
- end
121
-
122
- def addon()
123
- addon = get(:addon, Addon,
124
- {:tiers => Addon::Tier});
125
- return addon;
126
- end
127
-
128
- def coupon()
129
- coupon = get(:coupon, Coupon);
130
- return coupon;
131
- end
132
-
133
- def coupon_set()
134
- coupon_set = get(:coupon_set, CouponSet);
135
- return coupon_set;
136
- end
137
-
138
- def coupon_code()
139
- coupon_code = get(:coupon_code, CouponCode);
140
- return coupon_code;
141
- end
142
-
143
- def address()
144
- address = get(:address, Address);
145
- return address;
146
- end
147
-
148
- def event()
149
- event = get(:event, Event,
150
- {:webhooks => Event::Webhook});
151
- return event;
152
- end
153
-
154
- def comment()
155
- comment = get(:comment, Comment);
156
- return comment;
157
- end
158
-
159
- def download()
160
- download = get(:download, Download);
161
- return download;
162
- end
163
-
164
- def portal_session()
165
- portal_session = get(:portal_session, PortalSession,
166
- {:linked_customers => PortalSession::LinkedCustomer});
167
- return portal_session;
168
- end
169
-
170
- def site_migration_detail()
171
- site_migration_detail = get(:site_migration_detail, SiteMigrationDetail);
172
- return site_migration_detail;
173
- end
174
-
175
- def resource_migration()
176
- resource_migration = get(:resource_migration, ResourceMigration);
177
- return resource_migration;
178
- end
179
-
180
- def time_machine()
181
- time_machine = get(:time_machine, TimeMachine);
182
- return time_machine;
183
- end
184
-
185
- def export()
186
- export = get(:export, Export,
187
- {:download => Export::Download});
188
- return export;
189
- end
190
-
191
-
192
- def unbilled_charges()
193
- unbilled_charges = get_list(:unbilled_charges, UnbilledCharge,
194
- {:tiers => UnbilledCharge::Tier});
195
- return unbilled_charges;
196
- end
197
-
198
- def credit_notes()
199
- credit_notes = get_list(:credit_notes, CreditNote,
200
- {:line_items => CreditNote::LineItem, :discounts => CreditNote::Discount, :line_item_discounts => CreditNote::LineItemDiscount, :line_item_tiers => CreditNote::LineItemTier, :taxes => CreditNote::Tax, :line_item_taxes => CreditNote::LineItemTax, :linked_refunds => CreditNote::LinkedRefund, :allocations => CreditNote::Allocation});
201
- return credit_notes;
202
- end
203
-
204
- def invoices()
205
- invoices = get_list(:invoices, Invoice,
206
- {: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, :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, :billing_address => Invoice::BillingAddress});
207
- return invoices;
208
- end
209
-
210
-
211
- private
212
- def get_list(type, klass, sub_types = {}, dependant_types = {}, dependant_sub_types = {})
213
- if(@response[type] == nil)
214
- return nil
215
- end
216
- set_val = Array.new
217
- @response[type].each do |obj|
218
- case obj
219
- when Hash
220
- model = klass.construct(obj, sub_types, dependant_types)
221
- dependant_sub_types.each do |k,v|
222
- model.init_dependant(obj, k, v);
223
- end
224
- set_val.push(model)
225
- end
226
- end
227
- return instance_variable_set("@#{type}", set_val)
228
- end
229
-
230
- private
231
- def get(type, klass, sub_types = {}, dependant_types = {})
232
- return klass.construct(@response[type], sub_types, dependant_types)
233
- end
234
-
235
- def to_s(*args)
236
- JSON.pretty_generate(@response)
237
- end
238
-
239
- end
240
- end
1
+ module ChargeBee
2
+ class Result
3
+
4
+ def initialize(response)
5
+ @response = response
6
+ end
7
+
8
+ def subscription()
9
+ subscription = get(:subscription, Subscription,
10
+ {:addons => Subscription::Addon, :event_based_addons => Subscription::EventBasedAddon, :charged_event_based_addons => Subscription::ChargedEventBasedAddon, :coupons => Subscription::Coupon, :shipping_address => Subscription::ShippingAddress, :referral_info => Subscription::ReferralInfo});
11
+ return subscription;
12
+ end
13
+
14
+ def customer()
15
+ customer = get(:customer, Customer,
16
+ {:billing_address => Customer::BillingAddress, :referral_urls => Customer::ReferralUrl, :contacts => Customer::Contact, :payment_method => Customer::PaymentMethod, :balances => Customer::Balance});
17
+ return customer;
18
+ end
19
+
20
+ def contact()
21
+ contact = get(:contact, Contact);
22
+ return contact;
23
+ end
24
+
25
+ def payment_source()
26
+ payment_source = get(:payment_source, PaymentSource,
27
+ {:card => PaymentSource::Card, :bank_account => PaymentSource::BankAccount, :amazon_payment => PaymentSource::AmazonPayment, :paypal => PaymentSource::Paypal});
28
+ return payment_source;
29
+ end
30
+
31
+ def third_party_payment_method()
32
+ third_party_payment_method = get(:third_party_payment_method, ThirdPartyPaymentMethod);
33
+ return third_party_payment_method;
34
+ end
35
+
36
+ def virtual_bank_account()
37
+ virtual_bank_account = get(:virtual_bank_account, VirtualBankAccount);
38
+ return virtual_bank_account;
39
+ end
40
+
41
+ def card()
42
+ card = get(:card, Card);
43
+ return card;
44
+ end
45
+
46
+ def promotional_credit()
47
+ promotional_credit = get(:promotional_credit, PromotionalCredit);
48
+ return promotional_credit;
49
+ end
50
+
51
+ def invoice()
52
+ invoice = get(:invoice, Invoice,
53
+ {: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, :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, :billing_address => Invoice::BillingAddress});
54
+ return invoice;
55
+ end
56
+
57
+ def credit_note()
58
+ credit_note = get(:credit_note, CreditNote,
59
+ {:line_items => CreditNote::LineItem, :discounts => CreditNote::Discount, :line_item_discounts => CreditNote::LineItemDiscount, :line_item_tiers => CreditNote::LineItemTier, :taxes => CreditNote::Tax, :line_item_taxes => CreditNote::LineItemTax, :linked_refunds => CreditNote::LinkedRefund, :allocations => CreditNote::Allocation});
60
+ return credit_note;
61
+ end
62
+
63
+ def unbilled_charge()
64
+ unbilled_charge = get(:unbilled_charge, UnbilledCharge,
65
+ {:tiers => UnbilledCharge::Tier});
66
+ return unbilled_charge;
67
+ end
68
+
69
+ def order()
70
+ order = get(:order, Order,
71
+ {:order_line_items => Order::OrderLineItem, :shipping_address => Order::ShippingAddress, :billing_address => Order::BillingAddress, :line_item_taxes => Order::LineItemTax, :line_item_discounts => Order::LineItemDiscount, :linked_credit_notes => Order::LinkedCreditNote});
72
+ return order;
73
+ end
74
+
75
+ def gift()
76
+ gift = get(:gift, Gift,
77
+ {:gifter => Gift::Gifter, :gift_receiver => Gift::GiftReceiver, :gift_timelines => Gift::GiftTimeline});
78
+ return gift;
79
+ end
80
+
81
+ def transaction()
82
+ transaction = get(:transaction, Transaction,
83
+ {:linked_invoices => Transaction::LinkedInvoice, :linked_credit_notes => Transaction::LinkedCreditNote, :linked_refunds => Transaction::LinkedRefund, :linked_payments => Transaction::LinkedPayment});
84
+ return transaction;
85
+ end
86
+
87
+ def hosted_page()
88
+ hosted_page = get(:hosted_page, HostedPage);
89
+ return hosted_page;
90
+ end
91
+
92
+ def estimate()
93
+ estimate = get(:estimate, Estimate, {},
94
+ {:subscription_estimate => SubscriptionEstimate, :invoice_estimate => InvoiceEstimate, :invoice_estimates => InvoiceEstimate, :next_invoice_estimate => InvoiceEstimate, :credit_note_estimates => CreditNoteEstimate, :unbilled_charge_estimates => UnbilledCharge});
95
+ estimate.init_dependant(@response[:estimate], :subscription_estimate,
96
+ {:shipping_address => SubscriptionEstimate::ShippingAddress});
97
+ estimate.init_dependant(@response[:estimate], :invoice_estimate,
98
+ {: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});
99
+ estimate.init_dependant(@response[:estimate], :next_invoice_estimate,
100
+ {: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});
101
+ estimate.init_dependant_list(@response[:estimate], :invoice_estimates,
102
+ {: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});
103
+ estimate.init_dependant_list(@response[:estimate], :credit_note_estimates,
104
+ {:line_items => CreditNoteEstimate::LineItem, :discounts => CreditNoteEstimate::Discount, :taxes => CreditNoteEstimate::Tax, :line_item_taxes => CreditNoteEstimate::LineItemTax, :line_item_discounts => CreditNoteEstimate::LineItemDiscount, :line_item_tiers => CreditNoteEstimate::LineItemTier});
105
+ estimate.init_dependant_list(@response[:estimate], :unbilled_charge_estimates,
106
+ {:tiers => UnbilledCharge::Tier});
107
+ return estimate;
108
+ end
109
+
110
+ def quote()
111
+ quote = get(:quote, Quote,
112
+ {:line_items => Quote::LineItem, :discounts => Quote::Discount, :line_item_discounts => Quote::LineItemDiscount, :taxes => Quote::Tax, :line_item_taxes => Quote::LineItemTax, :shipping_address => Quote::ShippingAddress, :billing_address => Quote::BillingAddress});
113
+ return quote;
114
+ end
115
+
116
+ def plan()
117
+ plan = get(:plan, Plan,
118
+ {:tiers => Plan::Tier, :applicable_addons => Plan::ApplicableAddon, :attached_addons => Plan::AttachedAddon, :event_based_addons => Plan::EventBasedAddon});
119
+ return plan;
120
+ end
121
+
122
+ def addon()
123
+ addon = get(:addon, Addon,
124
+ {:tiers => Addon::Tier});
125
+ return addon;
126
+ end
127
+
128
+ def coupon()
129
+ coupon = get(:coupon, Coupon);
130
+ return coupon;
131
+ end
132
+
133
+ def coupon_set()
134
+ coupon_set = get(:coupon_set, CouponSet);
135
+ return coupon_set;
136
+ end
137
+
138
+ def coupon_code()
139
+ coupon_code = get(:coupon_code, CouponCode);
140
+ return coupon_code;
141
+ end
142
+
143
+ def address()
144
+ address = get(:address, Address);
145
+ return address;
146
+ end
147
+
148
+ def event()
149
+ event = get(:event, Event,
150
+ {:webhooks => Event::Webhook});
151
+ return event;
152
+ end
153
+
154
+ def comment()
155
+ comment = get(:comment, Comment);
156
+ return comment;
157
+ end
158
+
159
+ def download()
160
+ download = get(:download, Download);
161
+ return download;
162
+ end
163
+
164
+ def portal_session()
165
+ portal_session = get(:portal_session, PortalSession,
166
+ {:linked_customers => PortalSession::LinkedCustomer});
167
+ return portal_session;
168
+ end
169
+
170
+ def site_migration_detail()
171
+ site_migration_detail = get(:site_migration_detail, SiteMigrationDetail);
172
+ return site_migration_detail;
173
+ end
174
+
175
+ def resource_migration()
176
+ resource_migration = get(:resource_migration, ResourceMigration);
177
+ return resource_migration;
178
+ end
179
+
180
+ def time_machine()
181
+ time_machine = get(:time_machine, TimeMachine);
182
+ return time_machine;
183
+ end
184
+
185
+ def export()
186
+ export = get(:export, Export,
187
+ {:download => Export::Download});
188
+ return export;
189
+ end
190
+
191
+
192
+ def unbilled_charges()
193
+ unbilled_charges = get_list(:unbilled_charges, UnbilledCharge,
194
+ {:tiers => UnbilledCharge::Tier});
195
+ return unbilled_charges;
196
+ end
197
+
198
+ def credit_notes()
199
+ credit_notes = get_list(:credit_notes, CreditNote,
200
+ {:line_items => CreditNote::LineItem, :discounts => CreditNote::Discount, :line_item_discounts => CreditNote::LineItemDiscount, :line_item_tiers => CreditNote::LineItemTier, :taxes => CreditNote::Tax, :line_item_taxes => CreditNote::LineItemTax, :linked_refunds => CreditNote::LinkedRefund, :allocations => CreditNote::Allocation});
201
+ return credit_notes;
202
+ end
203
+
204
+ def invoices()
205
+ invoices = get_list(:invoices, Invoice,
206
+ {: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, :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, :billing_address => Invoice::BillingAddress});
207
+ return invoices;
208
+ end
209
+
210
+
211
+ private
212
+ def get_list(type, klass, sub_types = {}, dependant_types = {}, dependant_sub_types = {})
213
+ if(@response[type] == nil)
214
+ return nil
215
+ end
216
+ set_val = Array.new
217
+ @response[type].each do |obj|
218
+ case obj
219
+ when Hash
220
+ model = klass.construct(obj, sub_types, dependant_types)
221
+ dependant_sub_types.each do |k,v|
222
+ model.init_dependant(obj, k, v);
223
+ end
224
+ set_val.push(model)
225
+ end
226
+ end
227
+ return instance_variable_set("@#{type}", set_val)
228
+ end
229
+
230
+ private
231
+ def get(type, klass, sub_types = {}, dependant_types = {})
232
+ return klass.construct(@response[type], sub_types, dependant_types)
233
+ end
234
+
235
+ def to_s(*args)
236
+ JSON.pretty_generate(@response)
237
+ end
238
+
239
+ end
240
+ end