mailgun-ruby 1.1.5 → 1.1.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 55f7b59eef02feab663dbffa1a3da56692c37737
4
- data.tar.gz: 2d6ad04ff6ee6607554fcffea4453bb751a0162a
3
+ metadata.gz: e16b23def5c2076ebf90803c69e67c11275dd4cf
4
+ data.tar.gz: 538a0a0aa99f037d0ef044fc9d427483eb4073b1
5
5
  SHA512:
6
- metadata.gz: 70292ac10f56e185894bf288861c861dcb16a03157bba9fe6bb4498f074ad56521fbe8ced7d2b609275742650293304fd26f3ec276fcca7f103e3e6d030c1c7c
7
- data.tar.gz: 919717c8e88c1d8671be798a9ce53c4db246dd11927b74d0bb555b6bc2b34c00315c13337570197a7fdf2b84e13f9d2550013abd15e04574ec2f1e7df9f58c96
6
+ metadata.gz: 4c76cf234af827e8280e5eaa466d961817d30c3875345f4c481871ac8ca5083f11d4257ab06531c12dd693eab09e70910e6feaa13576766cd689caa32653c1f6
7
+ data.tar.gz: 305a1d5edc83fef3006682c884d9abee4ecf190e40919008b8985e6a86e5dd4f1506c3344a7641f67a435a5a3f510f1e350fb63daccb25fbcdec5cbfc1a20617
@@ -7,6 +7,6 @@
7
7
  # Replace <THESE_VALUES> with yours from
8
8
  # https://mailgun.com/app/dashboard (don't include <brackets>)
9
9
  # and rename to/save as: .ruby-env.yml
10
- MAILGUN_APIKEY : '<MAILGUN_APIKEY'>
10
+ MAILGUN_APIKEY : '<MAILGUN_APIKEY>'
11
11
  MAILGUN_PUB_APIKEY : '<MAILGUN_PUBLIC_APIKEY>'
12
12
  MAILGUN_TESTDOMAIN : '<MAILGUN_SANDBOX_DOMAIN>'
data/README.md CHANGED
@@ -19,7 +19,7 @@ gem install mailgun-ruby
19
19
  Gemfile:
20
20
 
21
21
  ```ruby
22
- gem 'mailgun-ruby', '~>1.1.4'
22
+ gem 'mailgun-ruby', '~>1.1.6'
23
23
  ```
24
24
 
25
25
  Usage
@@ -150,12 +150,14 @@ For usage examples on each API endpoint, head over to our official documentation
150
150
  pages. Or the [Snippets](docs/Snippets.md) file.
151
151
 
152
152
  This SDK includes the following components:
153
+ - [Messages](docs/Messages.md)
153
154
  - [Message Builder](docs/MessageBuilder.md)
154
155
  - [Batch Message](docs/MessageBuilder.md)
155
156
  - [Opt-In Handler](docs/OptInHandler.md)
156
157
  - [Domains](docs/Domains.md)
157
158
  - [Webhooks](docs/Webhooks.md)
158
159
  - [Events](docs/Events.md)
160
+ - [Suppressions](docs/Suppressions.md)
159
161
 
160
162
  Message Builder allows you to quickly create the array of parameters, required
161
163
  to send a message, by calling a methods for each parameter.
@@ -163,6 +165,31 @@ Batch Message is an extension of Message Builder, and allows you to easily send
163
165
  a batch message job within a few seconds. The complexity of
164
166
  batch messaging is eliminated!
165
167
 
168
+ Testing mail deliveries
169
+ ----------------------
170
+
171
+ ```ruby
172
+ # First, instantiate the Mailgun Client with your API key
173
+ mg_client = Mailgun::Client.new 'your-api-key'
174
+
175
+ # Put the client in test mode
176
+ mg_client.enable_test_mode!
177
+
178
+ # Define your message parameters
179
+ message_params = { from: 'bob@sending_domain.com',
180
+ to: 'sally@example.com',
181
+ subject: 'The Ruby SDK is awesome!',
182
+ text: 'It is really easy to send a message!'
183
+ }
184
+
185
+ # Send your message through the client
186
+ # Note: This will not actually hit the API, and will return a generic OK response.
187
+ mg_client.send_message('sending_domain.com', message_params)
188
+
189
+ # You can now access a copy of message_params
190
+ Mailgun::Client.deliveries.first[:from] # => 'bob@sending_domain.com'
191
+ ```
192
+
166
193
  Testing
