chartmogul-ruby 1.6.4 → 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/changelog.md +9 -0
  4. data/fixtures/vcr_cassettes/ChartMogul_APIResource/connection/works_in_a_threaded_environment.yml +3 -3
  5. data/fixtures/vcr_cassettes/ChartMogul_APIResource/connection/works_when_credentials_are_updated.yml +2 -2
  6. data/fixtures/vcr_cassettes/ChartMogul_Account/returns_details_of_current_account.yml +64 -0
  7. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_custom_attributes.yml +4 -4
  8. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_required_tags.yml +2 -2
  9. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/can_page_through_search_endpoint.yml +1 -1
  10. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_handles_a_422_response.yml +1 -1
  11. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_interracts_with_the_API.yml +5 -5
  12. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/merges_customers.yml +5 -5
  13. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_401_if_invalid_credentials.yml +1 -1
  14. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_404_if_no_customers_found.yml +1 -1
  15. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_422_for_update_with_invalid_data.yml +2 -2
  16. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_custom_attributes.yml +2 -2
  17. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_tags.yml +2 -2
  18. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/respects_camel_case_for_all_customers_endpoint.yml +45 -0
  19. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_all_customers_through_list_all_endpoint.yml +1 -1
  20. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_customer_through_retrieve_endpoint.yml +1 -1
  21. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_right_customers_through_search_endpoint.yml +1 -1
  22. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_custom_attributes.yml +4 -4
  23. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_customer.yml +3 -3
  24. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_customer_using_class_method.yml +1 -1
  25. data/fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_matching_user_if_exists.yml +2 -2
  26. data/fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_nil_if_customer_does_not_exist.yml +2 -2
  27. data/fixtures/vcr_cassettes/ChartMogul_CustomerInvoices/API_Interactions/correctly_interracts_with_the_API.yml +7 -7
  28. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_interracts_with_the_API.yml +4 -4
  29. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_404.yml +1 -1
  30. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_422.yml +1 -1
  31. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/retrieves_existing_data_source_matching_uuid.yml +2 -2
  32. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/deletes_an_invoice.yml +1 -1
  33. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/deletes_an_invoice_with_class_method.yml +1 -1
  34. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/raises_error_on_deleting_non-existing_invoice.yml +1 -1
  35. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/retrieves_existing_invoice_by_uuid.yml +1 -1
  36. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/returns_all_invoices_through_list_all_endpoint.yml +1 -1
  37. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +1 -1
  38. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/should_have_entries.yml +1 -1
  39. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +1 -1
  40. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/should_have_entries.yml +1 -1
  41. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +1 -1
  42. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/should_have_entries.yml +1 -1
  43. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/behaves_like_Pageable/should_be_pageable.yml +2 -2
  44. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/should_have_Activity_entries.yml +2 -2
  45. data/fixtures/vcr_cassettes/ChartMogul_Metrics_AllKeyMetric/should_have_entries.yml +1 -1
  46. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +1 -1
  47. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +1 -1
  48. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +1 -1
  49. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/should_have_entries.yml +1 -1
  50. data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +1 -1
  51. data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/should_have_entries.yml +1 -1
  52. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/behaves_like_Summary/should_have_summary.yml +1 -1
  53. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/should_have_entries.yml +1 -1
  54. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +1 -1
  55. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +1 -1
  56. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Subscription/behaves_like_Pageable/should_be_pageable.yml +1 -1
  57. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Subscription/should_have_Subscription_entries.yml +1 -1
  58. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_on_incorrect_credentials.yml +1 -1
  59. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_with_500_internal_server_error.yml +1 -1
  60. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_with_504_gateway_timeout_error.yml +1 -1
  61. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/when_credentials_correct.yml +1 -1
  62. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/correctly_handles_a_422_error.yml +1 -1
  63. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/correctly_interacts_with_the_API.yml +3 -3
  64. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/deletes_existing_plan.yml +4 -4
  65. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/retrieves_existing_plan_by_uuid.yml +3 -3
  66. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/updates_existing_plan.yml +4 -4
  67. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/updates_existing_plan_using_class_method.yml +3 -3
  68. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/correctly_handles_a_422_error.yml +1 -1
  69. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/deletes_a_plan_group.yml +6 -6
  70. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/retrieves_existing_plan_group_by_uuid.yml +5 -5
  71. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/returns_an_array_of_plan_groups.yml +7 -7
  72. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/updates_existing_plan_group_name.yml +6 -6
  73. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/updates_existing_plan_group_name_via_class_method.yml +5 -5
  74. data/fixtures/vcr_cassettes/ChartMogul_PlanGroup/API_interactions/updates_existing_plan_group_plans.yml +8 -8
  75. data/fixtures/vcr_cassettes/ChartMogul_PlanGroups_Plans/API_interactions/given_a_plan_group_uuid_returns_an_array_of_plans_in_the_plan_group.yml +5 -5
  76. data/fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/connects_subscriptions.yml +10 -10
  77. data/fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/correctly_interracts_with_the_API.yml +7 -7
  78. data/fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/has_multiple_aliases.yml +2 -2
  79. data/fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_has_time_objects/is_setting_the_cancellation_dates_of_the_subscription.yml +3 -3
  80. data/fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_includes_invalid_entries/raises_an_exception.yml +2 -2
  81. data/fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_includes_valid_entries/is_setting_the_cancellation_dates_of_the_subscription.yml +3 -3
  82. data/fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_is_empty/makes_an_API_call_and_removes_the_cancellation_dates.yml +3 -3
  83. data/fixtures/vcr_cassettes/ChartMogul_Transactions_Payment/API_Interactions/correctly_interracts_with_the_API.yml +5 -5
  84. data/lib/chartmogul.rb +1 -0
  85. data/lib/chartmogul/account.rb +19 -0
  86. data/lib/chartmogul/api/actions/all.rb +2 -1
  87. data/lib/chartmogul/api/actions/create.rb +2 -2
  88. data/lib/chartmogul/api/actions/custom.rb +1 -1
  89. data/lib/chartmogul/api/actions/retrieve.rb +1 -1
  90. data/lib/chartmogul/api/actions/update.rb +3 -2
  91. data/lib/chartmogul/api_resource.rb +6 -1
  92. data/lib/chartmogul/customer.rb +2 -8
  93. data/lib/chartmogul/customer_invoices.rb +9 -0
  94. data/lib/chartmogul/metrics/activity.rb +1 -0
  95. data/lib/chartmogul/transactions/payment.rb +1 -1
  96. data/lib/chartmogul/transactions/refund.rb +1 -1
  97. data/lib/chartmogul/utils/json_parser.rb +12 -2
  98. data/lib/chartmogul/version.rb +1 -1
  99. metadata +6 -3
