chartmogul-ruby 1.0.1 → 1.0.2

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 (20) hide show
  1. checksums.yaml +4 -4
  2. data/changelog.md +3 -0
  3. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/adds_custom_attributes.yml +0 -0
  4. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/adds_required_tags.yml +0 -0
  5. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/merges_customers.yml +0 -0
  6. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/raises_401_if_invalid_credentials.yml +0 -0
  7. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/raises_404_if_no_customers_found.yml +0 -0
  8. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/raises_422_for_update_with_invalid_data.yml +0 -0
  9. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/removes_custom_attributes.yml +0 -0
  10. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/removes_tags.yml +0 -0
  11. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/returns_all_customers_through_list_all_endpoint.yml +0 -0
  12. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/returns_customer_through_retrieve_endpoint.yml +0 -0
  13. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/returns_right_customers_through_search_endpoint.yml +0 -0
  14. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/updates_custom_attributes.yml +0 -0
  15. data/fixtures/vcr_cassettes/{ChartMogul_Enrichment_Customer → ChartMogul_Customer}/API_Interactions/updates_customer.yml +0 -0
  16. data/lib/chartmogul/customer.rb +101 -11
  17. data/lib/chartmogul/data_source.rb +1 -0
  18. data/lib/chartmogul/enrichment/customer.rb +11 -2
  19. data/lib/chartmogul/version.rb +1 -1
  20. metadata +15 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 328c6007bb38235b2ba6105d29f2955bb937307b
4
- data.tar.gz: cb707fb9b221b5fe83ebfb75ab4c7f86172f1666
3
+ metadata.gz: af78d54ace12411026ce9ee9a25248f092428f2c
4
+ data.tar.gz: 4fd3512f3b39ee8df129f94cf2994f7cc0983fdc
5
5
  SHA512:
6
- metadata.gz: cb65cca1c49f24694f0afc6bf352dd3d9576b6d8828c3ae0ccdc8204de43bb9b287cbbe660f765ca11cdcbb820213bd14fa841417e9902e3ecb8981c8ccc4be9
7
- data.tar.gz: 93deaa8c4a6a3eef1aadb18f6beff031d596ad6d81485f5a1eddfe7009927ad7c495e2b351c6d04d255b326f94af1fa156ca85b5104d9c686a60944ff5727e43
6
+ metadata.gz: 1b317b68430c609ba27240dd6fdd12f7ab92293b72d11dd45813e937af7d509e71ddc185d19964bf199be02433001a00dba04d4d4a6c9f95467c65fdf53b3a91
7
+ data.tar.gz: 60ef9540f2486f9ee9cad87a327df056e12c300a04e44a7051d04bfcf21e3e0e33a6d31be863e657f437abeb9c08db235b64aab1933654dbfd04266ded1438e0
data/changelog.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # chartmogul-ruby Change Log
2
2
 
3
+ ## Version 1.0.2 - 6 March 2017
4
+ - Consolidated Customer, Enrichment/Customer now deprecated
5
+
3
6
  ## Version 1.0.1 - 21 February 2017
4
7
  - Fixed all() in Customer, now returns Customers with paging
5
8
 
@@ -4,7 +4,22 @@ module ChartMogul
4
4
  set_resource_path '/v1/customers'
5
5
 
6
6
  readonly_attr :uuid
7
+ readonly_attr :id
7
8
 
9
+ readonly_attr :status
10
+ readonly_attr :customer_since, type: :time
11
+ readonly_attr :address
12
+ readonly_attr :mrr
13
+ readonly_attr :arr
14
+ readonly_attr :billing_system_url
15
+ readonly_attr :chartmogul_url
16
+ readonly_attr :billing_system_type
17
+ readonly_attr :currency
18
+ readonly_attr :currency_sign
19
+ readonly_attr :data_source_uuids
20
+ readonly_attr :external_ids
21
+
22
+ writeable_attr :attributes
8
23
  writeable_attr :external_id
9
24
  writeable_attr :name
10
25
  writeable_attr :email
@@ -18,12 +33,18 @@ module ChartMogul
18
33
  writeable_attr :free_trial_started_at, type: :time
19
34
 
20
35
  include API::Actions::Create