167
194
  -------
168
195
 
data/docs/Domains.md CHANGED
@@ -30,6 +30,24 @@ domainer.create 'my.new.moreness', { some: 'options' }
30
30
  domainer.remove 'this.one.is.not.needed.'
31
31
  ```
32
32
 
33
+ Suppressions for a Domain
34
+ -------------------------
35
+
36
+ You can manage domain suppressions (bounces, unsubscribes, complaints) using the
37
+ [`Mailgun::Suppressions`](/docs/Suppressions.md) client:
38
+
39
+ ```ruby
40
+ # Instantiate the Mailgun Client with your API key
41
+ mg_client = Mailgun::Client.new('your-api-key')
42
+ supp_client = mg_client.suppressions('example.org')
43
+
44
+ # ...
45
+ ```
46
+
47
+ See the [Suppressions](/docs/Suppressions.md) for usage samples and
48
+ [suppressions.rb](/lib/mailgun/suppressions.rb) for suppressions client API.
49
+
50
+
33
51
  More Documentation
34
52
  ------------------
35
53
  See the official [Mailgun Domain Docs](https://documentation.mailgun.com/api-domains.html)
@@ -78,7 +78,7 @@ mg_client = Mailgun::Client.new("your-api-key")
78
78
  mb_obj = Mailgun::BatchMessage.new(mg_client, "example.com")
79
79
 
80
80
  # Define the from address.
81
- mb_obj.from("me@example.com", {"first"=>"Ruby", "last" => "SDK"});
81
+ mb_obj.from("me@example.com", {"first" => "Ruby", "last" => "SDK"});
82
82
 
83
83
  # Define the subject.
84
84
  mb_obj.subject("A message from the Ruby SDK using Message Builder!");
data/docs/Messages.md CHANGED
@@ -79,7 +79,7 @@ mb_obj.set_text_body("Hello %recipient.first%,
79
79
  This is the text body of the message
80
80
  using recipient variables!
81
81
  If you need to include custom data,
82
- you could do it like this: %account-id%.")
82
+ you could do it like this: %recipient.account-id%.")
83
83
 
84
84
  mb_obj.add_recipient(:to, "john.doe@example.com", {"first" => "John",
85
85
  "last" => "Doe",
@@ -0,0 +1,82 @@
1
+ Mailgun - Suppressions
2
+ ====================
3
+
4
+ This is the Mailgun Ruby *Suppressions* utilities.
5
+
6
+ The below assumes you've already installed the Mailgun Ruby SDK in to your
7
+ project. If not, go back to the master README for instructions. It currently supports
8
+ all calls except credentials.
9
+
10
+ ----
11
+
12
+ The Suppressions client lets you manage bounces, unsubscribes, and complaints for a
13
+ single domain.
14
+
15
+ You can view additional samples in the [suppressions_spec.rb](/spec/integration/suppressions_spec.rb)
16
+ or the Suppressions client API in [suppressions.rb](/lib/mailgun/suppressions.rb).
17
+
18
+
19
+ Usage
20
+ -----
21
+
22
+ To get an instance of the Suppressions client:
23
+
24
+ ```ruby
25
+ mg_client = Mailgun::Client.new('api_key')
26
+ supp_client = mg_client.suppressions('yourdomain.com')
27
+ ```
28
+
29
+ ----
30
+
31
+ To get a list of bounces, unsubscribes, and/or complaints:
32
+
33
+ ```ruby
34
+ supp_client.list_bounces
35
+ supp_client.list_unsubscribes
36
+ supp_client.list_complaints
37
+ ```
38
+
39
+ ----
40
+
41
+ To batch-add a set of bounces:
42
+
43
+ ```ruby
44
+ @addresses = <load or generate some addresses...>
45
+
46
+ bounces = []
47
+ @addresses.each do |addr|
48
+ bounces.push({
49
+ :address => addr,
50
+ :code => 500,
51
+ :error => 'some bounce because reasons',
52
+ })
53
+ end
54
+
55
+ response, addt_responses = @supp_client.create_bounces bounces
56
+ ```
57
+
58
+ `create_bounces`, `create_unsubscribes`, and `create_complaints` will all
59
+ return two values - first, a simple `Mailgun::Response` object. Second,
60
+ a list containing any `Mailgun::Response` objects created recursively, if over 998
61
+ bounces were provided to `create_*`.
62
+
63
+ ----
64
+
65
+ To delete bounces:
66
+
67
+ ```ruby
68
+ @addresses = <load addresses...>
69
+
70
+ @addresses.each do |addr|
71
+ @supp_client.delete_bounce addr
72
+ end
73
+ ```
74
+
75
+ Or, alternatively, to remove *all* bounces:
76
+
77
+ ```ruby
78
+ @supp_client.delete_all_bounces
79
+ ```
80
+
81
+ The `delete_*` methods are similar for `bounces`, `unsubscribe`, and `complaints` -
82
+ they all will return a `Mailgun::Response` object.
@@ -1,4 +1,5 @@
1
1
  require 'mailgun/chains'
2
+ require 'mailgun/suppressions'
2
3
  require 'mailgun/exceptions/exceptions'
3
4
 
4
5
  module Mailgun
@@ -44,6 +45,13 @@ module Mailgun
44
45
  @test_mode
45
46
  end
46
47
 
48
+ # Provides a store of all the emails sent in test mode so you can check them.
49
+ #
50
+ # @return [Hash]
51
+ def self.deliveries
52
+ @@deliveries ||= []
53
+ end
54
+
47
55
  # Simple Message Sending
48
56
  #
49
57
  # @param [String] working_domain This is the domain you wish to send from.
@@ -52,6 +60,7 @@ module Mailgun
52
60
  # @return [Mailgun::Response] A Mailgun::Response object.
53
61
  def send_message(working_domain, data)
54
62
  if test_mode? then
63
+ Mailgun::Client.deliveries << data
55
64
  return Response.from_hash(
56
65
  {
57
66
  :body => '{"id": "test-mode-mail@localhost", "message": "Queued. Thank you."}',
@@ -141,6 +150,14 @@ module Mailgun
141
150
  raise communication_error err
142
151
  end
143
152
 
153
+ # Constructs a Suppressions client for the given domain.
154
+ #
155
+ # @param [String] domain Domain which suppressions requests will be made for
156
+ # @return [Mailgun::Suppressions]
157
+ def suppressions(domain)
158
+ Suppressions.new(self, domain)
159
+ end
160
+
144
161
  private
145
162
 
146
163
  # Converts MIME string to file for easy uploading to API
@@ -11,6 +11,7 @@ module Mailgun
11
11
  #
12
12
  # See the Github documentation for full examples.
13
13
  class Events
14
+ include Enumerable
14
15
 
15
16
  # Public: event initializer
16
17
  #
@@ -23,31 +24,47 @@ module Mailgun
23
24
  @paging_previous = nil
24
25
  end
25
26
 
26
- # Public: Issues a simple get against the client.
27
+ # Public: Issues a simple get against the client. Alias of `next`.
27
28
  #
28
29
  # params - a Hash of query options and/or filters.
29
30
  #
30
31
  # Returns a Mailgun::Response object.
31
32
  def get(params = nil)
32
- get_events(params)
33
+ self.next(params)
33
34
  end
34
35
 
35
36
  # Public: Using built in paging, obtains the next set of data.
36
37
  # If an events request hasn't been sent previously, this will send one
37
38
  # without parameters
38
39
  #
40
+ # params - a Hash of query options and/or filters.
41
+ #
39
42
  # Returns a Mailgun::Response object.
40
- def next
41
- get_events(nil, @paging_next)
43
+ def next(params = nil)
44
+ get_events(params, @paging_next)
42
45
  end
43
46
 
44
47
  # Public: Using built in paging, obtains the previous set of data.
45
48
  # If an events request hasn't been sent previously, this will send one
46
49
  # without parameters
47
50
  #
51
+ # params - a Hash of query options and/or filters.
52
+ #
48
53
  # Returns Mailgun::Response object.
49
- def previous
50
- get_events(nil, @paging_previous)
54
+ def previous(params = nil)
55
+ get_events(params, @paging_previous)
56
+ end
57
+
58
+ # Public: Allows iterating through all events and performs automatic paging.
59
+ #
60
+ # &block - Block to execute on items.
61
+ def each(&block)
62
+ items = self.next.to_h['items']
63
+
64
+ until items.empty?
65
+ items.each(&block)
66
+ items = self.next.to_h['items']
67
+ end
51
68
  end
52
69
 
53
70
  private
@@ -133,6 +133,14 @@ module Mailgun
133
133
  add_file(:inline, inline_image, filename)
134
134
  end
135
135
 
136
+ # Adds a List-Unsubscribe for the message header.
137
+ #
138
+ # @param [Array<String>] *variables Any number of url or mailto
139
+ # @return [void]
140
+ def list_unsubscribe(*variables)
141
+ set_single('h:List-Unsubscribe', variables.map { |var| "<#{var}>" }.join(','))
142
+ end
143
+
136
144
  # Send a message in test mode. (The message won't really be sent to the recipient)
137
145
  #
138
146
  # @param [Boolean] mode The boolean or string value (will fix itself)
@@ -60,16 +60,17 @@ module Mailgun
60
60
  #
61
61
  # @param [Array] data Array of bounce hashes
62
62
  # @return [Response] Mailgun API response
63
- # @return [Array] Array of invalid bounce hashes.
64
63
  # @return [Array] Return values from recursive call for list split.
65
64
  def create_bounces(data)
66
65
  # `data` should be a list of hashes, with each hash containing *at least* an `address` key.
67
66
  split_return = []
68
67
  if data.length >= 1000 then
69
- split_return = create_bounces data[999..-1]
68
+ resp, resp_l = create_bounces data[999..-1]
69
+ split_return.push(resp)
70
+ split_return.concat(resp_l)
70
71
  data = data[0..998]
71
72
  elsif data.length == 0 then
72
- []
73
+ return nil, []
73
74
  end
74
75
 
75
76
  valid = []
@@ -132,16 +133,17 @@ module Mailgun
132
133
  #
133
134
  # @param [Array] data Array of unsubscribe hashes
134
135
  # @return [Response] Mailgun API response
135
- # @return [Array] Array of invalid unsubscribe hashes.
136
136
  # @return [Array] Return values from recursive call for list split.
137
137
  def create_unsubscribes(data)
138
138
  # `data` should be a list of hashes, with each hash containing *at least* an `address` key.
139
139
  split_return = []
140
140
  if data.length >= 1000 then
141
- split_return = create_unsubscribes data[999..-1]
141
+ resp, resp_l = create_unsubscribes data[999..-1]
142
+ split_return.push(resp)
143
+ split_return.concat(resp_l)
142
144
  data = data[0..998]
143
145
  elsif data.length == 0 then
144
- []
146
+ return nil, []
145
147
  end
146
148
 
147
149
  valid = []
@@ -197,16 +199,17 @@ module Mailgun
197
199
  #
198
200
  # @param [Array] data Array of complaint hashes
199
201
  # @return [Response] Mailgun API response
200
- # @return [Array] Array of invalid complaint hashes.
201
202
  # @return [Array] Return values from recursive call for list split.
202
203
  def create_complaints(data)
203
204
  # `data` should be a list of hashes, with each hash containing *at least* an `address` key.
204
205
  split_return = []
205
206
  if data.length >= 1000 then
206
- split_return = create_complaints data[999..-1]
207
+ resp, resp_l = create_complaints data[999..-1]
208
+ split_return.push(resp)
209
+ split_return.concat(resp_l)
207
210
  data = data[0..998]
208
211
  elsif data.length == 0 then
209
- []
212
+ return nil, []
210
213
  end
211
214
 
212
215
  valid = []
@@ -1,4 +1,4 @@
1
1
  # It's the version. Yeay!
2
2
  module Mailgun
3
- VERSION = '1.1.5'
3
+ VERSION = '1.1.6'
4
4
  end
@@ -20,7 +20,7 @@ module Railgun
20
20
  @config = config
21
21
 
22
22
  [:api_key, :domain].each do |k|
23
- raise Railgun::ConfigurationError("Config requires `#{k}` key", @config) unless @config.has_key? k
23
+ raise Railgun::ConfigurationError.new("Config requires `#{k}` key", @config) unless @config.has_key?(k)
24
24
  end
