mailchimp3 1.5.1 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 564fb3786d7423ea5a754d20a27ebf36fd74d2632dccad2a44519f244f9d9659
4
- data.tar.gz: b5c95259d49bcc670e4f8056dd6e095dafa2fb6a65760f379907fef9d0d1f0eb
3
+ metadata.gz: f1cc50c5f6d8d2898fe0bf2a0f862fc88c3cdb07cfde3b7e09f8027cd7be7ef2
4
+ data.tar.gz: b9544cac7e434bdec8b7c50ec7e6343fefb03dcc2c45b379b6c11d9803d2c3fb
5
5
  SHA512:
6
- metadata.gz: f651eb58e4dd3400ed26a7e5f961e2bfd099b3a169df6cfa35ac5c2f2f812c25d7d8abe4d4ebacab64437882264a9fe8d1e26d395e6c43cbcd12fa77a82dedc4
7
- data.tar.gz: 2682cad9d1731968fc2c889454f0c9bb2f8f55212be1e795f227b910ca1c849ab72462f8ca00c6a37e8a618d81212dccd35f744cba273c133a904b2fcbee5a04
6
+ metadata.gz: 53d816a6bb62f88d0f4e6700d6a7952c781ebdd09af0aa439cc0e0f199e4109c54588ba1bde5e4976d2c3f9c7938205715bd016dd5f44405be8f3c006f44272f
7
+ data.tar.gz: eddcf4862840096d46f5cc49e2cd14ce87eb0a8282e6bcdafdf243a67c372ac7eab94aaf294ac3485e35fcbfc3239b1c5bcb6fc06376212f5bbfb83828a5d9c2
data/README.md CHANGED
@@ -1,10 +1,9 @@
1
1
  # MailChimp3
2
2
 
