chartmogul-ruby 3.2.0 → 3.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/changelog.md +11 -0
  4. data/chartmogul-ruby.gemspec +1 -1
  5. data/lib/chartmogul/api/actions/custom.rb +2 -1
  6. data/lib/chartmogul/concerns/pageable_with_cursor.rb +4 -0
  7. data/lib/chartmogul/contact.rb +1 -4
  8. data/lib/chartmogul/customer.rb +13 -1
  9. data/lib/chartmogul/customer_invoices.rb +5 -1
  10. data/lib/chartmogul/enrichment/customer.rb +1 -0
  11. data/lib/chartmogul/invoice.rb +1 -0
  12. data/lib/chartmogul/metrics/activity.rb +1 -4
  13. data/lib/chartmogul/metrics/customers/activity.rb +5 -0
  14. data/lib/chartmogul/metrics/customers/subscription.rb +5 -0
  15. data/lib/chartmogul/plan.rb +1 -0
  16. data/lib/chartmogul/plan_group.rb +1 -0
  17. data/lib/chartmogul/plan_groups/plans.rb +11 -0
  18. data/lib/chartmogul/subscription.rb +5 -0
  19. data/lib/chartmogul/subscription_event.rb +17 -0
  20. data/lib/chartmogul/version.rb +1 -1
  21. metadata +5 -102
  22. data/fixtures/vcr_cassettes/ChartMogul_APIResource/connection/works_in_a_threaded_environment.yml +0 -112
  23. data/fixtures/vcr_cassettes/ChartMogul_APIResource/connection/works_when_credentials_are_updated.yml +0 -77
  24. data/fixtures/vcr_cassettes/ChartMogul_Account/returns_details_of_current_account.yml +0 -64
  25. data/fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/creates_contact_correctly.yml +0 -134
  26. data/fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/destroys_contact_correctly.yml +0 -99
  27. data/fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/merges_contact_correctly.yml +0 -105
  28. data/fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/paginates_correctly.yml +0 -133
  29. data/fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/updates_contact_correctly.yml +0 -102
  30. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_custom_attributes.yml +0 -80
  31. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_required_tags.yml +0 -79
  32. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/can_page_through_search_endpoint.yml +0 -43
  33. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_handles_a_422_response.yml +0 -50
  34. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_interracts_with_the_API.yml +0 -192
  35. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/creates_a_contact_belonging_to_the_customer_correctly.yml +0 -72
  36. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/lists_the_contacts_belonging_to_the_customer_correctly.yml +0 -72
  37. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/merges_customers.yml +0 -185
  38. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_401_if_invalid_credentials.yml +0 -38
  39. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_404_if_no_customers_found.yml +0 -38
  40. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_422_for_update_with_invalid_data.yml +0 -86
  41. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_custom_attributes.yml +0 -80
  42. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_tags.yml +0 -80
  43. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/respects_camel_case_for_all_customers_endpoint.yml +0 -45
  44. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_all_customers_through_list_all_endpoint.yml +0 -47
  45. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_customer_through_retrieve_endpoint.yml +0 -42
  46. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_right_customers_through_search_endpoint.yml +0 -43
  47. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_custom_attributes.yml +0 -81
  48. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_customer.yml +0 -139
  49. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_customer_using_class_method.yml +0 -53
  50. data/fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_matching_user_if_exists.yml +0 -102
  51. data/fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_nil_if_customer_does_not_exist.yml +0 -101
  52. data/fixtures/vcr_cassettes/ChartMogul_CustomerInvoices/API_Interactions/correctly_interracts_with_the_API.yml +0 -337
  53. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_interracts_with_the_API.yml +0 -189
  54. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_404.yml +0 -46
  55. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_422.yml +0 -48
  56. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/retrieves_existing_data_source_matching_uuid.yml +0 -101
  57. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/deletes_an_invoice.yml +0 -37
  58. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/deletes_an_invoice_with_class_method.yml +0 -37
  59. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/raises_error_on_deleting_non-existing_invoice.yml +0 -42
  60. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/retrieves_existing_invoice_by_uuid.yml +0 -50
  61. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/returns_all_invoices_through_list_all_endpoint.yml +0 -46
  62. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +0 -42
  63. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/should_have_entries.yml +0 -42
  64. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +0 -42
  65. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/should_have_entries.yml +0 -42
  66. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +0 -40
  67. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/should_have_entries.yml +0 -40
  68. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ActivitiesExport/get_activities_export.yml +0 -43
  69. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ActivitiesExport/post_activities_export.yml +0 -83
  70. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/behaves_like_PageableWithAnchor/should_be_pageable.yml +0 -44
  71. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/should_have_Activity_entries.yml +0 -44
  72. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity.yml +0 -37
  73. data/fixtures/vcr_cassettes/ChartMogul_Metrics_AllKeyMetric/should_have_entries.yml +0 -42
  74. data/fixtures/vcr_cassettes/ChartMogul_Metrics_AllKeyMetric/should_have_summary.yml +0 -42
  75. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +0 -40
  76. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +0 -40
  77. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +0 -42
  78. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/should_have_entries.yml +0 -42
  79. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Customers_Activity/behaves_like_Pageable/should_be_pageable.yml +0 -41
  80. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Customers_Activity/should_have_Activity_entries.yml +0 -41
  81. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Customers_Subscription/behaves_like_Pageable/should_be_pageable.yml +0 -40
  82. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Customers_Subscription/should_have_Subscription_entries.yml +0 -40
  83. data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +0 -40
  84. data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/should_have_entries.yml +0 -40
  85. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/behaves_like_Summary/should_have_summary.yml +0 -42
  86. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/should_have_entries.yml +0 -42
  87. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +0 -40
  88. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +0 -40
  89. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_on_incorrect_credentials.yml +0 -38
  90. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_with_500_internal_server_error.yml +0 -40
  91. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_with_504_gateway_timeout_error.yml +0 -40
  92. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/when_credentials_correct.yml +0 -38
  93. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/correctly_handles_a_422_error.yml +0 -51
  94. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/correctly_interacts_with_the_API.yml +0 -152
  95. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/deletes_existing_plan.yml +0 -198
  96. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/retrieves_existing_plan_by_uuid.yml +0 -151
  97. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/updates_existing_plan.yml +0 -198
  98. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/updates_existing_plan_using_class_method.yml +0 -164
  99. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/correctly_handles_a_422_error.yml +0 -50
  100. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/deletes_a_plan_group.yml +0 -293
  101. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/retrieves_existing_plan_group_by_uuid.yml +0 -251
  102. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/returns_an_array_of_plan_groups.yml +0 -357
  103. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/updates_existing_plan_group_name.yml +0 -304
  104. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/updates_existing_plan_group_name_via_class_method.yml +0 -297
  105. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/updates_existing_plan_group_plans.yml +0 -411
  106. data/fixtures/vcr_cassettes/ChartMogul_PlanGroups_Plans/API_interactions/given_a_plan_group_uuid_returns_an_array_of_plans_in_the_plan_group.yml +0 -252
  107. data/fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/connects_subscriptions.yml +0 -436
  108. data/fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/correctly_interracts_with_the_API.yml +0 -340
  109. data/fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/has_multiple_aliases.yml +0 -101
  110. data/fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_has_time_objects/is_setting_the_cancellation_dates_of_the_subscription.yml +0 -138
  111. data/fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_includes_invalid_entries/raises_an_exception.yml +0 -93
  112. data/fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_includes_valid_entries/is_setting_the_cancellation_dates_of_the_subscription.yml +0 -138
  113. data/fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_is_empty/makes_an_API_call_and_removes_the_cancellation_dates.yml +0 -138
  114. data/fixtures/vcr_cassettes/ChartMogul_SubscriptionEvent/API_interactions/creates_a_new_subscription_event.yml +0 -320
  115. data/fixtures/vcr_cassettes/ChartMogul_SubscriptionEvent/API_interactions/deletes_the_subscription_event.yml +0 -377
  116. data/fixtures/vcr_cassettes/ChartMogul_SubscriptionEvent/API_interactions/lists_all_subscription_events.yml +0 -320
  117. data/fixtures/vcr_cassettes/ChartMogul_SubscriptionEvent/API_interactions/updates_the_subscription_event.yml +0 -377
  118. data/fixtures/vcr_cassettes/ChartMogul_Transactions_Payment/API_Interactions/correctly_interracts_with_the_API.yml +0 -243
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab4919c76f5171e56a194669e8b74fca6493ff75471a16f91ba0d75ff0465221
4
- data.tar.gz: 68a1c21253bf2198caa041d22dfb459dfafbae69073d098923f71d0854b0a8e9
3
+ metadata.gz: 21d9a4cf92007310afc20b247902c00c7f8b9ff72af318b68f2ead99d684e883
4
+ data.tar.gz: 21839b81aa52218acbc90283dd41da929bf5e3962c3beb14fc3002a8b7b80ed2
5
5
  SHA512:
