mailgun-ruby 1.1.3 → 1.1.4
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 +4 -4
- data/.travis.yml +6 -4
- data/README.md +17 -8
- data/{Domains.md → docs/Domains.md} +0 -0
- data/{Events.md → docs/Events.md} +0 -0
- data/{MessageBuilder.md → docs/MessageBuilder.md} +20 -4
- data/{Messages.md → docs/Messages.md} +2 -2
- data/{OptInHandler.md → docs/OptInHandler.md} +0 -0
- data/{Snippets.md → docs/Snippets.md} +20 -0
- data/{Webhooks.md → docs/Webhooks.md} +0 -0
- data/lib/mailgun-ruby.rb +2 -1
- data/lib/mailgun/client.rb +5 -0
- data/lib/mailgun/messages/batch_message.rb +2 -2
- data/lib/mailgun/messages/message_builder.rb +50 -23
- data/lib/mailgun/version.rb +1 -1
- data/lib/railgun.rb +1 -3
- data/lib/railgun/mailer.rb +0 -2
- data/lib/railgun/railtie.rb +9 -0
- data/mailgun.gemspec +1 -1
- data/spec/unit/messages/message_builder_spec.rb +18 -6
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7a3d2306cc5f23a9f5b198bbcef7767be64f1bc
|
4
|
+
data.tar.gz: aa73b428690d284c293a89e848359a9f7617476a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56e7617f35b16862fee5b06a428d45925447edb12f1d721fdc87e8c382b8db140f40d1de4a5c63de59c96904e1f4322c80097aac7dc3cab838dc2d945922ab42
|
7
|
+
data.tar.gz: ce165c6784831eed9240ef7b51b3ba855bea5066a5b294cbf3450eef321ddc33dd3d879d477b7c23cb8f80f4ac02f9125e26e3432f2273f69ec68ab9483aa928
|
data/.travis.yml
CHANGED
@@ -1,21 +1,23 @@
|
|
1
1
|
language: ruby
|
2
2
|
sudo: false
|
3
3
|
rvm:
|
4
|
-
- 2.3.1
|
5
|
-
- 2.2
|
6
|
-
- 2.1
|
7
4
|
- 2.0.0
|
5
|
+
- 2.1
|
6
|
+
- 2.2
|
7
|
+
- 2.3.1
|
8
8
|
script:
|
9
|
+
- bundle install
|
9
10
|
- bundle exec rake spec
|
10
11
|
- '[[ "${TRAVIS_PULL_REQUEST}" == "false" ]] && ( bundle exec rake spec:integration
|
11
12
|
) || ( echo "Testing PR - No integration tests available")'
|
12
13
|
deploy:
|
13
14
|
provider: rubygems
|
14
15
|
api_key:
|
15
|
-
secure:
|
16
|
+
secure: DoX3w48gRyhDM1o1OLvtWsTi8ehLIarIsErzg/UlNRoLacQt5l5UzwD+u6wqsCEr4+c2uAHNahafpnw/j1rPG3LBPIXOK5A0SYbjovlckutiAC0330Q4PHwOZb73AFN1DG5JTeg4/fguEjdsEBdZObF7mh5gBMBQtNjo1Fos+4w=
|
16
17
|
gemspec: mailgun.gemspec
|
17
18
|
on:
|
18
19
|
tags: true
|
20
|
+
condition: "$TRAVIS_RUBY_VERSION == 2.3.1"
|
19
21
|
notifications:
|
20
22
|
slack:
|
21
23
|
rooms:
|
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.
|
22
|
+
gem 'mailgun-ruby', '~>1.1.4'
|
23
23
|
```
|
24
24
|
|
25
25
|
Usage
|
@@ -67,6 +67,15 @@ end
|
|
67
67
|
```
|
68
68
|
Or have the initializer read your environment setting if you perfer.
|
69
69
|
|
70
|
+
To use as the ActionMailer delivery method, add this to your `config/environments/whatever.yml`
|
71
|
+
and replace `api-myapikey` and `mydomain.com` with your secret API key and domain, respectively:
|
72
|
+
```ruby
|
73
|
+
config.action_mailer.delivery_method = :mailgun
|
74
|
+
config.action_mailer.mailgun_settings = {
|
75
|
+
api_key: 'api-myapikey',
|
76
|
+
domain: 'mydomain.com',
|
77
|
+
}
|
78
|
+
```
|
70
79
|
|
71
80
|
Response
|
72
81
|
--------
|
@@ -138,15 +147,15 @@ mg_client.send_message("sending_domain.com", message_params)
|
|
138
147
|
```
|
139
148
|
|
140
149
|
For usage examples on each API endpoint, head over to our official documentation
|
141
|
-
pages. Or the [Snippets](Snippets.md) file.
|
150
|
+
pages. Or the [Snippets](docs/Snippets.md) file.
|
142
151
|
|
143
152
|
This SDK includes the following components:
|
144
|
-
- [Message Builder](MessageBuilder.md)
|
145
|
-
- [Batch Message](MessageBuilder.md)
|
146
|
-
- [Opt-In Handler](OptInHandler.md)
|
147
|
-
- [Domains](Domains.md)
|
148
|
-
- [Webhooks](Webhooks.md)
|
149
|
-
- [Events](Events.md)
|
153
|
+
- [Message Builder](docs/MessageBuilder.md)
|
154
|
+
- [Batch Message](docs/MessageBuilder.md)
|
155
|
+
- [Opt-In Handler](docs/OptInHandler.md)
|
156
|
+
- [Domains](docs/Domains.md)
|
157
|
+
- [Webhooks](docs/Webhooks.md)
|
158
|
+
- [Events](docs/Events.md)
|
150
159
|
|
151
160
|
Message Builder allows you to quickly create the array of parameters, required
|
152
161
|
to send a message, by calling a methods for each parameter.
|
File without changes
|
File without changes
|
@@ -24,28 +24,41 @@ mb_obj = Mailgun::MessageBuilder.new()
|
|
24
24
|
|
25
25
|
# Define the from address.
|
26
26
|
mb_obj.from("me@example.com", {"first"=>"Ruby", "last" => "SDK"});
|
27
|
+
|
27
28
|
# Define a to recipient.
|
28
29
|
mb_obj.add_recipient(:to, "john.doe@example.com", {"first" => "John", "last" => "Doe"});
|
30
|
+
|
29
31
|
# Define a cc recipient.
|
30
32
|
mb_obj.add_recipient(:cc, "sally.doe@example.com", {"first" => "Sally", "last" => "Doe"});
|
33
|
+
|
31
34
|
# Define the subject.
|
32
35
|
mb_obj.subject("A message from the Ruby SDK using Message Builder!");
|
36
|
+
|
33
37
|
# Define the body of the message.
|
34
38
|
mb_obj.body_text("This is the text body of the message!");
|
39
|
+
|
35
40
|
# Set the Message-Id header, provide a valid Message-Id.
|
36
41
|
mb_obj.message_id("<20141014000000.11111.11111@example.com>")
|
42
|
+
|
37
43
|
# Or clear the Message-Id header, provide nil or empty string.
|
38
44
|
mb_obj.message_id(nil)
|
39
45
|
mb_obj.message_id('')
|
40
|
-
|
46
|
+
|
47
|
+
# Campaigns and headers.
|
41
48
|
mb_obj.add_campaign_id("My-Awesome-Campaign");
|
42
|
-
mb_obj.
|
49
|
+
mb_obj.header("Customer-Id", "12345");
|
50
|
+
|
51
|
+
# Custom variables
|
52
|
+
mb_obj.variable("Customer-Data", { :first_name => "John", :last_name => "Smith" })
|
43
53
|
|
44
54
|
# Attach a file and rename it.
|
45
|
-
mb_obj.add_attachment
|
55
|
+
mb_obj.add_attachment "/path/to/file/receipt_123491820.pdf", "Receipt.pdf"
|
56
|
+
|
57
|
+
# Attach an image inline.
|
58
|
+
mb_obj.add_inline_image "/path/to/file/header.png"
|
46
59
|
|
47
60
|
# Schedule message in the future
|
48
|
-
mb_obj.
|
61
|
+
mb_obj.deliver_at("tomorrow 8:00AM PST");
|
49
62
|
|
50
63
|
# Finally, send your message using the client
|
51
64
|
result = mg_client.send_message("sending_domain.com", mb_obj)
|
@@ -60,13 +73,16 @@ Here's how to use Batch Message to easily handle batch sending jobs.
|
|
60
73
|
```ruby
|
61
74
|
# First, instantiate the Mailgun Client with your API key
|
62
75
|
mg_client = Mailgun::Client.new("your-api-key")
|
76
|
+
|
63
77
|
# Create a Batch Message object, pass in the client and your domain.
|
64
78
|
mb_obj = Mailgun::BatchMessage.new(mg_client, "example.com")
|
65
79
|
|
66
80
|
# Define the from address.
|
67
81
|
mb_obj.from("me@example.com", {"first"=>"Ruby", "last" => "SDK"});
|
82
|
+
|
68
83
|
# Define the subject.
|
69
84
|
mb_obj.subject("A message from the Ruby SDK using Message Builder!");
|
85
|
+
|
70
86
|
# Define the body of the message.
|
71
87
|
mb_obj.body_text("This is the text body of the message!");
|
72
88
|
|
@@ -50,8 +50,8 @@ mb_obj.set_message_id('')
|
|
50
50
|
|
51
51
|
# Other Optional Parameters.
|
52
52
|
mb_obj.add_campaign_id("My-Awesome-Campaign")
|
53
|
-
mb_obj.
|
54
|
-
mb_obj.add_attachment("
|
53
|
+
mb_obj.header("Customer-Id", "12345")
|
54
|
+
mb_obj.add_attachment("./tron.jpg")
|
55
55
|
mb_obj.set_delivery_time("tomorrow 8:00AM PST")
|
56
56
|
mb_obj.set_click_tracking(true)
|
57
57
|
|
File without changes
|
@@ -75,6 +75,26 @@ mb_obj.set_text_body "This is the text body."
|
|
75
75
|
mg_client.send_message "sending_domain.com", mb_obj
|
76
76
|
```
|
77
77
|
|
78
|
+
**Build a message with attachments, part by part, with Message Builder:**
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
mb_obj = Mailgun::MessageBuilder.new
|
82
|
+
|
83
|
+
mb_obj.set_from_address "sender@example.com", {'first' => 'Sending', 'last' => 'User'}
|
84
|
+
mb_obj.add_recipient :to, "recipient@example.com", {'first' => 'Recipient', 'last' => 'User'}
|
85
|
+
mb_obj.set_subject "This is the subject!"
|
86
|
+
mb_obj.set_text_body "This is the text body."
|
87
|
+
|
88
|
+
# Add separate attachments
|
89
|
+
mb_obj.add_attachment "/path/to/file/invoice_8675309.pdf", "Order Invoice - 8675309.pdf"
|
90
|
+
mb_obj.add_attachment "/path/to/file/datasheet_00001.pdf", "Product Datasheet - 00001.pdf"
|
91
|
+
|
92
|
+
# Attach inline image to message
|
93
|
+
mb_obj.add_inline_image "/path/to/file/product_image_00001.png"
|
94
|
+
|
95
|
+
mg_client.send_message "sending_domain.com", mb_obj
|
96
|
+
```
|
97
|
+
|
78
98
|
**Send batches of 1000 messages per post:**
|
79
99
|
|
80
100
|
```ruby
|
File without changes
|
data/lib/mailgun-ruby.rb
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
require 'mailgun'
|
1
|
+
require 'mailgun'
|
2
|
+
require 'railgun' if defined?(Rails)
|
data/lib/mailgun/client.rb
CHANGED
@@ -62,6 +62,11 @@ module Mailgun
|
|
62
62
|
|
63
63
|
case data
|
64
64
|
when Hash
|
65
|
+
# Remove nil values from the data hash
|
66
|
+
# Submitting nils to the API will likely cause an error.
|
67
|
+
# See also: https://github.com/mailgun/mailgun-ruby/issues/32
|
68
|
+
data = data.select { |k, v| v != nil }
|
69
|
+
|
65
70
|
if data.key?(:message)
|
66
71
|
if data[:message].is_a?(String)
|
67
72
|
data[:message] = convert_string_to_file(data[:message])
|
@@ -48,7 +48,7 @@ module Mailgun
|
|
48
48
|
send_message if @counters[:recipients][recipient_type] == Mailgun::Chains::MAX_RECIPIENTS
|
49
49
|
|
50
50
|
compiled_address = parse_address(address, variables)
|
51
|
-
|
51
|
+
set_multi_complex(recipient_type, compiled_address)
|
52
52
|
|
53
53
|
store_recipient_variables(recipient_type, address, variables) if recipient_type != :from
|
54
54
|
|
@@ -84,7 +84,7 @@ module Mailgun
|
|
84
84
|
# @return [Boolean]
|
85
85
|
def send_message
|
86
86
|
rkey = 'recipient-variables'
|
87
|
-
|
87
|
+
set_multi_simple rkey, JSON.generate(@recipient_variables)
|
88
88
|
@message[rkey] = @message[rkey].first if @message.key?(rkey)
|
89
89
|
|
90
90
|
response = @client.send_message(@domain, @message).to_h!
|
@@ -40,7 +40,7 @@ module Mailgun
|
|
40
40
|
end
|
41
41
|
|
42
42
|
compiled_address = parse_address(address, variables)
|
43
|
-
|
43
|
+
set_multi_complex(recipient_type, compiled_address)
|
44
44
|
|
45
45
|
@counters[:recipients][recipient_type] += 1 if @counters[:recipients].key?(recipient_type)
|
46
46
|
end
|
@@ -63,14 +63,14 @@ module Mailgun
|
|
63
63
|
# Set the message's Reply-To address.
|
64
64
|
#
|
65
65
|
# Rationale: According to RFC, only one Reply-To address is allowed, so it
|
66
|
-
# is *okay* to bypass the
|
66
|
+
# is *okay* to bypass the set_multi_simple and set reply-to directly.
|
67
67
|
#
|
68
68
|
# @param [String] address The email address to provide as Reply-To.
|
69
69
|
# @param [Hash] variables A hash of variables associated with the recipient.
|
70
70
|
# @return [void]
|
71
71
|
def reply_to(address, variables = nil)
|
72
72
|
compiled_address = parse_address(address, variables)
|
73
|
-
|
73
|
+
header("reply-to", compiled_address)
|
74
74
|
end
|
75
75
|
|
76
76
|
# Set a subject for the message object
|
@@ -78,7 +78,7 @@ module Mailgun
|
|
78
78
|
# @param [String] subject The subject for the email.
|
79
79
|
# @return [void]
|
80
80
|
def subject(subj = nil)
|
81
|
-
|
81
|
+
set_multi_simple(:subject, subj)
|
82
82
|
end
|
83
83
|
|
84
84
|
# Deprecated: Please use "subject" instead.
|
@@ -92,7 +92,7 @@ module Mailgun
|
|
92
92
|
# @param [String] text_body The text body for the email.
|
93
93
|
# @return [void]
|
94
94
|
def body_text(text_body = nil)
|
95
|
-
|
95
|
+
set_multi_simple(:text, text_body)
|
96
96
|
end
|
97
97
|
|
98
98
|
# Deprecated: Please use "body_text" instead.
|
@@ -106,7 +106,7 @@ module Mailgun
|
|
106
106
|
# @param [String] html_body The html body for the email.
|
107
107
|
# @return [void]
|
108
108
|
def body_html(html_body = nil)
|
109
|
-
|
109
|
+
set_multi_simple(:html, html_body)
|
110
110
|
end
|
111
111
|
|
112
112
|
# Deprecated: Please use "body_html" instead.
|
@@ -138,7 +138,7 @@ module Mailgun
|
|
138
138
|
# @param [Boolean] mode The boolean or string value (will fix itself)
|
139
139
|
# @return [void]
|
140
140
|
def test_mode(mode)
|
141
|
-
|
141
|
+
set_multi_simple('o:testmode', bool_lookup(mode))
|
142
142
|
end
|
143
143
|
|
144
144
|
# Deprecated: 'set_test_mode' is depreciated. Please use 'test_mode' instead.
|
@@ -152,7 +152,7 @@ module Mailgun
|
|
152
152
|
# @param [Boolean] mode The boolean or string value(will fix itself)
|
153
153
|
# @return [void]
|
154
154
|
def dkim(mode)
|
155
|
-
|
155
|
+
set_multi_simple('o:dkim', bool_lookup(mode))
|
156
156
|
end
|
157
157
|
|
158
158
|
# Deprecated: 'set_dkim' is deprecated. Please use 'dkim' instead.
|
@@ -168,7 +168,7 @@ module Mailgun
|
|
168
168
|
def add_campaign_id(campaign_id)
|
169
169
|
fail(Mailgun::ParameterError, 'Too many campaigns added to message.', campaign_id) if @counters[:attributes][:campaign_id] >= Mailgun::Chains::MAX_CAMPAIGN_IDS
|
170
170
|
|
171
|
-
|
171
|
+
set_multi_complex('o:campaign', campaign_id)
|
172
172
|
@counters[:attributes][:campaign_id] += 1
|
173
173
|
end
|
174
174
|
|
@@ -180,7 +180,7 @@ module Mailgun
|
|
180
180
|
if @counters[:attributes][:tag] >= Mailgun::Chains::MAX_TAGS
|
181
181
|
fail Mailgun::ParameterError, 'Too many tags added to message.', tag
|
182
182
|
end
|
183
|
-
|
183
|
+
set_multi_complex('o:tag', tag)
|
184
184
|
@counters[:attributes][:tag] += 1
|
185
185
|
end
|
186
186
|
|
@@ -189,7 +189,7 @@ module Mailgun
|
|
189
189
|
# @param [Boolean] tracking Boolean true or false.
|
190
190
|
# @return [void]
|
191
191
|
def track_opens(mode)
|
192
|
-
|
192
|
+
set_multi_simple('o:tracking-opens', bool_lookup(mode))
|
193
193
|
end
|
194
194
|
|
195
195
|
# Deprecated: 'set_open_tracking' is deprecated. Please use 'track_opens' instead.
|
@@ -203,7 +203,7 @@ module Mailgun
|
|
203
203
|
# @param [String] mode True, False, or HTML (for HTML only tracking)
|
204
204
|
# @return [void]
|
205
205
|
def track_clicks(mode)
|
206
|
-
|
206
|
+
set_multi_simple('o:tracking-clicks', bool_lookup(mode))
|
207
207
|
end
|
208
208
|
|
209
209
|
# Depreciated: 'set_click_tracking. is deprecated. Please use 'track_clicks' instead.
|
@@ -221,7 +221,7 @@ module Mailgun
|
|
221
221
|
# @return [void]
|
222
222
|
def deliver_at(timestamp)
|
223
223
|
time_str = DateTime.parse(timestamp)
|
224
|
-
|
224
|
+
set_multi_simple('o:deliverytime', time_str.rfc2822)
|
225
225
|
end
|
226
226
|
|
227
227
|
# Deprecated: 'set_delivery_time' is deprecated. Please use 'deliver_at' instead.
|
@@ -238,8 +238,12 @@ module Mailgun
|
|
238
238
|
# @return [void]
|
239
239
|
def header(name, data)
|
240
240
|
fail(Mailgun::ParameterError, 'Header name for message must be specified') if name.to_s.empty?
|
241
|
-
|
242
|
-
|
241
|
+
begin
|
242
|
+
jsondata = make_json data
|
243
|
+
set_single("h:#{name}", jsondata)
|
244
|
+
rescue Mailgun::ParameterError
|
245
|
+
set_single("h:#{name}", data)
|
246
|
+
end
|
243
247
|
end
|
244
248
|
|
245
249
|
# Deprecated: 'set_custom_data' is deprecated. Please use 'header' instead.
|
@@ -248,6 +252,19 @@ module Mailgun
|
|
248
252
|
header name, data
|
249
253
|
end
|
250
254
|
|
255
|
+
# Attaches custom JSON data to the message. See the following doc page for more info.
|
256
|
+
# https://documentation.mailgun.com/user_manual.html#attaching-data-to-messages
|
257
|
+
#
|
258
|
+
# @param [String] name A name for the custom variable block.
|
259
|
+
# @param [String|Hash] data Either a string or a hash. If it is not valid JSON or
|
260
|
+
# can not be converted to JSON, ParameterError will be raised.
|
261
|
+
# @return [void]
|
262
|
+
def variable(name, data)
|
263
|
+
fail(Mailgun::ParameterError, 'Variable name must be specified') if name.to_s.empty?
|
264
|
+
jsondata = make_json data
|
265
|
+
set_single("v:#{name}", jsondata)
|
266
|
+
end
|
267
|
+
|
251
268
|
# Add custom parameter to the message. A custom parameter is any parameter that
|
252
269
|
# is not yet supported by the SDK, but available at the API. Note: No validation
|
253
270
|
# is performed. Don't forget to prefix the parameter with o, h, or v.
|
@@ -256,7 +273,7 @@ module Mailgun
|
|
256
273
|
# @param [string] data A string of data for the parameter.
|
257
274
|
# @return [void]
|
258
275
|
def add_custom_parameter(name, data)
|
259
|
-
|
276
|
+
set_multi_complex(name, data)
|
260
277
|
end
|
261
278
|
|
262
279
|
# Set the Message-Id header to a custom value. Don't forget to enclose the
|
@@ -269,7 +286,7 @@ module Mailgun
|
|
269
286
|
def message_id(data = nil)
|
270
287
|
key = 'h:Message-Id'
|
271
288
|
return @message.delete(key) if data.to_s.empty?
|
272
|
-
|
289
|
+
set_single(key, data)
|
273
290
|
end
|
274
291
|
|
275
292
|
# Deprecated: 'set_message_id' is deprecated. Use 'message_id' instead.
|
@@ -280,13 +297,23 @@ module Mailgun
|
|
280
297
|
|
281
298
|
private
|
282
299
|
|
300
|
+
# Sets a single value in the message hash where "multidict" features are not needed.
|
301
|
+
# Does *not* permit duplicate params.
|
302
|
+
#
|
303
|
+
# @param [String] parameter The message object parameter name.
|
304
|
+
# @param [String] value The value of the parameter.
|
305
|
+
# @return [void]
|
306
|
+
def set_single(parameter, value)
|
307
|
+
@message[parameter] = value ? value : ''
|
308
|
+
end
|
309
|
+
|
283
310
|
# Sets values within the multidict, however, prevents
|
284
311
|
# duplicate values for keys.
|
285
312
|
#
|
286
313
|
# @param [String] parameter The message object parameter name.
|
287
314
|
# @param [String] value The value of the parameter.
|
288
315
|
# @return [void]
|
289
|
-
def
|
316
|
+
def set_multi_simple(parameter, value)
|
290
317
|
@message[parameter] = value ? [value] : ['']
|
291
318
|
end
|
292
319
|
|
@@ -296,7 +323,7 @@ module Mailgun
|
|
296
323
|
# @param [String] parameter The message object parameter name.
|
297
324
|
# @param [String] value The value of the parameter.
|
298
325
|
# @return [void]
|
299
|
-
def
|
326
|
+
def set_multi_complex(parameter, value)
|
300
327
|
@message[parameter] << (value || '')
|
301
328
|
end
|
302
329
|
|
@@ -327,9 +354,9 @@ module Mailgun
|
|
327
354
|
#
|
328
355
|
# Returns a JSON object or raises ParameterError
|
329
356
|
def make_json(obj)
|
330
|
-
return JSON.parse(obj).
|
331
|
-
return obj.
|
332
|
-
return JSON.generate(obj).
|
357
|
+
return JSON.parse(obj).to_json if obj.is_a?(String)
|
358
|
+
return obj.to_json if obj.is_a?(Hash)
|
359
|
+
return JSON.generate(obj).to_json
|
333
360
|
rescue
|
334
361
|
raise Mailgun::ParameterError, 'Provided data could not be made into JSON. Try a JSON string or Hash.', obj
|
335
362
|
end
|
@@ -371,7 +398,7 @@ module Mailgun
|
|
371
398
|
attachment.instance_variable_set :@original_filename, filename
|
372
399
|
attachment.instance_eval 'def original_filename; @original_filename; end'
|
373
400
|
end
|
374
|
-
|
401
|
+
set_multi_complex(disposition, attachment)
|
375
402
|
end
|
376
403
|
end
|
377
404
|
|
data/lib/mailgun/version.rb
CHANGED
data/lib/railgun.rb
CHANGED
data/lib/railgun/mailer.rb
CHANGED
data/mailgun.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.version = Mailgun::VERSION
|
10
10
|
spec.homepage = 'http://www.mailgun.com'
|
11
11
|
spec.platform = Gem::Platform::RUBY
|
12
|
-
spec.license = 'Apache'
|
12
|
+
spec.license = 'Apache-2.0'
|
13
13
|
|
14
14
|
spec.summary = "Mailgun's Official Ruby SDK"
|
15
15
|
spec.description = "Mailgun's Official Ruby SDK for interacting with the Mailgun API."
|
@@ -485,19 +485,31 @@ describe 'The method header' do
|
|
485
485
|
it 'accepts valid JSON and appends as data to the message.' do
|
486
486
|
@mb_obj.header('my-data', '{"key":"value"}')
|
487
487
|
|
488
|
-
expect(@mb_obj.message["
|
489
|
-
expect(@mb_obj.message["
|
488
|
+
expect(@mb_obj.message["h:my-data"]).to be_kind_of(String)
|
489
|
+
expect(@mb_obj.message["h:my-data"].to_s).to eq('{"key":"value"}')
|
490
|
+
end
|
491
|
+
end
|
492
|
+
|
493
|
+
describe 'The method variable' do
|
494
|
+
before(:each) do
|
495
|
+
@mb_obj = Mailgun::MessageBuilder.new
|
496
|
+
end
|
497
|
+
it 'accepts valid JSON and stores it as message[param].' do
|
498
|
+
@mb_obj.variable('my-data', '{"key":"value"}')
|
499
|
+
|
500
|
+
expect(@mb_obj.message["v:my-data"]).to be_kind_of(String)
|
501
|
+
expect(@mb_obj.message["v:my-data"].to_s).to eq('{"key":"value"}')
|
490
502
|
end
|
491
503
|
it 'accepts a hash and appends as data to the message.' do
|
492
504
|
data = {'key' => 'value'}
|
493
|
-
@mb_obj.
|
505
|
+
@mb_obj.variable('my-data', data)
|
494
506
|
|
495
|
-
expect(@mb_obj.message["v:my-data"]
|
496
|
-
expect(@mb_obj.message["v:my-data"]
|
507
|
+
expect(@mb_obj.message["v:my-data"]).to be_kind_of(String)
|
508
|
+
expect(@mb_obj.message["v:my-data"].to_s).to eq('{"key":"value"}')
|
497
509
|
end
|
498
510
|
it 'throws an exception on broken JSON.' do
|
499
511
|
data = 'This is some crappy JSON.'
|
500
|
-
expect {@mb_obj.
|
512
|
+
expect {@mb_obj.variable('my-data', data)}.to raise_error(Mailgun::ParameterError)
|
501
513
|
end
|
502
514
|
end
|
503
515
|
|
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.
|
4
|
+
version: 1.1.4
|
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-
|
12
|
+
date: 2017-02-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -134,17 +134,17 @@ files:
|
|
134
134
|
- ".rubocop_todo.yml"
|
135
135
|
- ".ruby-env.yml.example"
|
136
136
|
- ".travis.yml"
|
137
|
-
- Domains.md
|
138
|
-
- Events.md
|
139
137
|
- Gemfile
|
140
138
|
- LICENSE
|
141
|
-
- MessageBuilder.md
|
142
|
-
- Messages.md
|
143
|
-
- OptInHandler.md
|
144
139
|
- README.md
|
145
140
|
- Rakefile
|
146
|
-
-
|
147
|
-
-
|
141
|
+
- docs/Domains.md
|
142
|
+
- docs/Events.md
|
143
|
+
- docs/MessageBuilder.md
|
144
|
+
- docs/Messages.md
|
145
|
+
- docs/OptInHandler.md
|
146
|
+
- docs/Snippets.md
|
147
|
+
- docs/Webhooks.md
|
148
148
|
- lib/mailgun-ruby.rb
|
149
149
|
- lib/mailgun.rb
|
150
150
|
- lib/mailgun/address.rb
|
@@ -165,6 +165,7 @@ files:
|
|
165
165
|
- lib/railgun/errors.rb
|
166
166
|
- lib/railgun/mailer.rb
|
167
167
|
- lib/railgun/message.rb
|
168
|
+
- lib/railgun/railtie.rb
|
168
169
|
- mailgun.gemspec
|
169
170
|
- spec/integration/bounces_spec.rb
|
170
171
|
- spec/integration/campaign_spec.rb
|
@@ -209,7 +210,7 @@ files:
|
|
209
210
|
- vcr_cassettes/webhooks.yml
|
210
211
|
homepage: http://www.mailgun.com
|
211
212
|
licenses:
|
212
|
-
- Apache
|
213
|
+
- Apache-2.0
|
213
214
|
metadata: {}
|
214
215
|
post_install_message:
|
215
216
|
rdoc_options: []
|