36
+ include API::Actions::Update
37
+ include API::Actions::Custom
21
38
  include API::Actions::Destroy
22
39
 
23
40
  def self.all(options = {})
24
41
  Customers.all(options)
25
42
  end
26
43
 
44
+ def self.retrieve(uuid)
45
+ custom!(:get, "/v1/customers/#{uuid}")
46
+ end
47
+
27
48
  def self.search(email)
28
49
  Customers.search(email)
29
50
  end
@@ -44,22 +65,91 @@ module ChartMogul
44
65
  @invoices = ChartMogul::CustomerInvoices.new(customer_uuid: uuid, invoices: invoices_array)
45
66
  end
46
67
 
68
+ # Enrichment
69
+ def tags
70
+ @attributes[:tags]
71
+ end
72
+
73
+ def custom_attributes
74
+ @attributes[:custom]
75
+ end
76
+
77
+ def add_tags!(*tags)
78
+ self.tags = custom_without_assign!(:post,
79
+ "/v1/customers/#{uuid}/attributes/tags",
80
+ tags: tags)[:tags]
81
+ end
82
+
83
+ def remove_tags!(*tags)
84
+ self.tags = custom_without_assign!(:delete,
85
+ "/v1/customers/#{uuid}/attributes/tags",
86
+ tags: tags)[:tags]
87
+ end
88
+
89
+ def add_custom_attributes!(*custom_attrs)
90
+ self.custom_attributes = custom_without_assign!(:post,
91
+ "/v1/customers/#{uuid}/attributes/custom",
92
+ custom: custom_attrs)[:custom]
93
+ end
94
+
95
+ def update_custom_attributes!(custom_attrs = {})
96
+ self.custom_attributes = custom_without_assign!(:put,
97
+ "/v1/customers/#{uuid}/attributes/custom",
98
+ custom: custom_attrs)[:custom]
99
+ end
100
+
101
+ def remove_custom_attributes!(*custom_attrs)
102
+ self.custom_attributes = custom_without_assign!(:delete,
103
+ "/v1/customers/#{uuid}/attributes/custom",
104
+ custom: custom_attrs)[:custom]
105
+ end
106
+
107
+ def merge_into!(other_customer)
108
+ options = {
109
+ from: { customer_uuid: uuid },
110
+ into: { customer_uuid: other_customer.uuid }
111
+ }
112
+ custom!(:post, '/v1/customers/merges', options)
113
+ true
114
+ end
115
+
116
+ private
47
117
 
48
- class Customers < APIResource
49
- set_resource_name 'Customers'
50
- set_resource_path '/v1/customers'
118
+ def tags=(tags)
119
+ @attributes[:tags] = tags
120
+ end
51
121
 
52
- include Concerns::Entries
53
- include API::Actions::Custom
54
- include Concerns::Pageable
55
- include Concerns::Pageable2
122
+ def custom_attributes=(custom_attributes = {})
123
+ @attributes[:custom] = typecast_custom_attributes(custom_attributes)
124
+ end
56
125
 
57
- set_entry_class Customer
126
+ def set_attributes(attributes_attributes)
127
+ @attributes = attributes_attributes
128
+ @attributes[:custom] = typecast_custom_attributes(attributes_attributes[:custom])
129
+ end
58
130
 
59
- def self.search(email)
60
- path = ChartMogul::ResourcePath.new('/v1/customers/search')
61
- custom!(:get, path.apply_with_get_params(email: email))
131
+ def typecast_custom_attributes(custom_attributes)
132
+ return {} unless custom_attributes
133
+ custom_attributes.each_with_object({}) do |(key, value), hash|
134
+ hash[key] = value.instance_of?(String) ? (Time.parse(value) rescue value) : value
62
135
  end
63
136
  end
64
137
  end
138
+
139
+ class Customers < APIResource
140
+ set_resource_name 'Customers'
141
+ set_resource_path '/v1/customers'
142
+
143
+ include Concerns::Entries
144
+ include API::Actions::Custom
145
+ include Concerns::Pageable
146
+ include Concerns::Pageable2
147
+
148
+ set_entry_class Customer
149
+
150
+ def self.search(email)
151
+ path = ChartMogul::ResourcePath.new('/v1/customers/search')
152
+ custom!(:get, path.apply_with_get_params(email: email))
153
+ end
154
+ end
65
155
  end