6
- metadata.gz: 58b6b5379791fbd767466e3a841e1e4f2951e50896a8ef44c17ea04ff789ca6bc106c5a54733539e2232ec25de8b4924fe07a75fbdb12ac8752429c531a73c45
7
- data.tar.gz: 3e44c3234b916381053aa0e60eff2bba3c48d468ffd24cf69c5f3b80afcc4a78e38cdd4865842f714fe6f7412deb7796791fd3e69e03259aa503e266ee3da344
6
+ metadata.gz: 936baf5615aca48e08be7dca9d6cee0af52742ee4514d8a17300891cd192f857c99be4e12809932b808e2e2c2c7ed1116b577f6d5968a94e1ce1782555e42465
7
+ data.tar.gz: f27864dd15a8ab31d0faa8ccf9dd66b04a45da59d703b523437b84b632677b7396f6d23b1266629754452df12116c761e95139df3c33e2df68d005a06c136a01
data/.gitignore CHANGED
@@ -9,4 +9,5 @@
9
9
  /tmp/
10
10
  *.swp
11
11
  vendor/bundle
12
- /.idea
12
+ /.idea
13
+ .DS_Store
data/changelog.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # chartmogul-ruby Change Log
2
2
 
3
+ ## Version 3.3.1 - October 27 2023
4
+ - Add support for cursor based pagination to `.all` endpoints.
5
+ - Add `.next` pagination method for all supported cursor based endpoints.
6
+ - Move `fixtures/` folder inside the `spec/` folder.
7
+ - Update `.merge!` methods to always return `true` when successful.
8
+ - Add new attributes to `ChartMogul::Customer` resource.
9
+ - Do not error when the server returns an empty body from `.custom!` methods.
10
+
11
+ ## Version 3.3.0 - August 14 2023
12
+ - Fix an issue with creating using `SubscriptionEvents.create!(attrs)`.
13
+
3
14
  ## Version 3.2.0 - June 14 2023