25
25
 
26
26
  @mg_client = Mailgun::Client.new(config[:api_key])
@@ -97,6 +97,7 @@ module Railgun
97
97
  mb = Mailgun::MessageBuilder.new
98
98
 
99
99
  mb.from mail[:from]
100
+ mb.reply_to(mail[:reply_to].to_s) if mail[:reply_to].present?
100
101
  mb.subject mail.subject
101
102
  mb.body_html extract_body_html(mail)
102
103
  mb.body_text extract_body_text(mail)
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'mailgun'
3
+ require 'mailgun/events/events'
3
4
 
4
5
  vcr_opts = { :cassette_name => "events" }
5
6
 
@@ -7,9 +8,10 @@ describe 'For the Events endpoint', vcr: vcr_opts do
7
8
  before(:all) do
8
9
  @mg_obj = Mailgun::Client.new(APIKEY, APIHOST, APIVERSION, SSL)
9
10
  @domain = TESTDOMAIN
11
+ @events = Mailgun::Events.new(@mg_obj, @domain)
10
12
  end
11
13
 
12
- it 'get an event.' do
14
+ it 'can get an event.' do
13
15
  result = @mg_obj.get("#{@domain}/events", {:limit => 1})
14
16
 
15
17
  result.to_h!
@@ -17,4 +19,10 @@ describe 'For the Events endpoint', vcr: vcr_opts do
17
19
  expect(result.body["paging"]).to include("next")
