mailgun-ruby 1.0.0

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.
@@ -0,0 +1,359 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'MessageBuilder attribute readers' do
4
+ it 'should be readable' do
5
+ @mb_obj = Mailgun::MessageBuilder.new()
6
+ @mb_obj.should respond_to(:message)
7
+ @mb_obj.should respond_to(:counters)
8
+ end
9
+ end
10
+
11
+ describe 'The instantiation of MessageBuilder' do
12
+
13
+ before(:each) do
14
+ @mb_obj = Mailgun::MessageBuilder.new()
15
+ end
16
+
17
+ it 'contains Message, which should be of type Multimap and empty' do
18
+ @mb_obj.message.should be_a(Multimap)
19
+ @mb_obj.message.length.should eq(0)
20
+ end
21
+
22
+ it 'contains counters, which should be of type hash and contain several important counters' do
23
+ @mb_obj.counters.should be_a(Hash)
24
+ @mb_obj.counters.should include(:recipients)
25
+ end
26
+
27
+ it 'contains counters, which should be of type hash and contain several important counters' do
28
+ @mb_obj.counters.should be_a(Hash)
29
+ @mb_obj.counters.should include(:recipients)
30
+ @mb_obj.counters[:recipients].should include(:to)
31
+ @mb_obj.counters[:recipients].should include(:cc)
32
+ @mb_obj.counters[:recipients].should include(:bcc)
33
+ @mb_obj.counters.should include(:attributes)
34
+ @mb_obj.counters[:attributes].should include(:attachment)
35
+ @mb_obj.counters[:attributes].should include(:campaign_id)
36
+ @mb_obj.counters[:attributes].should include(:custom_option)
37
+ @mb_obj.counters[:attributes].should include(:tag)
38
+ end
39
+ end
40
+
41
+ describe 'The method add_recipient' do
42
+ before(:each) do
43
+ @mb_obj = Mailgun::MessageBuilder.new
44
+ @address = 'jane@example.com'
45
+ @variables = {'first' => 'Jane', 'last' => 'Doe'}
46
+ end
47
+
48
+ it 'adds a "to" recipient type to the message body and counter is incremented' do
49
+ recipient_type = :to
50
+ @mb_obj.add_recipient(recipient_type, @address, @variables)
51
+ @mb_obj.message[recipient_type][0].should eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
52
+ @mb_obj.counters[:recipients][recipient_type].should eq(1)
53
+ end
54
+
55
+ it 'adds a "cc" recipient type to the message body and counter is incremented' do
56
+ recipient_type = :cc
57
+ @mb_obj.add_recipient(recipient_type, @address, @variables)
58
+ @mb_obj.message[recipient_type][0].should eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
59
+ @mb_obj.counters[:recipients][recipient_type].should eq(1)
60
+ end
61
+
62
+ it 'adds a "bcc" recipient type to the message body and counter is incremented' do
63
+ recipient_type = :bcc
64
+ @mb_obj.add_recipient(recipient_type, @address, @variables)
65
+ @mb_obj.message[recipient_type][0].should eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
66
+ @mb_obj.counters[:recipients][recipient_type].should eq(1)
67
+ end
68
+
69
+ it 'adds a "h:reply-to" recipient type to the message body and counters are not incremented' do
70
+ recipient_type = 'h:reply-to'
71
+ @mb_obj.add_recipient(recipient_type, @address, @variables)
72
+ @mb_obj.message[recipient_type][0].should eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
73
+ @mb_obj.counters[:recipients].each_value{|value| value.should eq(0)}
74
+ end
75
+
76
+ it 'ensures a random recipient type is added to the message body and counters are not incremented' do
77
+ recipient_type = 'im-not-really-real'
78
+ @mb_obj.add_recipient(recipient_type, @address, @variables)
79
+ @mb_obj.message[recipient_type][0].should eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
80
+ @mb_obj.counters[:recipients].each_value{|value| value.should eq(0)}
81
+ end
82
+ it 'adds too many to recipients and raises an exception.' do
83
+ recipient_type = :to
84
+ expect{
85
+ 1001.times do
86
+ @mb_obj.add_recipient(recipient_type, @address, @variables)
87
+ end }.to raise_error(Mailgun::ParameterError)
88
+ end
89
+ it 'adds too many cc recipients and raises an exception.' do
90
+ recipient_type = :cc
91
+ expect{
92
+ 1001.times do
93
+ @mb_obj.add_recipient(recipient_type, @address, @variables)
94
+ end }.to raise_error(Mailgun::ParameterError)
95
+ end
96
+ it 'adds too many bcc recipients and raises an exception.' do
97
+ recipient_type = :bcc
98
+ expect{
99
+ 1001.times do
100
+ @mb_obj.add_recipient(recipient_type, @address, @variables)
101
+ end }.to raise_error(Mailgun::ParameterError)
102
+ end
103
+ end
104
+
105
+ describe 'The method set_subject' do
106
+ before(:each) do
107
+ @mb_obj = Mailgun::MessageBuilder.new
108
+ end
109
+ it 'sets the message subject to blank if called and no parameters are provided' do
110
+ @mb_obj.set_subject
111
+ @mb_obj.message[:subject][0].should eq('')
112
+ end
113
+ it 'sets the message subject if called with the subject parameter' do
114
+ the_subject = 'This is my subject!'
115
+ @mb_obj.set_subject(the_subject)
116
+ @mb_obj.message[:subject][0].should eq(the_subject)
117
+ end
118
+ it 'ensures no duplicate subjects can exist and last setter is stored' do
119
+ the_first_subject = 'This is my first subject!'
120
+ the_second_subject = 'This is my second subject!'
121
+ @mb_obj.set_subject(the_first_subject)
122
+ @mb_obj.set_subject(the_second_subject)
123
+ @mb_obj.message[:subject].length.should eq(1)
124
+ @mb_obj.message[:subject][0].should eq(the_second_subject)
125
+ end
126
+ end
127
+
128
+ describe 'The method set_text_body' do
129
+ before(:each) do
130
+ @mb_obj = Mailgun::MessageBuilder.new
131
+ end
132
+ it 'sets the text_body to blank if called and no parameters are provided' do
133
+ @mb_obj.set_text_body
134
+ @mb_obj.message[:text] = ''
135
+ end
136
+ it 'sets the message text if called with the text_body parameter' do
137
+ the_text = 'Don\'t mess with Texas!'
138
+ @mb_obj.set_text_body(the_text)
139
+ @mb_obj.message[:text] = the_text
140
+ end
141
+ it 'ensures no duplicate text bodies can exist and last setter is stored' do
142
+ the_first_text = 'Mess with Texas!'
143
+ the_second_text = 'Don\'t mess with Texas!'
144
+ @mb_obj.set_text_body(the_first_text)
145
+ @mb_obj.set_text_body(the_second_text)
146
+ @mb_obj.message[:text].length.should eq(1)
147
+ @mb_obj.message[:text][0].should eq(the_second_text)
148
+ end
149
+ end
150
+
151
+ describe 'The method add_attachment' do
152
+ before(:each) do
153
+ @mb_obj = Mailgun::MessageBuilder.new
154
+ end
155
+ it 'adds a few file paths to the message object' do
156
+
157
+ file1 = File.dirname(__FILE__) + "/sample_data/mailgun_icon.png"
158
+ file2 = File.dirname(__FILE__) + "/sample_data/rackspace_logo.jpg"
159
+
160
+ file_paths = [file1, file2]
161
+
162
+ file_paths.each {|item| @mb_obj.add_attachment(item)}
163
+ @mb_obj.message[:attachment].length.should eq(2)
164
+ end
165
+ end
166
+
167
+ describe 'The method add_inline_image' do
168
+ before(:each) do
169
+ @mb_obj = Mailgun::MessageBuilder.new
170
+ end
171
+ it 'adds a few file paths to the message object' do
172
+ file1 = File.dirname(__FILE__) + "/sample_data/mailgun_icon.png"
173
+ file2 = File.dirname(__FILE__) + "/sample_data/rackspace_logo.jpg"
174
+
175
+ file_paths = [file1, file2]
176
+
177
+ file_paths.each {|item| @mb_obj.add_inline_image(item)}
178
+ @mb_obj.message[:inline].length.should eq(2)
179
+ end
180
+ end
181
+
182
+ describe 'The method set_test_mode' do
183
+ before(:each) do
184
+ @mb_obj = Mailgun::MessageBuilder.new
185
+ end
186
+ it 'turns on test mode with boolean true' do
187
+ @mb_obj.set_test_mode(true)
188
+ @mb_obj.message["o:testmode"][0].should eq ("yes")
189
+ end
190
+ it 'turns on test mode with string true' do
191
+ @mb_obj.set_test_mode("true")
192
+ @mb_obj.message["o:testmode"][0].should eq ("yes")
193
+ end
194
+ it 'turns off test mode with boolean false' do
195
+ @mb_obj.set_test_mode(false)
196
+ @mb_obj.message["o:testmode"][0].should eq ("no")
197
+ end
198
+ it 'turns off test mode with string false' do
199
+ @mb_obj.set_test_mode("false")
200
+ @mb_obj.message["o:testmode"][0].should eq ("no")
201
+ end
202
+ it 'does not allow multiple values' do
203
+ @mb_obj.set_test_mode("false")
204
+ @mb_obj.set_test_mode("true")
205
+ @mb_obj.set_test_mode("false")
206
+ @mb_obj.message["o:testmode"].length.should eq(1)
207
+ @mb_obj.message["o:testmode"][0].should eq ("no")
208
+ end
209
+ end
210
+
211
+ describe 'The method set_dkim' do
212
+ before(:each) do
213
+ @mb_obj = Mailgun::MessageBuilder.new
214
+ end
215
+ it 'turns on dkim with boolean true' do
216
+ @mb_obj.set_dkim(true)
217
+ @mb_obj.message["o:dkim"][0].should eq ("yes")
218
+ end
219
+ it 'turns on dkim with string true' do
220
+ @mb_obj.set_dkim("true")
221
+ @mb_obj.message["o:dkim"][0].should eq ("yes")
222
+ end
223
+ it 'turns off dkim with boolean false' do
224
+ @mb_obj.set_dkim(false)
225
+ @mb_obj.message["o:dkim"][0].should eq ("no")
226
+ end
227
+ it 'turns off dkim with string false' do
228
+ @mb_obj.set_dkim("false")
229
+ @mb_obj.message["o:dkim"][0].should eq ("no")
230
+ end
231
+ it 'does not allow multiple values' do
232
+ @mb_obj.set_dkim("false")
233
+ @mb_obj.set_dkim("true")
234
+ @mb_obj.set_dkim("false")
235
+ @mb_obj.message["o:dkim"].length.should eq(1)
236
+ @mb_obj.message["o:dkim"][0].should eq ("no")
237
+ end
238
+ end
239
+
240
+ describe 'The method add_campaign_id' do
241
+ before(:each) do
242
+ @mb_obj = Mailgun::MessageBuilder.new
243
+ end
244
+ it 'adds a campaign ID to the message' do
245
+ @mb_obj.add_campaign_id('My-Campaign-Id-1')
246
+ @mb_obj.message["o:campaign"][0].should eq ("My-Campaign-Id-1")
247
+ end
248
+ it 'adds a few more campaign IDs to the message' do
249
+ @mb_obj.add_campaign_id('My-Campaign-Id-1')
250
+ @mb_obj.add_campaign_id('My-Campaign-Id-2')
251
+ @mb_obj.add_campaign_id('My-Campaign-Id-3')
252
+ @mb_obj.message["o:campaign"][0].should eq ("My-Campaign-Id-1")
253
+ @mb_obj.message["o:campaign"][1].should eq ("My-Campaign-Id-2")
254
+ @mb_obj.message["o:campaign"][2].should eq ("My-Campaign-Id-3")
255
+ end
256
+ it 'adds too many campaign IDs to the message' do
257
+ expect{
258
+ 10.times do
259
+ @mb_obj.add_campaign_id('Test-Campaign-ID')
260
+ end }.to raise_error(Mailgun::ParameterError)
261
+ end
262
+ end
263
+
264
+ describe 'The method add_tag' do
265
+ before(:each) do
266
+ @mb_obj = Mailgun::MessageBuilder.new
267
+ end
268
+ it 'adds a tag to the message' do
269
+ @mb_obj.add_tag('My-Tag-1')
270
+ @mb_obj.message["o:tag"][0].should eq ("My-Tag-1")
271
+ end
272
+ it 'adds a few more tags to the message' do
273
+ @mb_obj.add_tag('My-Tag-1')
274
+ @mb_obj.add_tag('My-Tag-2')
275
+ @mb_obj.add_tag('My-Tag-3')
276
+ @mb_obj.message["o:tag"][0].should eq ("My-Tag-1")
277
+ @mb_obj.message["o:tag"][1].should eq ("My-Tag-2")
278
+ @mb_obj.message["o:tag"][2].should eq ("My-Tag-3")
279
+ end
280
+ it 'adds too many tags to the message' do
281
+ expect{
282
+ 10.times do
283
+ @mb_obj.add_tag('My-Tag')
284
+ end }.to raise_error(Mailgun::ParameterError)
285
+ end
286
+ end
287
+
288
+ describe 'The method set_open_tracking' do
289
+ before(:each) do
290
+ @mb_obj = Mailgun::MessageBuilder.new
291
+ end
292
+ it 'enables/disables open tracking on a per message basis.' do
293
+ @mb_obj.set_open_tracking('Yes')
294
+ @mb_obj.message["o:tracking-opens"][0].should eq ("yes")
295
+ @mb_obj.set_open_tracking('No')
296
+ @mb_obj.message["o:tracking-opens"][0].should eq ("no")
297
+ @mb_obj.set_open_tracking(true)
298
+ @mb_obj.message["o:tracking-opens"][0].should eq ("yes")
299
+ @mb_obj.set_open_tracking(false)
300
+ @mb_obj.message["o:tracking-opens"][0].should eq ("no")
301
+ end
302
+ end
303
+
304
+ describe 'The method set_click_tracking' do
305
+ before(:each) do
306
+ @mb_obj = Mailgun::MessageBuilder.new
307
+ end
308
+ it 'enables/disables click tracking on a per message basis.' do
309
+ @mb_obj.set_click_tracking('Yes')
310
+ @mb_obj.message["o:tracking-clicks"][0].should eq ("yes")
311
+ @mb_obj.set_click_tracking('No')
312
+ @mb_obj.message["o:tracking-clicks"][0].should eq ("no")
313
+ @mb_obj.set_click_tracking(true)
314
+ @mb_obj.message["o:tracking-clicks"][0].should eq ("yes")
315
+ @mb_obj.set_click_tracking(false)
316
+ @mb_obj.message["o:tracking-clicks"][0].should eq ("no")
317
+ @mb_obj.set_click_tracking('html')
318
+ @mb_obj.message["o:tracking-clicks"][0].should eq ("html")
319
+ end
320
+ end
321
+
322
+ describe 'The method set_delivery_time' do
323
+ before(:each) do
324
+ @mb_obj = Mailgun::MessageBuilder.new
325
+ end
326
+ it 'defines a time/date to deliver a message in RFC2822 format.' do
327
+ @mb_obj.set_delivery_time('October 25, 2013 10:00PM CST')
328
+ @mb_obj.message["o:deliverytime"][0].should eq ("Fri, 25 Oct 2013 22:00:00 -0600")
329
+ end
330
+ end
331
+
332
+ describe 'The method set_custom_data' do
333
+ before(:each) do
334
+ @mb_obj = Mailgun::MessageBuilder.new
335
+ end
336
+ it 'accepts valid JSON and appends as data to the message.' do
337
+ @mb_obj.set_custom_data('my-data', '{"key":"value"}')
338
+ @mb_obj.message["v:my-data"][0].should eq ("{\"key\":\"value\"}")
339
+ end
340
+ it 'accepts a hash and appends as data to the message.' do
341
+ data = {'key'=> 'value'}
342
+ @mb_obj.set_custom_data('my-data', data)
343
+ @mb_obj.message["v:my-data"][0].should eq ("{\"key\":\"value\"}")
344
+ end
345
+ it 'throws an exception on broken JSON.' do
346
+ data = 'This is some crappy JSON.'
347
+ expect {@mb_obj.set_custom_data('my-data', data)}.to raise_error(Mailgun::ParameterError)
348
+ end
349
+ end
350
+
351
+ describe 'The method add_custom_parameter' do
352
+ before(:each) do
353
+ @mb_obj = Mailgun::MessageBuilder.new
354
+ end
355
+ it 'adds an undefined parameter to the message.' do
356
+ @mb_obj.add_custom_parameter('h:my-sweet-header', 'datagoeshere')
357
+ @mb_obj.message["h:my-sweet-header"][0].should eq ("datagoeshere")
358
+ end
359
+ end
@@ -0,0 +1,38 @@
1
+ X-SBRS: 5.6
2
+ X-SenderGroup: WHITELIST
3
+ X-MailFlowPolicy: $TRUSTED
4
+ DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=trstx.com; q=dns/txt; s=mx;
5
+ t=1381182797; h=Mime-Version: Content-Type: Subject: From: To:
6
+ Message-Id: Date: Sender: Content-Transfer-Encoding;
7
+ bh=r6P1omjKL3m7gDuZC6dZEJU6trgWm1IRwAJb8h4wtfg=; b=UPFaFGiuDx2yZjCmiMEji0fIXvGMNwXUsuaX4Ss9p5EUkqE25eYjeJaJZ5w5FK+t0jsUPZqu
8
+ FIH6sftQv7GBEbSktY6sv7dgv5q2yVlY8YNG7CXvUZdWmvwfQVvfL9j1RHJo9H3QpXT9c8bZ
9
+ p9rpYmqZtZEz2ZesPj4kzUaB0lU=
10
+ DomainKey-Signature: a=rsa-sha1; c=nofws; d=trstx.com; s=mx; q=dns;
11
+ h=Mime-Version: Content-Type: Subject: From: To: Message-Id: Date:
12
+ Sender: Content-Transfer-Encoding;
13
+ b=QUYQf9OP16DphNAjeF95+G7V6DaqL4FA+m1sjIEWHdLzrGTQkiYTpzJdne3lzSypB0DwaG
14
+ AT9zOhjjN64DWFOkJD2Ce5t6vfHa/GC3FCUMq3xz/Big94g+kOciawkHyUhCrmPyh/D7kWx1
15
+ J75UIAdmE9XQ9bCSPhZ2MRaOv7b8c=
16
+ Received: by luna.mailgun.net with HTTP; Mon, 07 Oct 2013 21:53:16 +0000
17
+ Content-Type: text/plain; charset="ascii"
18
+ Subject: Test Subject
19
+ From: <joe@example.com>
20
+ To: <bob@sample.com>
21
+ Message-ID: <20131007215316.27052.7818@example.com>
22
+ X-Mailgun-Sid: WyI4MzY1OSIsICJ0cmF2aXMuc3dpZW50ZWtAcmFja3NwYWasdfewNvbSIsICJjZjQ4Il0=
23
+ Date: Mon, 7 Oct 2013 21:53:17 +0000
24
+ Sender: <joe@example.com>
25
+ Content-Transfer-Encoding: 7bit
26
+ MIME-Version: 1.0
27
+
28
+ --3a8c26e9f23c4ac193606295aa17fa6f
29
+ Content-Type: text/plain; charset="ascii"
30
+ Content-Transfer-Encoding: 7bit
31
+
32
+ Testing some Mailgun awesomness!
33
+ --3a8c26e9f23c4ac193606295aa17fa6f
34
+ Content-Type: text/html; charset="ascii"
35
+ Content-Transfer-Encoding: 7bit
36
+
37
+ <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">Test
38
+ --3a8c26e9f23c4ac193606295aa17fa6f--
metadata ADDED
@@ -0,0 +1,171 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mailgun-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mailgun
8
+ - Travis Swientek
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-01-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '1.3'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '1.3'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '2.14'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '2.14'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '10.1'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '10.1'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rest-client
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '1.6'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.6'
70
+ - !ruby/object:Gem::Dependency
71
+ name: json
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '1.8'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: '1.8'
84
+ - !ruby/object:Gem::Dependency
85
+ name: multimap
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: '1.1'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: '1.1'
98
+ description: This Gem allows you to interact with Mailgun's API. A few utilities are
99
+ included!
100
+ email: support@mailgunhq.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - .gitignore
106
+ - Gemfile
107
+ - LICENSE
108
+ - MessageBuilder.md
109
+ - Messages.md
110
+ - OptInHandler.md
111
+ - README.md
112
+ - Rakefile
113
+ - Snippets.md
114
+ - lib/mailgun.rb
115
+ - lib/mailgun/exceptions/exceptions.rb
116
+ - lib/mailgun/lists/opt_in_handler.rb
117
+ - lib/mailgun/messages/batch_message.rb
118
+ - lib/mailgun/messages/message_builder.rb
119
+ - lib/mailgun/version.rb
120
+ - mailgun.gemspec
121
+ - spec/integration/mailgun_spec.rb
122
+ - spec/integration/messages/sample_data/mime.txt
123
+ - spec/spec_helper.rb
124
+ - spec/unit/connection/test_client.rb
125
+ - spec/unit/lists/opt_in_handler_spec.rb
126
+ - spec/unit/mailgun_spec.rb
127
+ - spec/unit/messages/batch_message_spec.rb
128
+ - spec/unit/messages/message_builder_spec.rb
129
+ - spec/unit/messages/sample_data/mailgun_icon.png
130
+ - spec/unit/messages/sample_data/mime.txt
131
+ - spec/unit/messages/sample_data/rackspace_logo.jpg
132
+ homepage: http://www.mailgun.com
133
+ licenses:
134
+ - Apache
135
+ metadata: {}
136
+ post_install_message: "\n ---------------------------------------------------------------\n
137
+ \ Congrats, you've successfully installed the Mailgun SDK! \n Check out our
138
+ documentation at http://documentation.mailgun.com\n\n Contact us at support@mailgunhq.com
139
+ with any questions.\n ----------------------------------------------------------------\n
140
+ \ "
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 2.1.11
157
+ signing_key:
158
+ specification_version: 4
159
+ summary: Mailgun's Official Ruby SDK
160
+ test_files:
161
+ - spec/integration/mailgun_spec.rb
162
+ - spec/integration/messages/sample_data/mime.txt
163
+ - spec/spec_helper.rb
164
+ - spec/unit/connection/test_client.rb
165
+ - spec/unit/lists/opt_in_handler_spec.rb
166
+ - spec/unit/mailgun_spec.rb
167
+ - spec/unit/messages/batch_message_spec.rb
168
+ - spec/unit/messages/message_builder_spec.rb
169
+ - spec/unit/messages/sample_data/mailgun_icon.png
170
+ - spec/unit/messages/sample_data/mime.txt
171
+ - spec/unit/messages/sample_data/rackspace_logo.jpg