4
15
  - Adds support for Faraday 2.7
5
16
  - Removes support for Ruby 2.3, 2.4, and 2.5
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency 'faraday-retry', '~> 2.2'
32
32
 
33
33
  spec.add_development_dependency 'bundler', '~> 2'
34
- spec.add_development_dependency 'pry', '~> 0.12.2'
34
+ spec.add_development_dependency 'pry', '~> 0.14.2'
35
35
  spec.add_development_dependency 'rake', '~> 13.0'
36
36
  spec.add_development_dependency 'rspec', '~> 3.0'
37
37
  spec.add_development_dependency 'rubocop', '0.79'
@@ -25,7 +25,8 @@ module ChartMogul
25
25
  req.body = JSON.dump(body_data)
26
26
  end
27
27
  end
28
- ChartMogul::Utils::JSONParser.parse(resp.body, immutable_keys: immutable_keys)
28
+ parsed_body = resp.body.empty? ? '{}' : resp.body
29
+ ChartMogul::Utils::JSONParser.parse(parsed_body, immutable_keys: immutable_keys)
29
30
  end
30
31
 
31
32
  def custom!(http_method, http_path, body_data = {})
@@ -9,6 +9,10 @@ module ChartMogul
9
9
  readonly_attr :cursor
10
10
  end
11
11
  end
12
+
13
+ def next(options = {})
14
+ self.class.all(options.merge(cursor: cursor))
15
+ end
12
16
  end
13
17
  end
14
18
  end
@@ -34,6 +34,7 @@ module ChartMogul
34
34
 
35
35
  def self.merge!(into_uuid:, from_uuid:)
36
36
  custom!(:post, "/v1/contacts/#{into_uuid}/merge/#{from_uuid}")
37
+ true
37
38
  end
38
39
 
39
40
  def serialize_for_write
@@ -61,9 +62,5 @@ module ChartMogul
61
62
  include Concerns::PageableWithCursor
62
63
 
63
64
  set_entry_class Contact
64
-
65
- def next(options = {})
66
- Contacts.all(options.merge(cursor: cursor))
67
- end
68
65
  end
69
66
  end
@@ -34,6 +34,8 @@ module ChartMogul
34
34
  writeable_attr :data_source_uuid
35
35
  writeable_attr :lead_created_at, type: :time
36
36
  writeable_attr :free_trial_started_at, type: :time
37
+ writeable_attr :owner
38
+ writeable_attr :primary_contact
37
39
 
38
40
  include API::Actions::Create
39
41
  include API::Actions::Custom
@@ -53,6 +55,15 @@ module ChartMogul
53
55
  all(external_id: external_id).first
54
56
  end
55
57
 
58
+ def self.merge!(into_uuid:, from_uuid:)
59
+ options = {
60
+ from: { customer_uuid: from_uuid },
61
+ into: { customer_uuid: into_uuid }
62
+ }
63
+ custom!(:post, '/v1/customers/merges', options)
64
+ true
65
+ end
66
+
56
67
  def subscriptions(options = {})
57
68
  @subscriptions ||= ChartMogul::Subscription.all(uuid, options)
58
69
  end
@@ -109,7 +120,7 @@ module ChartMogul
109
120
  def remove_custom_attributes!(*custom_attrs)
110
121
  self.custom_attributes = custom_without_assign!(:delete,
111
122
  "/v1/customers/#{uuid}/attributes/custom",
112
- custom: custom_attrs)[:custom]
123
+ custom: custom_attrs)
113
124
  end
114
125
 
115
126
  def merge_into!(other_customer)
@@ -146,6 +157,7 @@ module ChartMogul
146
157
  include API::Actions::Custom
147
158
  include Concerns::Pageable
148
159
  include Concerns::Pageable2
160
+ include Concerns::PageableWithCursor
149
161
 
150
162
  set_entry_class Customer
151
163
 
@@ -17,6 +17,7 @@ module ChartMogul
17
17
  include API::Actions::All
18
18
  include API::Actions::Create
19
19
  include Concerns::Pageable2
20
+ include Concerns::PageableWithCursor
20
21
 
21
22
  def serialize_invoices
22
23
  map(&:serialize_for_write)
@@ -26,6 +27,10 @@ module ChartMogul
26
27
  super(options.merge(customer_uuid: customer_uuid))
27
28
  end
28
29
 
30
+ def next(options = {})
31
+ CustomerInvoices.all(customer_uuid, options.merge(cursor: cursor))
32
+ end
33
+
29
34
  def self.destroy_all!(data_source_uuid, customer_uuid)
30
35
  path = ChartMogul::ResourcePath.new('v1/data_sources/:data_source_uuid/customers/:customer_uuid/invoices')
31
36
  handling_errors do
@@ -34,7 +39,6 @@ module ChartMogul
34
39
  true
35
40
  end
36
41
 
37
-
38
42
  def_delegators :invoices, :each, :[], :<<, :size, :length, :empty?, :first
39
43
 
40
44
  private
@@ -120,6 +120,7 @@ module ChartMogul
120
120
  include Concerns::Entries
121
121
  include API::Actions::Custom
122
122
  include Concerns::Pageable
123
+ include Concerns::PageableWithCursor
123
124
 
124
125
  set_entry_class DeprecatedCustomer
125
126
 
@@ -83,6 +83,7 @@ module ChartMogul
83
83
 
84
84
  include Concerns::Entries
85
85
  include Concerns::Pageable2
86
+ include Concerns::PageableWithCursor
86
87
 
87
88
  set_entry_class Invoice
88
89
  end
@@ -29,12 +29,9 @@ module ChartMogul
29
29
 
30
30
  include Concerns::Entries
31
31
  include Concerns::PageableWithAnchor
32
+ include Concerns::PageableWithCursor
32
33
 
33
34
  set_entry_class Activity
34
-
35
- def self.all(options = {})
36
- super(options)
37
- end
38
35
  end
39
36
  end
40
37
  end
@@ -26,12 +26,17 @@ module ChartMogul
26
26
 
27
27
  include Concerns::Entries
28
28
  include Concerns::Pageable
29
+ include Concerns::PageableWithCursor
29
30
 
30
31
  set_entry_class Activity
31
32
 
32
33
  def self.all(customer_uuid, options = {})
33
34
  super(options.merge(customer_uuid: customer_uuid))
34
35
  end
36
+
37
+ def next(customer_uuid, options = {})
38
+ Activities.all(customer_uuid, options.merge(cursor: cursor))
39
+ end
35
40
  end
36
41
  end
37
42
  end
@@ -29,12 +29,17 @@ module ChartMogul
29
29
 
30
30
  include Concerns::Entries
31
31
  include Concerns::Pageable
32
+ include Concerns::PageableWithCursor
32
33
 
33
34
  set_entry_class Subscription
34
35
 
35
36
  def self.all(customer_uuid, options = {})
36
37
  super(options.merge(customer_uuid: customer_uuid))
37
38
  end
39
+
40
+ def next(customer_uuid, options = {})
41
+ Subscriptions.all(customer_uuid, options.merge(cursor: cursor))
42
+ end
38
43
  end
39
44
  end
40
45
  end
@@ -33,6 +33,7 @@ module ChartMogul
33
33
 
34
34
  include Concerns::Entries
35
35
  include Concerns::Pageable2
36
+ include Concerns::PageableWithCursor
36
37
 
37
38
  set_entry_class Plan
38
39
  end
@@ -32,6 +32,7 @@ module ChartMogul
32
32
 
33
33
  include Concerns::Entries
34
34
  include Concerns::Pageable2
35
+ include Concerns::PageableWithCursor
35
36
 
36
37
  set_entry_class PlanGroup
37
38
  end
@@ -10,8 +10,19 @@ module ChartMogul
10
10
 
11
11
  include Concerns::Entries
12
12
  include Concerns::Pageable2
13
+ include Concerns::PageableWithCursor
14
+ include API::Actions::Custom
13
15
 
14
16
  set_entry_class Plan
17
+
18
+ def self.all(plan_group_uuid, options = {})
19
+ super(options.merge(plan_group_uuid: plan_group_uuid))
20
+ end
21
+
22
+ def next(plan_group_uuid, options = {})
23
+ path = ChartMogul::ResourcePath.new("/v1/plan_groups/#{plan_group_uuid}/plans")
24
+ custom!(:get, path.apply_with_get_params(options.merge(cursor: cursor)))
25
+ end
15
26
  end
16
27
  end
17
28
  end
@@ -55,11 +55,16 @@ module ChartMogul
55
55
 
56
56
  include Concerns::Entries
57
57
  include Concerns::Pageable2
58
+ include Concerns::PageableWithCursor
58
59
 
59
60
  set_entry_class Subscription
60
61
 
61
62
  def self.all(customer_uuid, options = {})
62
63
  super(options.merge(customer_uuid: customer_uuid))
63
64
  end
65
+
66
+ def next(customer_uuid, options = {})
67
+ Subscriptions.all(customer_uuid, options.merge(cursor: cursor))
68
+ end
64
69
  end
65
70
  end
@@ -35,6 +35,22 @@ module ChartMogul
35
35
  custom!(:post, resource_path.path, subscription_event: instance_attributes)
36
36
  end
37
37
 
38
+ # This endpoint requires we send the attributes as:
39
+ # { subscription_event: { key: value }}
40
+ # So we do not include the API::Actions::Create module here and rather use a
41
+ # variation of the method there to accommodate this difference in behaviour.
42
+ def self.create!(attributes)
43
+ resp = handling_errors do
44
+ connection.post(resource_path.path) do |req|
45
+ req.headers['Content-Type'] = 'application/json'
46
+ req.body = JSON.dump({ subscription_event: attributes })
47
+ end
48
+ end
49
+ json = ChartMogul::Utils::JSONParser.parse(resp.body, immutable_keys: immutable_keys)
50
+
51
+ new_from_json(json)
52
+ end
53
+
38
54
  def update!(attrs)
39
55
  custom!(:patch, resource_path.path, subscription_event: attrs.merge(id: instance_attributes[:id]))
40
56
  end
@@ -56,6 +72,7 @@ module ChartMogul
56
72
 
57
73
  include API::Actions::All
58
74
  include Concerns::Entries
75
+ include Concerns::PageableWithCursor
59
76
 
60
77
  set_entry_class SubscriptionEvent
61
78
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ChartMogul
4
- VERSION = '3.2.0'
4
+ VERSION = '3.3.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chartmogul-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Petr Kopac
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-15 00:00:00.000000000 Z
11
+ date: 2023-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.12.2
61
+ version: 0.14.2
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.12.2
68
+ version: 0.14.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -197,103 +197,6 @@ files:
197
197
  - bin/setup
198
198
  - changelog.md
199
199
  - chartmogul-ruby.gemspec
200
- - fixtures/vcr_cassettes/ChartMogul_APIResource/connection/works_in_a_threaded_environment.yml
201
- - fixtures/vcr_cassettes/ChartMogul_APIResource/connection/works_when_credentials_are_updated.yml
202
- - fixtures/vcr_cassettes/ChartMogul_Account/returns_details_of_current_account.yml
203
- - fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/creates_contact_correctly.yml
204
- - fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/destroys_contact_correctly.yml
205
- - fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/merges_contact_correctly.yml
206
- - fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/paginates_correctly.yml
207
- - fixtures/vcr_cassettes/ChartMogul_Contact/API_Interactions/updates_contact_correctly.yml
208
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_custom_attributes.yml
209
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_required_tags.yml
210
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/can_page_through_search_endpoint.yml
211
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_handles_a_422_response.yml
212
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_interracts_with_the_API.yml
213
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/creates_a_contact_belonging_to_the_customer_correctly.yml
214
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/lists_the_contacts_belonging_to_the_customer_correctly.yml
215
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/merges_customers.yml
216
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_401_if_invalid_credentials.yml
217
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_404_if_no_customers_found.yml
218
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_422_for_update_with_invalid_data.yml
219
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_custom_attributes.yml
220
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_tags.yml
221
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/respects_camel_case_for_all_customers_endpoint.yml
222
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_all_customers_through_list_all_endpoint.yml
223
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_customer_through_retrieve_endpoint.yml
224
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_right_customers_through_search_endpoint.yml
225
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_custom_attributes.yml
226
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_customer.yml
227
- - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_customer_using_class_method.yml
228
- - fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_matching_user_if_exists.yml
229
- - fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_nil_if_customer_does_not_exist.yml
230
- - fixtures/vcr_cassettes/ChartMogul_CustomerInvoices/API_Interactions/correctly_interracts_with_the_API.yml
231
- - fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_interracts_with_the_API.yml
232
- - fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_404.yml
233
- - fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_422.yml
234
- - fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/retrieves_existing_data_source_matching_uuid.yml
235
- - fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/deletes_an_invoice.yml
236
- - fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/deletes_an_invoice_with_class_method.yml
237
- - fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/raises_error_on_deleting_non-existing_invoice.yml
238
- - fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/retrieves_existing_invoice_by_uuid.yml
239
- - fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/returns_all_invoices_through_list_all_endpoint.yml
240
- - fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml
241
- - fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/should_have_entries.yml
242
- - fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml
243
- - fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/should_have_entries.yml
244
- - fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml
245
- - fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/should_have_entries.yml
246
- - fixtures/vcr_cassettes/ChartMogul_Metrics_ActivitiesExport/get_activities_export.yml
247
- - fixtures/vcr_cassettes/ChartMogul_Metrics_ActivitiesExport/post_activities_export.yml
248
- - fixtures/vcr_cassettes/ChartMogul_Metrics_Activity.yml
249
- - fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/behaves_like_PageableWithAnchor/should_be_pageable.yml
250
- - fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/should_have_Activity_entries.yml
251
- - fixtures/vcr_cassettes/ChartMogul_Metrics_AllKeyMetric/should_have_entries.yml
252
- - fixtures/vcr_cassettes/ChartMogul_Metrics_AllKeyMetric/should_have_summary.yml
253
- - fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml
254
- - fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml
255
- - fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml
256
- - fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/should_have_entries.yml
257
- - fixtures/vcr_cassettes/ChartMogul_Metrics_Customers_Activity/behaves_like_Pageable/should_be_pageable.yml
258
- - fixtures/vcr_cassettes/ChartMogul_Metrics_Customers_Activity/should_have_Activity_entries.yml
259
- - fixtures/vcr_cassettes/ChartMogul_Metrics_Customers_Subscription/behaves_like_Pageable/should_be_pageable.yml
260
- - fixtures/vcr_cassettes/ChartMogul_Metrics_Customers_Subscription/should_have_Subscription_entries.yml
261
- - fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml
262
- - fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/should_have_entries.yml
263
- - fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/behaves_like_Summary/should_have_summary.yml
264
- - fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/should_have_entries.yml
265
- - fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml
266
- - fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml
267
- - fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_on_incorrect_credentials.yml
268
- - fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_with_500_internal_server_error.yml
269
- - fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_with_504_gateway_timeout_error.yml
270
- - fixtures/vcr_cassettes/ChartMogul_Ping/pings/when_credentials_correct.yml
271
- - fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/correctly_handles_a_422_error.yml
272
- - fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/correctly_interacts_with_the_API.yml
273
- - fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/deletes_existing_plan.yml
274
- - fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/retrieves_existing_plan_by_uuid.yml
275
- - fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/updates_existing_plan.yml
276
- - fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/updates_existing_plan_using_class_method.yml
277
- - fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/correctly_handles_a_422_error.yml
278
- - fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/deletes_a_plan_group.yml
279
- - fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/retrieves_existing_plan_group_by_uuid.yml
280
- - fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/returns_an_array_of_plan_groups.yml
281
- - fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/updates_existing_plan_group_name.yml
282
- - fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/updates_existing_plan_group_name_via_class_method.yml
283
- - fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/updates_existing_plan_group_plans.yml
284
- - fixtures/vcr_cassettes/ChartMogul_PlanGroups_Plans/API_interactions/given_a_plan_group_uuid_returns_an_array_of_plans_in_the_plan_group.yml
285
- - fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/connects_subscriptions.yml
286
- - fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/correctly_interracts_with_the_API.yml
287
- - fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/has_multiple_aliases.yml
288
- - fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_has_time_objects/is_setting_the_cancellation_dates_of_the_subscription.yml
289
- - fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_includes_invalid_entries/raises_an_exception.yml
290
- - fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_includes_valid_entries/is_setting_the_cancellation_dates_of_the_subscription.yml
291
- - fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_is_empty/makes_an_API_call_and_removes_the_cancellation_dates.yml
292
- - fixtures/vcr_cassettes/ChartMogul_SubscriptionEvent/API_interactions/creates_a_new_subscription_event.yml
293
- - fixtures/vcr_cassettes/ChartMogul_SubscriptionEvent/API_interactions/deletes_the_subscription_event.yml
294
- - fixtures/vcr_cassettes/ChartMogul_SubscriptionEvent/API_interactions/lists_all_subscription_events.yml
295
- - fixtures/vcr_cassettes/ChartMogul_SubscriptionEvent/API_interactions/updates_the_subscription_event.yml
296
- - fixtures/vcr_cassettes/ChartMogul_Transactions_Payment/API_Interactions/correctly_interracts_with_the_API.yml
297
200
  - lib/chartmogul.rb
298
201
  - lib/chartmogul/account.rb
299
202
  - lib/chartmogul/api/actions/all.rb
@@ -383,7 +286,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
383
286
  - !ruby/object:Gem::Version
384
287
  version: '0'
385
288
  requirements: []
386
- rubygems_version: 3.2.3
289
+ rubygems_version: 3.4.7
387
290
  signing_key:
388
291
  specification_version: 4
389
292
  summary: Chartmogul API Ruby Client
@@ -1,112 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://api.chartmogul.com/v1/ping
6
- body:
7
- encoding: UTF-8
8
- string: "{}"
9
- headers:
10
- User-Agent:
11
- - Faraday v0.17.3
12
- Content-Type:
13
- - application/json
14
- Authorization:
15
- - Basic hidden
16
- response:
17
- status:
18
- code: 401
19
- message: Unauthorized
20
- headers:
21
- server:
22
- - nginx/1.10.1
23
- date:
24
- - Fri, 17 Jul 2020 08:25:06 GMT
25
- content-type:
26
- - application/json
27
- transfer-encoding:
28
- - chunked
29
- connection:
30
- - keep-alive
31
- status:
32
- - 401 Unauthorized
33
- body:
34
- encoding: UTF-8
35
- string: '{"code":401,"message":"No valid API key provided","param":null}'
36
- http_version:
37
- recorded_at: Fri, 17 Jul 2020 08:25:06 GMT
38
- - request:
39
- method: get
40
- uri: https://api.chartmogul.com/v1/ping
41
- body:
42
- encoding: UTF-8
43
- string: "{}"
44
- headers:
45
- User-Agent:
46
- - Faraday v0.17.3
47
- Content-Type:
48
- - application/json
49
- Authorization:
50
- - Basic hidden
51
- response:
52
- status:
53
- code: 200
54
- message: OK
55
- headers:
56
- server:
57
- - nginx/1.10.1
58
- date:
59
- - Fri, 17 Jul 2020 08:25:11 GMT
60
- content-type:
61
- - application/json
62
- transfer-encoding:
63
- - chunked
64
- connection:
65
- - keep-alive
66
- vary:
67
- - Accept-Encoding, Accept-Encoding
68
- status:
69
- - 200 OK
70
- access-control-allow-credentials:
71
- - 'true'
72
- body:
73
- encoding: ASCII-8BIT
74
- string: '{"data":"pong!"}'
75
- http_version:
76
- recorded_at: Fri, 17 Jul 2020 08:25:11 GMT
77
- - request:
78
- method: get
79
- uri: https://api.chartmogul.com/v1/ping
80
- body:
81
- encoding: UTF-8
82
- string: "{}"
83
- headers:
84
- User-Agent:
85
- - Faraday v0.17.3
86
- Content-Type:
87
- - application/json
88
- Authorization:
89
- - Basic hidden
90
- response:
91
- status:
92
- code: 401
93
- message: Unauthorized
94
- headers:
95
- server:
96
- - nginx/1.10.1
97
- date:
98
- - Fri, 17 Jul 2020 08:25:11 GMT
99
- content-type:
100
- - application/json
101
- transfer-encoding:
102
- - chunked
103
- connection:
104
- - keep-alive
105
- status:
106
- - 401 Unauthorized
107
- body:
108
- encoding: UTF-8
109
- string: '{"code":401,"message":"No valid API key provided","param":null}'
110
- http_version:
111
- recorded_at: Fri, 17 Jul 2020 08:25:11 GMT
112
- recorded_with: VCR 5.1.0
@@ -1,77 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://api.chartmogul.com/v1/ping
6
- body:
7
- encoding: UTF-8
8
- string: "{}"
9
- headers:
10
- User-Agent:
11
- - Faraday v0.17.3
12
- Content-Type:
13
- - application/json
14
- Authorization:
15
- - Basic hidden
16
- response:
17
- status:
18
- code: 401
19
- message: Unauthorized
20
- headers:
21
- server:
22
- - nginx/1.10.1
23
- date:
24
- - Fri, 17 Jul 2020 08:25:25 GMT
25
- content-type:
26
- - application/json
27
- transfer-encoding:
28
- - chunked
29
- connection:
30
- - keep-alive
31
- status:
32
- - 401 Unauthorized
33
- body:
34
- encoding: UTF-8
35
- string: '{"code":401,"message":"No valid API key provided","param":null}'
36
- http_version:
37
- recorded_at: Fri, 17 Jul 2020 08:25:25 GMT
38
- - request:
39
- method: get
40
- uri: https://api.chartmogul.com/v1/ping
41
- body:
42
- encoding: UTF-8
43
- string: "{}"
44
- headers:
45
- User-Agent:
46
- - Faraday v0.17.3
47
- Content-Type:
48
- - application/json
49
- Authorization:
50
- - Basic hidden
51
- response:
52
- status:
53
- code: 200
54
- message: OK
55
- headers:
56
- server:
57
- - nginx/1.10.1
58
- date:
59
- - Fri, 17 Jul 2020 08:25:26 GMT
60
- content-type:
61
- - application/json
62
- transfer-encoding:
63
- - chunked
64
- connection:
65
- - keep-alive
66
- vary:
67
- - Accept-Encoding, Accept-Encoding
68
- status:
69
- - 200 OK
70
- access-control-allow-credentials:
71
- - 'true'
72
- body:
73
- encoding: ASCII-8BIT
74
- string: '{"data":"pong!"}'
75
- http_version:
76
- recorded_at: Fri, 17 Jul 2020 08:25:26 GMT
77
- recorded_with: VCR 5.1.0