18
20
  expect(result.body["paging"]).to include("previous")
19
21
  end
22
+
23
+ it 'can iterate over all events with `each`' do
24
+ @events.each do |e|
25
+ expect(e.id).to eq("JAx9z641TuGGUyaJlD9sCQ")
26
+ end
27
+ end
20
28
  end
File without changes
File without changes
@@ -5,7 +5,7 @@ describe 'The method get' do
5
5
  @mg_obj = Mailgun::UnitClient.new('events')
6
6
  events = Mailgun::Events.new(@mg_obj, "samples.mailgun.org")
7
7
  result = events.get()
8
-
8
+
9
9
  expect(result.body).to include("items")
10
10
  expect(result.body).to include("paging")
11
11
  end
@@ -17,7 +17,7 @@ describe 'The method next' do
17
17
  @mg_obj = Mailgun::UnitClient.new('events')
18
18
  events = Mailgun::Events.new(@mg_obj, "samples.mailgun.org")
19
19
  result = events.next()
20
-
20
+
21
21
  expect(result.body).to include("items")
22
22
  expect(result.body).to include("paging")
23
23
  end
@@ -33,3 +33,18 @@ describe 'The method previous' do
33
33
  expect(result.body).to include("paging")
34
34
  end
35
35
  end
36
+
37
+ describe 'The method each' do
38
+ it 'should iterate over all event items.' do
39
+ @mg_obj = Mailgun::UnitClient.new('events')
40
+ events = Mailgun::Events.new(@mg_obj, "samples.mailgun.org")
41
+ # Events from the UnitClient are actually empty.
42
+ count = 0
43
+ events.each do |e|
44
+ count = count + 1
45
+ end
46
+
47
+ # Better than nothing..
48
+ expect(count).to eq(0)
49
+ end
50
+ end
@@ -249,6 +249,31 @@ describe 'The method add_inline_image' do
249
249
  end