@@ -6,6 +6,7 @@ module ChartMogul
6
6
 
7
7
  readonly_attr :uuid
8
8
  readonly_attr :status
9
+ readonly_attr :system
9
10
  readonly_attr :created_at, type: :time
10
11
 
11
12
  writeable_attr :name
@@ -1,6 +1,9 @@
1
1
  module ChartMogul
2
2
  module Enrichment
3
- class Customer < APIResource
3
+
4
+ # <b>DEPRECATED:</b> Please use <tt>ChartMogul/Customer</tt> instead.
5
+ class DeprecatedCustomer < APIResource
6
+
4
7
  set_resource_name 'Customer'
5
8
  set_resource_path '/v1/customers'
6
9
 
@@ -113,6 +116,12 @@ module ChartMogul
113
116
  end
114
117
  end
115
118
 
119
+ def self.const_missing(const_name)
120
+ super unless const_name == :Customer
121
+ warn "DEPRECATION WARNING: the class ChartMogul::Enrichment::Customer is deprecated. Use ChartMogul::Customer instead."
122
+ DeprecatedCustomer
123
+ end
124
+
116
125
  class Customers < APIResource
117
126
  set_resource_name 'Customers'
118
127
  set_resource_path '/v1/customers'
@@ -121,7 +130,7 @@ module ChartMogul
121
130
  include API::Actions::Custom
122
131
  include Concerns::Pageable
123
132
 
124
- set_entry_class Customer
133
+ set_entry_class DeprecatedCustomer
125
134
 
126
135
  def self.search(email)
127
136
  path = ChartMogul::ResourcePath.new('/v1/customers/search')
@@ -1,3 +1,3 @@
1
1
  module ChartMogul
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  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.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Langenauer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-21 00:00:00.000000000 Z
11
+ date: 2017-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -112,8 +112,21 @@ files:
112
112
  - bin/setup
113
113
  - changelog.md
114
114
  - chartmogul-ruby.gemspec
115
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_custom_attributes.yml
116
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/adds_required_tags.yml
115
117
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_handles_a_422_response.yml
116
118
  - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/correctly_interracts_with_the_API.yml
119
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/merges_customers.yml
120
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_401_if_invalid_credentials.yml
121
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_404_if_no_customers_found.yml
122
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/raises_422_for_update_with_invalid_data.yml
123
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_custom_attributes.yml
124
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/removes_tags.yml
125
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_all_customers_through_list_all_endpoint.yml
126
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_customer_through_retrieve_endpoint.yml
127
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/returns_right_customers_through_search_endpoint.yml
128
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_custom_attributes.yml
129
+ - fixtures/vcr_cassettes/ChartMogul_Customer/API_Interactions/updates_customer.yml
117
130
  - fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_matching_user_if_exists.yml
118
131
  - fixtures/vcr_cassettes/ChartMogul_Customer/_find_by_external_id/when_external_id_is_provided/returns_nil_if_customer_does_not_exist.yml
119
132
  - fixtures/vcr_cassettes/ChartMogul_CustomerInvoices/API_Interactions/correctly_interracts_with_the_API.yml
@@ -121,19 +134,6 @@ files:
121
134
  - fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_404.yml
122
135
  - fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_422.yml
123
136
  - fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/retrieves_existing_data_source_matching_uuid.yml
124
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/adds_custom_attributes.yml
125
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/adds_required_tags.yml
126
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/merges_customers.yml
127
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/raises_401_if_invalid_credentials.yml
128
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/raises_404_if_no_customers_found.yml
129
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/raises_422_for_update_with_invalid_data.yml
130
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/removes_custom_attributes.yml
131
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/removes_tags.yml
132
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/returns_all_customers_through_list_all_endpoint.yml
133
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/returns_customer_through_retrieve_endpoint.yml
134
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/returns_right_customers_through_search_endpoint.yml
135
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/updates_custom_attributes.yml
136
- - fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/updates_customer.yml
137
137
  - fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml
138
138
  - fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/should_have_entries.yml
139
139
  - fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml