chartmogul-ruby 1.1.2 → 1.1.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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +10 -10
  3. data/.rspec +2 -2
  4. data/.travis.yml +4 -4
  5. data/Gemfile +4 -4
  6. data/LICENSE.txt +21 -21
  7. data/README.md +111 -111
  8. data/Rakefile +6 -6
  9. data/bin/console +14 -14
  10. data/bin/setup +9 -9
  11. data/changelog.md +27 -27
  12. data/chartmogul-ruby.gemspec +29 -29
  13. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_custom_attributes.yml +80 -80
  14. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_required_tags.yml +79 -79
  15. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/can_page_through_search_endpoint.yml +43 -43
  16. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_handles_a_422_response.yml +50 -50
  17. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_interracts_with_the_API.yml +244 -244
  18. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/merges_customers.yml +185 -185
  19. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_401_if_invalid_credentials.yml +38 -38
  20. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_404_if_no_customers_found.yml +38 -38
  21. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_422_for_update_with_invalid_data.yml +86 -86
  22. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_custom_attributes.yml +80 -80
  23. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_tags.yml +80 -80
  24. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_all_customers_through_list_all_endpoint.yml +47 -47
  25. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_customer_through_retrieve_endpoint.yml +42 -42
  26. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_right_customers_through_search_endpoint.yml +43 -43
  27. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_custom_attributes.yml +82 -82
  28. data/fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_customer.yml +139 -139
  29. data/fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_matching_user_if_exists.yml +102 -102
  30. data/fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_nil_if_customer_does_not_exist.yml +101 -101
  31. data/fixtures/vcr_cassettes/ChartMogul_CustomerInvoices/API_Interactions/correctly_interracts_with_the_API.yml +298 -298
  32. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_interracts_with_the_API.yml +189 -189
  33. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_404.yml +46 -46
  34. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_422.yml +48 -48
  35. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/retrieves_existing_data_source_matching_uuid.yml +101 -101
  36. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/deletes_an_invoice.yml +37 -37
  37. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/deletes_an_invoice_with_class_method.yml +37 -37
  38. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/raises_error_on_deleting_non-existing_invoice.yml +42 -42
  39. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/retrieves_existing_invoice_by_uuid.yml +50 -0
  40. data/fixtures/vcr_cassettes/ChartMogul_Invoice/API_Interactions/returns_all_invoices_through_list_all_endpoint.yml +46 -46
  41. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +42 -42
  42. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/should_have_entries.yml +42 -42
  43. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +42 -42
  44. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/should_have_entries.yml +42 -42
  45. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -40
  46. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -40
  47. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/behaves_like_Pageable/should_be_pageable.yml +41 -41
  48. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/should_have_Activity_entries.yml +41 -41
  49. data/fixtures/vcr_cassettes/ChartMogul_Metrics_AllKeyMetric/should_have_entries.yml +42 -42
  50. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -40
  51. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -40
  52. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +42 -42
  53. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/should_have_entries.yml +42 -42
  54. data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -40
  55. data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -40
  56. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/behaves_like_Summary/should_have_summary.yml +42 -42
  57. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/should_have_entries.yml +42 -42
  58. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -40
  59. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -40
  60. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Subscription/behaves_like_Pageable/should_be_pageable.yml +40 -40
  61. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Subscription/should_have_Subscription_entries.yml +40 -40
  62. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/and_fails_on_incorrect_credentials.yml +38 -38
  63. data/fixtures/vcr_cassettes/ChartMogul_Ping/pings/when_credentials_correct.yml +38 -38
  64. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/correctly_handles_a_422_error.yml +51 -51
  65. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/correctly_interacts_with_the_API.yml +152 -152
  66. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/deletes_existing_plan.yml +198 -198
  67. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/retrieves_existing_plan_by_uuid.yml +151 -151
  68. data/fixtures/vcr_cassettes/ChartMogul_Plan/API_Interactions/updates_existing_plan.yml +198 -198
  69. data/fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/correctly_interracts_with_the_API.yml +340 -340
  70. data/fixtures/vcr_cassettes/ChartMogul_Subscription/API_Interactions/has_multiple_aliases.yml +101 -101
  71. data/fixtures/vcr_cassettes/ChartMogul_Transactions_Payment/API_Interactions/correctly_interracts_with_the_API.yml +243 -243
  72. data/lib/chartmogul.rb +80 -79
  73. data/lib/chartmogul/api/actions/all.rb +23 -23
  74. data/lib/chartmogul/api/actions/create.rb +39 -39
  75. data/lib/chartmogul/api/actions/custom.rb +37 -37
  76. data/lib/chartmogul/api/actions/destroy.rb +27 -28
  77. data/lib/chartmogul/api/actions/retrieve.rb +23 -0
  78. data/lib/chartmogul/api/actions/update.rb +19 -19
  79. data/lib/chartmogul/api_resource.rb +68 -68
  80. data/lib/chartmogul/concerns/entries.rb +39 -39
  81. data/lib/chartmogul/concerns/pageable.rb +13 -13
  82. data/lib/chartmogul/concerns/pageable2.rb +12 -12
  83. data/lib/chartmogul/concerns/summary.rb +20 -20
  84. data/lib/chartmogul/config_attributes.rb +15 -15
  85. data/lib/chartmogul/configuration.rb +6 -6
  86. data/lib/chartmogul/customer.rb +153 -155
  87. data/lib/chartmogul/customer_invoices.rb +44 -44
  88. data/lib/chartmogul/data_source.rb +35 -38
  89. data/lib/chartmogul/enrichment/customer.rb +138 -141
  90. data/lib/chartmogul/errors/chartmogul_error.rb +19 -19
  91. data/lib/chartmogul/errors/configuration_error.rb +4 -4
  92. data/lib/chartmogul/errors/forbidden_error.rb +4 -4
  93. data/lib/chartmogul/errors/not_found_error.rb +4 -4
  94. data/lib/chartmogul/errors/resource_invalid_error.rb +4 -4
  95. data/lib/chartmogul/errors/schema_invalid_error.rb +4 -4
  96. data/lib/chartmogul/errors/unauthorized_error.rb +4 -4
  97. data/lib/chartmogul/invoice.rb +84 -83
  98. data/lib/chartmogul/line_items/one_time.rb +23 -23
  99. data/lib/chartmogul/line_items/subscription.rb +29 -29
  100. data/lib/chartmogul/metrics/activity.rb +34 -34
  101. data/lib/chartmogul/metrics/all_key_metrics.rb +25 -25
  102. data/lib/chartmogul/metrics/arpa.rb +19 -19
  103. data/lib/chartmogul/metrics/arr.rb +19 -19
  104. data/lib/chartmogul/metrics/asp.rb +19 -19
  105. data/lib/chartmogul/metrics/base.rb +56 -56
  106. data/lib/chartmogul/metrics/customer_churn_rate.rb +19 -19
  107. data/lib/chartmogul/metrics/customer_count.rb +19 -19
  108. data/lib/chartmogul/metrics/ltv.rb +19 -19
  109. data/lib/chartmogul/metrics/mrr.rb +26 -26
  110. data/lib/chartmogul/metrics/mrr_churn_rate.rb +19 -19
  111. data/lib/chartmogul/metrics/subscription.rb +37 -37
  112. data/lib/chartmogul/object.rb +119 -119
  113. data/lib/chartmogul/ping.rb +14 -14
  114. data/lib/chartmogul/plan.rb +38 -41
  115. data/lib/chartmogul/resource_path.rb +42 -42
  116. data/lib/chartmogul/subscription.rb +48 -48
  117. data/lib/chartmogul/summary.rb +7 -7
  118. data/lib/chartmogul/transactions/payment.rb +24 -24
  119. data/lib/chartmogul/transactions/refund.rb +24 -24
  120. data/lib/chartmogul/utils/hash_snake_caser.rb +50 -50
  121. data/lib/chartmogul/utils/json_parser.rb +11 -11
  122. data/lib/chartmogul/version.rb +3 -3
  123. metadata +4 -2