250
250
  end
251
251
 
252
+ describe 'The method list_unsubscribe' do
253
+ before(:each) do
254
+ @mb_obj = Mailgun::MessageBuilder.new
255
+ end
256
+
257
+ it 'sets the message list_unsubscribe to blank if called and no parameters are provided' do
258
+ @mb_obj.list_unsubscribe
259
+ expect(@mb_obj.message['h:List-Unsubscribe']).to eq('')
260
+ end
261
+
262
+ it 'sets the message list_unsubscribe if called with one list_unsubscribe parameter' do
263
+ unsubscribe_to = 'http://example.com/stop-hassle'
264
+ @mb_obj.list_unsubscribe(unsubscribe_to)
265
+ expect(@mb_obj.message['h:List-Unsubscribe']).to eq("<#{unsubscribe_to}>")
266
+ end
267
+
268
+ it 'sets the message list_unsubscribe if called with many list_unsubscribe parameters' do
269
+ unsubscribe_to = %w(http://example.com/stop-hassle mailto:stop-hassle@example.com)
270
+ @mb_obj.list_unsubscribe(*unsubscribe_to)
271
+ expect(@mb_obj.message['h:List-Unsubscribe']).to eq(
272
+ unsubscribe_to.map { |var| "<#{var}>" }.join(',')
273
+ )
274
+ end
275
+ end
276
+
252
277
  describe 'The method set_test_mode' do
253
278
  it 'warns of set_test_mode deprecation' do
254
279
  @mb_obj = Mailgun::MessageBuilder.new
@@ -58,4 +58,51 @@ http_interactions:
58
58
  \ }\n}"
59
59
  http_version:
60
60
  recorded_at: Thu, 07 Jan 2016 22:08:06 GMT
61
- recorded_with: VCR 3.0.1
61
+ - request:
62
+ method: get
63
+ uri: https://api:<APIKEY>@api.mailgun.net/v3/DOMAIN.TEST/events
64
+ body:
65
+ encoding: US-ASCII
66
+ string: ''
67
+ headers:
68
+ Accept:
69
+ - "*/*"
70
+ Accept-Encoding:
71
+ - gzip, deflate
72
+ User-Agent:
73
+ - rest-client/2.0.1 (linux-gnu x86_64) ruby/2.3.3p222
74
+ Host:
75
+ - api.mailgun.net
76
+ response:
77
+ status:
78
+ code: 200
79
+ message: OK
80
+ headers:
81
+ Access-Control-Allow-Headers:
82
+ - Content-Type, x-requested-with
83
+ Access-Control-Allow-Methods:
84
+ - GET, POST, PUT, DELETE, OPTIONS
85
+ Access-Control-Allow-Origin:
86
+ - "*"
87
+ Access-Control-Max-Age:
88
+ - '600'
89
+ Content-Type:
90
+ - application/json
91
+ Date:
92
+ - Wed, 10 May 2017 20:06:54 GMT
93
+ Server:
94
+ - nginx
95
+ Content-Length:
96
+ - '2060'
97
+ Connection:
98
+ - keep-alive
99
+ body:
100
+ encoding: UTF-8
101
+ string: "{\n \"items\": [], \n \"paging\": {\n \"next\": \"https://api.mailgun.net/v3/DOMAIN.TEST/events/W3siYiI6ICIyMDE3LTA1LTEwVDIwOjA2OjU0LjU3NiswMDowMCIsICJlIjogIjIwMTctMDUtMDhUMjA6MDY6NTQuNTc3KzAwOjAwIn0sIHsiYiI6ICIyMDE3LTA1LTEwVDIwOjA2OjU0LjU3NiswMDowMCIsICJlIjogIjIwMTctMDUtMDhUMjA6MDY6NTQuNTc3KzAwOjAwIn0sIFsiZiJdLCBudWxsLCBbWyJhY2NvdW50LmlkIiwgIjU4MDUyMTg2NzhmYTE2MTNjNzkwYjUwZiJdLCBbImRvbWFpbi5uYW1lIiwgInNhbmRib3gyOTcwMTUyYWYzZDM0NTU5YmZjN2U3MTcwM2E2Y2YyNC5tYWlsZ3VuLm9yZyJdXSwgMTAwLCBudWxsXQ==\",
102
+ \n \"last\": \"https://api.mailgun.net/v3/DOMAIN.TEST/events/W3siYiI6ICIyMDE3LTA1LTEwVDIwOjA2OjU0LjU3NiswMDowMCIsICJlIjogIjIwMTctMDUtMDhUMjA6MDY6NTQuNTc3KzAwOjAwIn0sIHsiYiI6ICIyMDE3LTA1LTA4VDIwOjA2OjU0LjU3NyswMDowMCIsICJlIjogIjIwMTctMDUtMTBUMjA6MDY6NTQuNTc2KzAwOjAwIn0sIFsicCIsICJmIl0sIG51bGwsIFtbImFjY291bnQuaWQiLCAiNTgwNTIxODY3OGZhMTYxM2M3OTBiNTBmIl0sIFsiZG9tYWluLm5hbWUiLCAic2FuZGJveDI5NzAxNTJhZjNkMzQ1NTliZmM3ZTcxNzAzYTZjZjI0Lm1haWxndW4ub3JnIl1dLCAxMDAsIG51bGxd\",
103
+ \n \"first\": \"https://api.mailgun.net/v3/DOMAIN.TEST/events/W3siYiI6ICIyMDE3LTA1LTEwVDIwOjA2OjU0LjU3NiswMDowMCIsICJlIjogIjIwMTctMDUtMDhUMjA6MDY6NTQuNTc3KzAwOjAwIn0sIHsiYiI6ICIyMDE3LTA1LTEwVDIwOjA2OjU0LjU3NiswMDowMCIsICJlIjogIjIwMTctMDUtMDhUMjA6MDY6NTQuNTc3KzAwOjAwIn0sIFsiZiJdLCBudWxsLCBbWyJhY2NvdW50LmlkIiwgIjU4MDUyMTg2NzhmYTE2MTNjNzkwYjUwZiJdLCBbImRvbWFpbi5uYW1lIiwgInNhbmRib3gyOTcwMTUyYWYzZDM0NTU5YmZjN2U3MTcwM2E2Y2YyNC5tYWlsZ3VuLm9yZyJdXSwgMTAwLCBudWxsXQ==\",
104
+ \n \"previous\": \"https://api.mailgun.net/v3/DOMAIN.TEST/events/W3siYiI6ICIyMDE3LTA1LTEwVDIwOjA2OjU0LjU3NiswMDowMCIsICJlIjogIjIwMTctMDUtMDhUMjA6MDY6NTQuNTc3KzAwOjAwIn0sIHsiYiI6ICIyMDE3LTA1LTEwVDIwOjA2OjU0LjU3NiswMDowMCIsICJlIjogIjIwMTctMDUtMTBUMjA6MDY6NTQuNTc3KzAwOjAwIn0sIFsicCIsICJmIl0sIG51bGwsIFtbImFjY291bnQuaWQiLCAiNTgwNTIxODY3OGZhMTYxM2M3OTBiNTBmIl0sIFsiZG9tYWluLm5hbWUiLCAic2FuZGJveDI5NzAxNTJhZjNkMzQ1NTliZmM3ZTcxNzAzYTZjZjI0Lm1haWxndW4ub3JnIl1dLCAxMDAsIG51bGxd\"\n
105
+ \ }\n}"
106
+ http_version:
107
+ recorded_at: Wed, 10 May 2017 20:06:54 GMT
108
+ recorded_with: VCR 3.0.3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailgun-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mailgun
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-02-27 00:00:00.000000000 Z
12
+ date: 2017-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -144,6 +144,7 @@ files:
144
144
  - docs/Messages.md
145
145
  - docs/OptInHandler.md
146
146
  - docs/Snippets.md
147
+ - docs/Suppressions.md
147
148
  - docs/Webhooks.md
148
149
  - lib/mailgun-ruby.rb
149
150
  - lib/mailgun.rb