3
- [![Circle CI](https://circleci.com/gh/seven1m/mailchimp3/tree/master.svg?style=svg)](https://circleci.com/gh/seven1m/mailchimp3/tree/master)
3
+ [![CircleCI](https://circleci.com/gh/planningcenter/mailchimp3/tree/master.svg?style=svg)](https://circleci.com/gh/planningcenter/mailchimp3/tree/master)
4
4
 
5
- `mailchimp3` is a Rubygem that provides a very thin, simple wrapper around the MailChimp RESTful JSON API version 3.0
6
- documented at [kb.mailchimp.com/api](http://kb.mailchimp.com/api/). (The wrapper also works with the 2.0 API if you
7
- just use the `post` method. See 2.0 section later in this document.)
5
+ `mailchimp3` is a Rubygem that provides a very thin, simple wrapper around the MailChimp RESTful JSON "Marketing" API version 3
6
+ documented at [mailchimp.com/developer/marketing/api](https://mailchimp.com/developer/marketing/api/).
8
7
 
9
8
  This wrapper is very low-level -- you'll still be dealing with individual GET, POST, PATCH, and DELETE requests, but the gem
10
9
  handles the OAuth2 flow (getting a token), passing the auth token in every request, and raises descriptive errors you can easily rescue
@@ -185,7 +184,18 @@ api.lists.post(
185
184
  }
186
185
  ```
187
186
 
188
- ## get()
187
+ ## method_missing(endpoint_name)
188
+
189
+ Anything you append to the end gets handled by `method_missing` and returns a new Endpoint object.
190
+ This is what allows this gem work with any endpoint without the library code needing to be updated.
191
+
192
+ ## \[](endpoint_name_or_id)
193
+
194
+ Similar to the `method_missing` above, `endpoint['whatever']` and `endpoint[123]` are handled dynamically,
195
+ which allows you to build endpoints containing numbers, hyphens, or other characters not allowed by a
196
+ Ruby method name.
197
+
198
+ ## get(params = {})
189
199
 
190
200
  `get()` works for a collection (index) and a single resource (show).
191
201
 
@@ -199,7 +209,9 @@ api.lists['abc123'].members['cde345'].get
199
209
  # => resource_hash
200
210
  ```
201
211
 
202
- ## post()
212
+ If the endpoint accepts parameters, you can pass them in the `params` hash.
213
+
214
+ ## post(body = {})
203
215
 
204
216
  `post()` sends a POST request to create a new resource.
205
217
 
@@ -208,7 +220,9 @@ api.lists['abc123'].members.post(...)
208
220
  # => resource_hash
209
221
  ```
210
222
 
211
- ## patch()
223
+ The parameter given is sent as the body of the request. See [Example](#example) above.
224
+
225
+ ## patch(body = {})
212
226
 
213
227
  `patch()` sends a PATCH request to update an existing resource.
214
228
 
@@ -217,6 +231,8 @@ api.lists['abc123'].members['cde345'].patch(...)
217
231
  # => resource_hash
218
232
  ```
219
233
 
234
+ The parameter given is sent as the body of the request. See [Example](#example) above.
235
+
220
236
  ## delete()
221
237
 
222
238
  `delete()` sends a DELETE request to delete an existing resource. This method returns `true` if the delete was successful.
@@ -273,21 +289,6 @@ The `message` should be a simple string given by the API, e.g. "Resource Not Fou
273
289
  Alternatively, you may rescue `MailChimp3::Errors::BaseError` and branch your code based on
274
290
  the status code returned by calling `error.status`.
275
291
 
276
- ## MailChimp 2.0 API
277
-
278
- This wrapper works with MailChimp's soon-to-be-deprecated 2.0 API. You need only use the `v2` path and the `post` method
279
- for all your calls, like so:
280
-
281
- ```ruby
282
- api.v2.lists['member-activity'].post(id: 'abc123', emails: [{email: 'tim@timmorgan.org'}])
283
- ```
284
-
285
- Some notes:
286
-
287
- 1. Call `v2` to switch to the 2.0 API, then add other path elements after that.
288
- 2. Any path element with a hyphen will need to use the array access syntax, e.g. `lists['member-activity']` not `lists.member-activity`.
289
- 3. You must use the `post` method for every call.
290
-
291
292
  ## Copyright & License
292
293
 
293
- Copyright 2015, Tim Morgan. Licensed MIT.
294
+ Copyright 2021, Planning Center. Licensed MIT.
@@ -16,12 +16,12 @@ module MailChimp3
16
16
  @cache = {}
17
17
  end
18
18
 
19
- def method_missing(method_name, *_args)
20
- _build_endpoint(method_name.to_s)
19
+ def method_missing(endpoint_name, *_args)
20
+ _build_endpoint(endpoint_name.to_s)
21
21
  end
22
22
 
23
- def [](id)
24
- _build_endpoint(id.to_s)
23
+ def [](endpoint_name_or_id)
24
+ _build_endpoint(endpoint_name_or_id.to_s)
25
25
  end
26
26
 
27
27
  def get(params = {})
@@ -81,23 +81,23 @@ module MailChimp3
81
81
  when 200..299
82
82
  body
83
83
  when 400
84
- fail Errors::BadRequest, status: status, body: body
84
+ fail Errors::BadRequest.new(status: status, body: body)
85
85
  when 401
86
- fail Errors::Unauthorized, status: status, body: body
86
+ fail Errors::Unauthorized.new(status: status, body: body)
87
87
  when 403
88
- fail Errors::Forbidden, status: status, body: body
88
+ fail Errors::Forbidden.new(status: status, body: body)
89
89
  when 404
90
- fail Errors::NotFound, status: status, body: body
90
+ fail Errors::NotFound.new(status: status, body: body)
91
91
  when 405
92
- fail Errors::MethodNotAllowed, status: status, body: body
92
+ fail Errors::MethodNotAllowed.new(status: status, body: body)
93
93
  when 422
94
- fail Errors::UnprocessableEntity, status: status, body: body
94
+ fail Errors::UnprocessableEntity.new(status: status, body: body)
95
95
  when 400..499
96
- fail Errors::ClientError, status: status, body: body
96
+ fail Errors::ClientError.new(status: status, body: body)
97
97
  when 500
98
- fail Errors::InternalServerError, status: status, body: body
98
+ fail Errors::InternalServerError.new(status: status, body: body)
99
99
  when 500..599
100
- fail Errors::ServerError, status: status, body: body
100
+ fail Errors::ServerError.new(status: status, body: body)
101
101
  else
102
102
  fail "unknown status #{status}"
103
103
  end
@@ -106,7 +106,7 @@ module MailChimp3
106
106
  def _parse_body(result)
107
107
  JSON.parse(result.body)
108
108
  rescue JSON::ParserError
109
- raise Errors::ServerError, status: result.status, body: result.body
109
+ raise Errors::ServerError.new(status: result.status, body: result.body)
110
110
  end
111
111
 
112
112
  def _build_endpoint(path)
@@ -1,3 +1,3 @@
1
1
  module MailChimp3
2
- VERSION = '1.5.1'
2
+ VERSION = '1.5.2'
3
3
  end
data/lib/mailchimp3.rb CHANGED
@@ -5,8 +5,8 @@ require_relative 'mailchimp3/errors'
5
5
  module MailChimp3
6
6
  module_function
7
7
 
8
- def new(*args)
9
- Endpoint.new(*args)
8
+ def new(**kwargs)
9
+ Endpoint.new(**kwargs)
10
10
  end
11
11
 
12
12
  def config
@@ -1,6 +1,12 @@
1
1
  require_relative 'spec_helper'
2
2
 
3
3
  describe MailChimp3 do
4
+ describe '#new' do
5
+ it 'smoke test' do
6
+ expect(subject.new(basic_auth_key: 'key-us2').url).not_to be_nil
7
+ end
8
+ end
9
+
4
10
  describe '#config' do
5
11
  it 'returns configuration object' do
6
12
  subject.config.client_id = 'foo'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailchimp3
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Morgan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-10 00:00:00.000000000 Z
11
+ date: 2023-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -117,7 +117,7 @@ homepage: https://github.com/seven1m/mailchimp3
117
117
  licenses:
118
118
  - MIT
119
119
  metadata: {}
120
- post_install_message:
120
+ post_install_message:
121
121
  rdoc_options: []
122
122
  require_paths:
123
123
  - lib
@@ -132,12 +132,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  - !ruby/object:Gem::Version
133
133
  version: '0'
134
134
  requirements: []
135
- rubygems_version: 3.0.3.1
136
- signing_key:
135
+ rubygems_version: 3.4.2
136
+ signing_key:
137
137
  specification_version: 4
138
138
  summary: wrapper for MailChimp's 3.0 API
139
139
  test_files:
140
- - spec/spec_helper.rb
141
- - spec/mailchimp3_spec.rb
142
140
  - spec/mailchimp3/endpoint_spec.rb
143
141
  - spec/mailchimp3/oauth_spec.rb
142
+ - spec/mailchimp3_spec.rb
143
+ - spec/spec_helper.rb