@@ -12,7 +12,7 @@ http_interactions:
12
12
  Content-Type:
13
13
  - application/json
14
14
  Authorization:
15
- - Basic Hidden
15
+ - Basic hidden
16
16
  response:
17
17
  status:
18
18
  code: 200
@@ -51,7 +51,7 @@ http_interactions:
51
51
  Content-Type:
52
52
  - application/json
53
53
  Authorization:
54
- - Basic Hidden
54
+ - Basic hidden
55
55
  response:
56
56
  status:
57
57
  code: 200
@@ -102,7 +102,7 @@ http_interactions:
102
102
  Content-Type:
103
103
  - application/json
104
104
  Authorization:
105
- - Basic Mjk5ZjAyMjYzMDRkNThhNWZiYzFlNTcwOTdlZGU3Mjk6OWM4NWIwNGFkN2FjNzE2NTUwYTY1NjZhZWYwYzM5ZmU=
105
+ - Basic hidden
106
106
  response:
107
107
  status:
108
108
  code: 202
@@ -12,7 +12,7 @@ http_interactions:
12
12
  Content-Type:
13
13
  - application/json
14
14
  Authorization:
15
- - Basic YmIzN2I0Njk5NjNlMjhlYjY2MjA1ZWYzZmU1MWQ1NmM6ZmM1YjQxYzM3YTNlZTcwYjQyN2UwYzU1ODg2NzA2ZmQ=
15
+ - Basic hidden
16
16
  response:
17
17
  status:
18
18
  code: 201
@@ -63,7 +63,7 @@ http_interactions:
63
63
  Content-Type:
64
64
  - application/json
65
65
  Authorization:
66
- - Basic YmIzN2I0Njk5NjNlMjhlYjY2MjA1ZWYzZmU1MWQ1NmM6ZmM1YjQxYzM3YTNlZTcwYjQyN2UwYzU1ODg2NzA2ZmQ=
66
+ - Basic hidden
67
67
  response:
68
68
  status:
69
69
  code: 201
@@ -113,7 +113,7 @@ http_interactions:
113
113
  Content-Type:
114
114
  - application/json
115
115
  Authorization:
116
- - Basic YmIzN2I0Njk5NjNlMjhlYjY2MjA1ZWYzZmU1MWQ1NmM6ZmM1YjQxYzM3YTNlZTcwYjQyN2UwYzU1ODg2NzA2ZmQ=
116
+ - Basic hidden
117
117
  response:
118
118
  status:
119
119
  code: 201
@@ -162,7 +162,7 @@ http_interactions:
162
162
  Content-Type:
163
163
  - application/json
164
164
  Authorization:
165
- - Basic YmIzN2I0Njk5NjNlMjhlYjY2MjA1ZWYzZmU1MWQ1NmM6ZmM1YjQxYzM3YTNlZTcwYjQyN2UwYzU1ODg2NzA2ZmQ=
165
+ - Basic hidden
166
166
  response:
167
167
  status:
168
168
  code: 201
@@ -209,7 +209,7 @@ http_interactions:
209
209
  User-Agent:
210
210
  - Faraday v0.9.2
211
211
  Authorization:
212
- - Basic YmIzN2I0Njk5NjNlMjhlYjY2MjA1ZWYzZmU1MWQ1NmM6ZmM1YjQxYzM3YTNlZTcwYjQyN2UwYzU1ODg2NzA2ZmQ=
212
+ - Basic hidden
213
213
  response:
214
214
  status:
215
215
  code: 204
data/lib/chartmogul.rb CHANGED
@@ -53,6 +53,7 @@ require 'chartmogul/ping'
53
53
  require 'chartmogul/plan'
54
54
  require 'chartmogul/plan_group'
55
55
  require 'chartmogul/plan_groups/plans'
56
+ require 'chartmogul/account'
56
57
 
57
58
  require 'chartmogul/metrics/arpa'
58
59
  require 'chartmogul/metrics/arr'
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ChartMogul
4
+ class Account < APIResource
5
+ set_resource_name 'Account'
6
+ set_resource_path '/v1/account'
7
+
8
+ readonly_attr :name
9
+ readonly_attr :currency
10
+ readonly_attr :time_zone
11
+ readonly_attr :week_start_on
12
+
13
+ include API::Actions::Custom
14
+
15
+ def self.retrieve
16
+ custom!(:get, '/v1/account')
17
+ end
18
+ end
19
+ end
@@ -15,7 +15,8 @@ module ChartMogul
15
15
  req.headers['Content-Type'] = 'application/json'
16
16
  end
17
17
  end
18
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
18
+
19
+ json = ChartMogul::Utils::JSONParser.parse(resp.body, skip_case_conversion: skip_case_conversion)
19
20
  new_from_json(json)
20
21
  end
21
22
  end
@@ -15,7 +15,7 @@ module ChartMogul
15
15
  req.body = JSON.dump(serialize_for_write)
16
16
  end
17
17
  end
18
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
18
+ json = ChartMogul::Utils::JSONParser.parse(resp.body, skip_case_conversion: self.class.skip_case_conversion)
19
19
 
20
20
  assign_all_attributes(json)
21
21
  end
@@ -30,7 +30,7 @@ module ChartMogul
30
30
  req.body = JSON.dump(resource.serialize_for_write)
31
31
  end
32
32
  end
33
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
33
+ json = ChartMogul::Utils::JSONParser.parse(resp.body, skip_case_conversion: skip_case_conversion)
34
34
 
35
35
  new_from_json(json)
36
36
  end
@@ -25,7 +25,7 @@ module ChartMogul
25
25
  req.body = JSON.dump(body_data)
26
26
  end
27
27
  end
28
- ChartMogul::Utils::JSONParser.parse(resp.body)
28
+ ChartMogul::Utils::JSONParser.parse(resp.body, skip_case_conversion: skip_case_conversion)
29
29
  end
30
30
 
31
31
  def custom!(http_method, http_path, body_data = {})