@@ -1,79 +1,80 @@
1
- require 'time'
2
- require 'json'
3
- require 'faraday'
4
-
5
- require "chartmogul/version"
6
-
7
- require "chartmogul/utils/hash_snake_caser"
8
- require "chartmogul/utils/json_parser"
9
-
10
- require "chartmogul/errors/chartmogul_error"
11
- require "chartmogul/errors/not_found_error"
12
- require "chartmogul/errors/configuration_error"
13
- require "chartmogul/errors/resource_invalid_error"
14
- require "chartmogul/errors/schema_invalid_error"
15
- require "chartmogul/errors/unauthorized_error"
16
-
17
- require "chartmogul/config_attributes"
18
- require "chartmogul/configuration"
19
-
20
- require "chartmogul/object"
21
- require "chartmogul/resource_path"
22
- require "chartmogul/api_resource"
23
- require "chartmogul/summary"
24
-
25
- require "chartmogul/api/actions/all"
26
- require "chartmogul/api/actions/create"
27
- require "chartmogul/api/actions/update"
28
- require "chartmogul/api/actions/destroy"
29
- require "chartmogul/api/actions/custom"
30
-
31
- require "chartmogul/line_items/one_time"
32
- require "chartmogul/line_items/subscription"
33
-
34
- require "chartmogul/transactions/payment"
35
- require "chartmogul/transactions/refund"
36
-
37
- require "chartmogul/concerns/entries"
38
- require "chartmogul/concerns/summary"
39
- require "chartmogul/concerns/pageable"
40
- require "chartmogul/concerns/pageable2"
41
-
42
- require "chartmogul/subscription"
43
- require "chartmogul/invoice"
44
- require "chartmogul/customer_invoices"
45
- require "chartmogul/customer"
46
- require "chartmogul/data_source"
47
- require "chartmogul/ping"
48
- require "chartmogul/plan"
49
-
50
- require "chartmogul/metrics/arpa"
51
- require "chartmogul/metrics/arr"
52
- require "chartmogul/metrics/asp"
53
- require "chartmogul/metrics/customer_churn_rate"
54
- require "chartmogul/metrics/customer_count"
55
- require "chartmogul/metrics/ltv"
56
- require "chartmogul/metrics/mrr"
57
- require "chartmogul/metrics/mrr_churn_rate"
58
- require "chartmogul/metrics/all_key_metrics"
59
- require "chartmogul/metrics/base"
60
-
61
- require "chartmogul/metrics/activity"
62
- require "chartmogul/metrics/subscription"
63
-
64
- require "chartmogul/enrichment/customer"
65
-
66
- module ChartMogul
67
- API_BASE = 'https://api.chartmogul.com'
68
-
69
- class << self
70
- extend ConfigAttributes
71
-
72
- def config
73
- @config ||= ChartMogul::Configuration.new
74
- end
75
-
76
- config_accessor :account_token
77
- config_accessor :secret_key
78
- end
79
- end
1
+ require 'time'
2
+ require 'json'
3
+ require 'faraday'
4
+
5
+ require "chartmogul/version"
6
+
7
+ require "chartmogul/utils/hash_snake_caser"
8
+ require "chartmogul/utils/json_parser"
9
+
10
+ require "chartmogul/errors/chartmogul_error"
11
+ require "chartmogul/errors/configuration_error"
12
+ require "chartmogul/errors/not_found_error"
13
+ require "chartmogul/errors/resource_invalid_error"
14
+ require "chartmogul/errors/schema_invalid_error"
15
+ require "chartmogul/errors/unauthorized_error"
16
+
17
+ require "chartmogul/config_attributes"
18
+ require "chartmogul/configuration"
19
+
20
+ require "chartmogul/object"
21
+ require "chartmogul/resource_path"
22
+ require "chartmogul/api_resource"
23
+ require "chartmogul/summary"
24
+
25
+ require "chartmogul/api/actions/all"
26
+ require "chartmogul/api/actions/create"
27
+ require "chartmogul/api/actions/custom"
28
+ require "chartmogul/api/actions/destroy"
29
+ require "chartmogul/api/actions/retrieve"
30
+ require "chartmogul/api/actions/update"
31
+
32
+ require "chartmogul/line_items/one_time"
33
+ require "chartmogul/line_items/subscription"
34
+
35
+ require "chartmogul/transactions/payment"
36
+ require "chartmogul/transactions/refund"
37
+
38
+ require "chartmogul/concerns/entries"
39
+ require "chartmogul/concerns/summary"
40
+ require "chartmogul/concerns/pageable"
41
+ require "chartmogul/concerns/pageable2"
42
+
43
+ require "chartmogul/subscription"
44
+ require "chartmogul/invoice"
45
+ require "chartmogul/customer_invoices"
46
+ require "chartmogul/customer"
47
+ require "chartmogul/data_source"
48
+ require "chartmogul/ping"
49
+ require "chartmogul/plan"
50
+
51
+ require "chartmogul/metrics/arpa"
52
+ require "chartmogul/metrics/arr"
53
+ require "chartmogul/metrics/asp"
54
+ require "chartmogul/metrics/customer_churn_rate"
55
+ require "chartmogul/metrics/customer_count"
56
+ require "chartmogul/metrics/ltv"
57
+ require "chartmogul/metrics/mrr"
58
+ require "chartmogul/metrics/mrr_churn_rate"
59
+ require "chartmogul/metrics/all_key_metrics"
60
+ require "chartmogul/metrics/base"
61
+
62
+ require "chartmogul/metrics/activity"
63
+ require "chartmogul/metrics/subscription"
64
+
65
+ require "chartmogul/enrichment/customer"
66
+
67
+ module ChartMogul
68
+ API_BASE = 'https://api.chartmogul.com'
69
+
70
+ class << self
71
+ extend ConfigAttributes
72
+
73
+ def config
74
+ @config ||= ChartMogul::Configuration.new
75
+ end
76
+
77
+ config_accessor :account_token
78
+ config_accessor :secret_key
79
+ end
80
+ end
@@ -1,23 +1,23 @@
1
- module ChartMogul
2
- module API
3
- module Actions
4
- module All
5
- def self.included(base)
6
- base.extend ClassMethods
7
- end
8
-
9
- module ClassMethods
10
- def all(options = {})
11
- resp = handling_errors do
12
- connection.get(resource_path.apply_with_get_params(options)) do |req|
13
- req.headers['Content-Type'] = 'application/json'
14
- end
15
- end
16
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
17
- new_from_json(json)
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
1
+ module ChartMogul
2
+ module API
3
+ module Actions
4
+ module All
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ module ClassMethods
10
+ def all(options = {})
11
+ resp = handling_errors do
12
+ connection.get(resource_path.apply_with_get_params(options)) do |req|
13
+ req.headers['Content-Type'] = 'application/json'
14
+ end
15
+ end
16
+ json = ChartMogul::Utils::JSONParser.parse(resp.body)
17
+ new_from_json(json)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,39 +1,39 @@
1
- module ChartMogul
2
- module API
3
- module Actions
4
- module Create
5
- def self.included(base)
6
- base.extend ClassMethods
7
- end
8
-
9
- def create!
10
- resp = handling_errors do
11
- connection.post(resource_path.apply(self.instance_attributes)) do |req|
12
- req.headers['Content-Type'] = 'application/json'
13
- req.body = JSON.dump(self.serialize_for_write)
14
- end
15
- end
16
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
17
-
18
- assign_all_attributes(json)
19
- end
20
-
21
- module ClassMethods
22
- def create!(attributes = {})
23
- resource = new(attributes)
24
-
25
- resp = handling_errors do
26
- connection.post(resource_path.apply(attributes)) do |req|
27
- req.headers['Content-Type'] = 'application/json'
28
- req.body = JSON.dump(resource.serialize_for_write)
29
- end
30
- end
31
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
32
-
33
- new_from_json(json)
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
1
+ module ChartMogul
2
+ module API
3
+ module Actions
4
+ module Create
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ def create!
10
+ resp = handling_errors do
11
+ connection.post(resource_path.apply(self.instance_attributes)) do |req|
12
+ req.headers['Content-Type'] = 'application/json'
13
+ req.body = JSON.dump(self.serialize_for_write)
14
+ end
15
+ end
16
+ json = ChartMogul::Utils::JSONParser.parse(resp.body)
17
+
18
+ assign_all_attributes(json)
19
+ end
20
+
21
+ module ClassMethods
22
+ def create!(attributes = {})
23
+ resource = new(attributes)
24
+
25
+ resp = handling_errors do
26
+ connection.post(resource_path.apply(attributes)) do |req|
27
+ req.headers['Content-Type'] = 'application/json'
28
+ req.body = JSON.dump(resource.serialize_for_write)
29
+ end
30
+ end
31
+ json = ChartMogul::Utils::JSONParser.parse(resp.body)
32
+
33
+ new_from_json(json)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,37 +1,37 @@
1
- module ChartMogul
2
- module API
3
- module Actions
4
- module Custom
5
- def self.included(base)
6
- base.extend ClassMethods
7
- end
8
-
9
- def custom_without_assign!(http_method, http_path, body_data = {})
10
- self.class.custom_without_assign!(http_method, http_path, body_data)
11
- end
12
-
13
- def custom!(http_method, http_path, body_data = {})
14
- json = custom_without_assign!(http_method, http_path, body_data)
15
- assign_all_attributes(json)
16
- end
17
-
18
- module ClassMethods
19
- def custom_without_assign!(http_method, http_path, body_data = {})
20
- resp = handling_errors do
21
- connection.send(http_method, http_path) do |req|
22
- req.headers['Content-Type'] = 'application/json'
23
- req.body = JSON.dump(body_data)
24
- end
25
- end
26
- ChartMogul::Utils::JSONParser.parse(resp.body)
27
- end
28
-
29
- def custom!(http_method, http_path, body_data = {})
30
- json = custom_without_assign!(http_method, http_path, body_data)
31
- new_from_json(json)
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
1
+ module ChartMogul
2
+ module API
3
+ module Actions
4
+ module Custom
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ def custom_without_assign!(http_method, http_path, body_data = {})
10
+ self.class.custom_without_assign!(http_method, http_path, body_data)
11
+ end
12
+
13
+ def custom!(http_method, http_path, body_data = {})
14
+ json = custom_without_assign!(http_method, http_path, body_data)
15
+ assign_all_attributes(json)
16
+ end
17
+
18
+ module ClassMethods
19
+ def custom_without_assign!(http_method, http_path, body_data = {})
20
+ resp = handling_errors do
21
+ connection.send(http_method, http_path) do |req|
22
+ req.headers['Content-Type'] = 'application/json'
23
+ req.body = JSON.dump(body_data)
24
+ end
25
+ end
26
+ ChartMogul::Utils::JSONParser.parse(resp.body)
27
+ end
28
+
29
+ def custom!(http_method, http_path, body_data = {})
30
+ json = custom_without_assign!(http_method, http_path, body_data)
31
+ new_from_json(json)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,28 +1,27 @@
1
- require 'pp'
2
- module ChartMogul
3
- module API
4
- module Actions
5
- module Destroy
6
- def self.included(base)
7
- base.extend ClassMethods
8
- end
9
-
10
- def destroy!
11
- handling_errors do
12
- connection.delete("#{resource_path.apply(self.instance_attributes)}/#{uuid}")
13
- end
14
- true
15
- end
16
-
17
- module ClassMethods
18
- def destroy!(options = {})
19
- handling_errors do
20
- connection.delete("#{resource_path.apply(options)}/#{options[:uuid]}")
21
- end
22
- true
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
1
+ module ChartMogul
2
+ module API
3
+ module Actions
4
+ module Destroy
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ def destroy!
10
+ handling_errors do
11
+ connection.delete("#{resource_path.apply(self.instance_attributes)}/#{uuid}")
12
+ end
13
+ true
14
+ end
15
+
16
+ module ClassMethods
17
+ def destroy!(options = {})
18
+ handling_errors do
19
+ connection.delete("#{resource_path.apply(options)}/#{options[:uuid]}")
20
+ end
21
+ true
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ module ChartMogul
2
+ module API
3
+ module Actions
4
+ module Retrieve
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ module ClassMethods
10
+ def retrieve(uuid, options = {})
11
+ resp = handling_errors do
12
+ connection.get("#{resource_path.apply(options)}/#{uuid}") do |req|
13
+ req.headers['Content-Type'] = 'application/json'
14
+ end
15
+ end
16
+ json = ChartMogul::Utils::JSONParser.parse(resp.body)
17
+ new_from_json(json)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,19 +1,19 @@
1
- module ChartMogul
2
- module API
3
- module Actions
4
- module Update
5
- def update!
6
- resp = handling_errors do
7
- connection.patch("#{resource_path.apply(self.instance_attributes)}/#{uuid}") do |req|
8
- req.headers['Content-Type'] = 'application/json'
9
- req.body = JSON.dump(self.serialize_for_write)
10
- end
11
- end
12
- json = ChartMogul::Utils::JSONParser.parse(resp.body)
13
-
14
- assign_all_attributes(json)
15
- end
16
- end
17
- end
18
- end
19
- end
1
+ module ChartMogul
2
+ module API
3
+ module Actions
4
+ module Update
5
+ def update!
6
+ resp = handling_errors do
7
+ connection.patch("#{resource_path.apply(self.instance_attributes)}/#{uuid}") do |req|
8
+ req.headers['Content-Type'] = 'application/json'
9
+ req.body = JSON.dump(self.serialize_for_write)
10
+ end
11
+ end
12
+ json = ChartMogul::Utils::JSONParser.parse(resp.body)
13
+
14
+ assign_all_attributes(json)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end