@@ -15,7 +15,7 @@ module ChartMogul
15
15
  req.headers['Content-Type'] = 'application/json'
16
16
  end
17
17
  end
18
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
18
+ json = ChartMogul::Utils::JSONParser.parse(resp.body, skip_case_conversion: skip_case_conversion)
19
19
  new_from_json(json)
20
20
  end
21
21
  end
@@ -15,7 +15,8 @@ module ChartMogul
15
15
  req.body = JSON.dump(serialize_for_write)
16
16
  end
17
17
  end
18
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
18
+
19
+ json = ChartMogul::Utils::JSONParser.parse(resp.body, skip_case_conversion: self.class.skip_case_conversion)
19
20
 
20
21
  assign_all_attributes(json)
21
22
  end
@@ -30,7 +31,7 @@ module ChartMogul
30
31
  req.body = JSON.dump(resource.serialize_for_write)
31
32
  end
32
33
  end
33
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
34
+ json = ChartMogul::Utils::JSONParser.parse(resp.body, skip_case_conversion: skip_case_conversion)
34
35
 
35
36
  new_from_json(json)
36
37
  end
@@ -17,7 +17,7 @@ module ChartMogul
17
17
  MAX_INTERVAL = 60
18
18
  THREAD_CONNECTION_KEY = 'chartmogul_ruby.api_resource.connection'
19
19
 
20
- class << self; attr_reader :resource_path, :resource_name, :resource_root_key end
20
+ class << self; attr_reader :resource_path, :resource_name, :resource_root_key, :skip_case_conversion end
21
21
 
22
22
  def self.set_resource_path(path)
23
23
  @resource_path = ChartMogul::ResourcePath.new(path)
@@ -31,6 +31,11 @@ module ChartMogul
31
31
  @resource_root_key = root_key
32
32
  end
33
33
 
34
+ # When true, response hash keys won't be converted to snake case
35
+ def self.set_skip_case_conversion(value)
36
+ @skip_case_conversion = value
37
+ end
38
+
34
39
  def self.connection
35
40
  Thread.current[THREAD_CONNECTION_KEY] ||= build_connection
36
41
  end
@@ -4,6 +4,7 @@ module ChartMogul
4
4
  class Customer < APIResource
5
5
  set_resource_name 'Customer'
6
6
  set_resource_path '/v1/customers'
7
+ set_skip_case_conversion true
7
8
 
8
9
  readonly_attr :uuid
9
10
  readonly_attr :id
@@ -64,14 +65,6 @@ module ChartMogul
64
65
  @invoices = ChartMogul::CustomerInvoices.new(customer_uuid: uuid, invoices: invoices_array)
65
66
  end
66
67
 
67
- def delete_all_invoices!
68
- path = ChartMogul::ResourcePath.new('v1/data_sources/:data_source_uuid/customers/:customer_uuid/invoices')
69
- handling_errors do
70
- connection.delete(path.apply(data_source_uuid: data_source_uuid, customer_uuid: uuid))
71
- end
72
- self.invoices = []
73
- end
74
-
75
68
  # Enrichment
76
69
  def tags
77
70
  @attributes[:tags]
@@ -139,6 +132,7 @@ module ChartMogul
139
132
  class Customers < APIResource
140
133
  set_resource_name 'Customers'
141
134
  set_resource_path '/v1/customers'
135
+ set_skip_case_conversion true
142
136
 
143
137
  include Concerns::Entries
144
138
  include API::Actions::Custom
@@ -26,6 +26,15 @@ module ChartMogul
26
26
  super(options.merge(customer_uuid: customer_uuid))
27
27
  end
28
28
 
29
+ def self.destroy_all!(data_source_uuid, customer_uuid)
30
+ path = ChartMogul::ResourcePath.new('v1/data_sources/:data_source_uuid/customers/:customer_uuid/invoices')
31
+ handling_errors do
32
+ connection.delete(path.apply(data_source_uuid: data_source_uuid, customer_uuid: customer_uuid))
33
+ end
34
+ true
35
+ end
36
+
37
+
29
38
  def_delegators :invoices, :each, :[], :<<, :size, :length, :empty?, :first
30
39
 
31
40
  private
@@ -12,6 +12,7 @@ module ChartMogul
12
12
  readonly_attr :activity_mrr_movement
13
13
  readonly_attr :currency
14
14
  readonly_attr :currency_sign
15
+ readonly_attr :subscription_external_id
15
16
 
16
17
  def self.all(customer_uuid, options = {})
17
18
  ChartMogul::Metrics::Activities.all(customer_uuid, options)
@@ -12,7 +12,7 @@ module ChartMogul
12
12
  writeable_attr :date, type: :time
13
13
  writeable_attr :result
14
14
  writeable_attr :external_id
15
-
15
+ writeable_attr :amount_in_cents
16
16
  writeable_attr :invoice_uuid
17
17
 
18
18
  def initialize(attributes = {})
@@ -12,7 +12,7 @@ module ChartMogul
12
12
  writeable_attr :date, type: :time
13
13
  writeable_attr :result
14
14
  writeable_attr :external_id
15
-
15
+ writeable_attr :amount_in_cents
16
16
  writeable_attr :invoice_uuid
17
17
 
18
18
  def initialize(attributes = {})
@@ -4,8 +4,10 @@ module ChartMogul
4
4
  module Utils
5
5
  class JSONParser
6
6
  class << self
7
- def parse(json_string)
7
+ def parse(json_string, skip_case_conversion: false)
8
8
  hash = JSON.parse(json_string, symbolize_names: true)
9
+ return hash if skip_case_conversion
10
+
9
11
  HashSnakeCaser.new(hash).to_snake_keys
10
12
  end
11
13
 
@@ -20,7 +22,15 @@ module ChartMogul
20
22
  def opt_string_to_time(value)
21
23
  return value unless value.instance_of?(String)
22
24
 
23
- Time.iso8601(value) rescue Time.rfc2822(value) rescue value
25
+ parse_timestamp(value)
26
+ rescue ArgumentError
27
+ value
28
+ end
29
+
30
+ def parse_timestamp(value)
31
+ Time.iso8601(value)
32
+ rescue ArgumentError
33
+ Time.rfc2822(value)
24
34
  end
25
35
  end
26
36
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ChartMogul
4
- VERSION = '1.6.4'
4
+ VERSION = '1.7.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: 1.6.4
4
+ version: 1.7.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: 2020-08-14 00:00:00.000000000 Z
11
+ date: 2021-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -184,6 +184,7 @@ files:
184
184
  - chartmogul-ruby.gemspec
185
185
  - fixtures/vcr_cassettes/ChartMogul_APIResource/connection/works_in_a_threaded_environment.yml
186
186
  - fixtures/vcr_cassettes/ChartMogul_APIResource/connection/works_when_credentials_are_updated.yml
187
+ - fixtures/vcr_cassettes/ChartMogul_Account/returns_details_of_current_account.yml
187
188
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_custom_attributes.yml
188
189
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_required_tags.yml
189
190
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/can_page_through_search_endpoint.yml
@@ -195,6 +196,7 @@ files:
195
196
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_422_for_update_with_invalid_data.yml
196
197
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_custom_attributes.yml
197
198
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_tags.yml
199
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/respects_camel_case_for_all_customers_endpoint.yml
198
200
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_all_customers_through_list_all_endpoint.yml
199
201
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_customer_through_retrieve_endpoint.yml
200
202
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_right_customers_through_search_endpoint.yml
@@ -261,6 +263,7 @@ files:
261
263
  - fixtures/vcr_cassettes/ChartMogul_Subscription/_update_cancellation_dates/when_array_is_empty/makes_an_API_call_and_removes_the_cancellation_dates.yml
262
264
  - fixtures/vcr_cassettes/ChartMogul_Transactions_Payment/API_Interactions/correctly_interracts_with_the_API.yml
263
265
  - lib/chartmogul.rb
266
+ - lib/chartmogul/account.rb
264
267
  - lib/chartmogul/api/actions/all.rb
265
268
  - lib/chartmogul/api/actions/create.rb
266
269
  - lib/chartmogul/api/actions/custom.rb
@@ -334,7 +337,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
334
337
  - !ruby/object:Gem::Version
335
338
  version: '0'
336
339
  requirements: []
337
- rubygems_version: 3.0.8
340
+ rubygems_version: 3.1.4
338
341
  signing_key:
339
342
  specification_version: 4
340
343
  summary: Chartmogul API Ruby Client