mailjet 0.0.1
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.
- data/MIT-LICENSE +42 -0
- data/README.md +457 -0
- data/Rakefile +14 -0
- data/lib/mailjet.rb +33 -0
- data/lib/mailjet/api.rb +20 -0
- data/lib/mailjet/api_error.rb +19 -0
- data/lib/mailjet/api_request.rb +70 -0
- data/lib/mailjet/campaign.rb +62 -0
- data/lib/mailjet/click.rb +15 -0
- data/lib/mailjet/configuration.rb +16 -0
- data/lib/mailjet/contact.rb +18 -0
- data/lib/mailjet/core_extensions/ostruct.rb +9 -0
- data/lib/mailjet/email.rb +4 -0
- data/lib/mailjet/list.rb +52 -0
- data/lib/mailjet/mailer.rb +19 -0
- data/lib/mailjet/rack/endpoint.rb +24 -0
- data/lib/mailjet/reporting.rb +41 -0
- data/lib/mailjet/template_category.rb +13 -0
- data/lib/mailjet/template_model.rb +13 -0
- data/lib/mailjet/version.rb +3 -0
- data/test/mailjet/api_request_test.rb +72 -0
- data/test/mailjet/api_test.rb +13 -0
- data/test/mailjet/campaign_test.rb +62 -0
- data/test/mailjet/configuration_test.rb +16 -0
- data/test/mailjet/contact_test.rb +24 -0
- data/test/mailjet/list_test.rb +62 -0
- data/test/mailjet/rack/endpoint_test.rb +30 -0
- data/test/mailjet/reporting_test.rb +26 -0
- data/test/mailjet/template_category_test.rb +13 -0
- data/test/mailjet/template_model_test.rb +13 -0
- data/test/mailjet_test.rb +19 -0
- data/test/minitest_helper.rb +23 -0
- metadata +198 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'mailjet/api'
|
2
|
+
|
3
|
+
module Mailjet
|
4
|
+
class TemplateModel < OpenStruct
|
5
|
+
class << self
|
6
|
+
def all(options = {})
|
7
|
+
(options.delete(:api) || Mailjet::Api.singleton).messageTplmodels(options)["templates"].map do |result_hash|
|
8
|
+
self.new(result_hash)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'minitest_helper'
|
4
|
+
|
5
|
+
describe Mailjet::ApiRequest do
|
6
|
+
|
7
|
+
describe "#request_path" do
|
8
|
+
it "should return the path of the method" do
|
9
|
+
Mailjet::ApiRequest.new('method_name').send(:request_path).must_equal '/0.1/methodName?output=json'
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should respect api_version" do
|
13
|
+
Mailjet.config.expects(:api_version).returns(0.2)
|
14
|
+
Mailjet::ApiRequest.new('method_name').send(:request_path).must_equal '/0.2/methodName?output=json'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#request_port" do
|
19
|
+
it "should return 80 if use_https is false" do
|
20
|
+
Mailjet.config.use_https = false
|
21
|
+
Mailjet::ApiRequest.new('method_name').send(:request_port).must_equal 80
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return 443 if use_https is true" do
|
25
|
+
Mailjet.config.use_https = true
|
26
|
+
Mailjet::ApiRequest.new('method_name').send(:request_port).must_equal 443
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#request" do
|
31
|
+
it "should return an Http request" do
|
32
|
+
request = Mailjet::ApiRequest.new('method_name', {}, 'Post')
|
33
|
+
request.send(:request).must_be_kind_of(Net::HTTP::Post)
|
34
|
+
|
35
|
+
request = Mailjet::ApiRequest.new('method_name', {}, 'Get')
|
36
|
+
request.send(:request).must_be_kind_of(Net::HTTP::Get)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#response" do
|
41
|
+
it "should raise an ApiError if authentication fails" do
|
42
|
+
request = Mailjet::ApiRequest.new('method_name', {}, 'Get')
|
43
|
+
lambda {
|
44
|
+
request.response
|
45
|
+
}.must_raise(Mailjet::ApiError)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return a Hash with response values if request is ok" do
|
49
|
+
request = Mailjet::ApiRequest.new('user_infos', {}, 'Get')
|
50
|
+
response = request.response
|
51
|
+
response.must_be_kind_of(Hash)
|
52
|
+
response['infos']['username'].must_equal 'benoit.benezech@gmail.com'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "#guess_request_type" do
|
57
|
+
it "should return 'Post' if method_name contains a special verb" do
|
58
|
+
Mailjet::ApiRequest.new('lists_add_contact').send(:guess_request_type).must_equal 'Post'
|
59
|
+
Mailjet::ApiRequest.new('lists_create').send(:guess_request_type).must_equal 'Post'
|
60
|
+
Mailjet::ApiRequest.new('lists_delete').send(:guess_request_type).must_equal 'Post'
|
61
|
+
Mailjet::ApiRequest.new('lists_remove_contact').send(:guess_request_type).must_equal 'Post'
|
62
|
+
Mailjet::ApiRequest.new('lists_update').send(:guess_request_type).must_equal 'Post'
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should return 'Get' if method_name does not contain a verb" do
|
66
|
+
Mailjet::ApiRequest.new('key_list').send(:guess_request_type).must_equal 'Get'
|
67
|
+
Mailjet::ApiRequest.new('contact_list').send(:guess_request_type).must_equal 'Get'
|
68
|
+
Mailjet::ApiRequest.new('lists_all').send(:guess_request_type).must_equal 'Get'
|
69
|
+
Mailjet::ApiRequest.new('lists_email').send(:guess_request_type).must_equal 'Get'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'minitest_helper'
|
3
|
+
|
4
|
+
describe Mailjet::Api do
|
5
|
+
describe "#method_missing" do
|
6
|
+
it "should create an ApiRequest" do
|
7
|
+
|
8
|
+
request = mock(:response => true)
|
9
|
+
Mailjet::ApiRequest.expects(:new).with(:user_infos ,{:param1 => 1}, 'Post', Mailjet.config.api_key, Mailjet.config.secret_key).returns(request)
|
10
|
+
Mailjet::Api.new.user_infos({:param1 => 1}, 'Post')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Mailjet::Campaign do
|
4
|
+
it 'has an integration suite, tested directly against Mailjet service' do
|
5
|
+
|
6
|
+
# init
|
7
|
+
Mailjet::List.all.each do |list|
|
8
|
+
list.delete
|
9
|
+
end
|
10
|
+
list = Mailjet::List.create(:label => 'My Mailjet list', :name => "mymailjetlist")
|
11
|
+
list.add_contacts("c1@contacts.com", "c2@contacts.com")
|
12
|
+
|
13
|
+
# Mailjet::Campaign.create
|
14
|
+
campaign = Mailjet::Campaign.create(
|
15
|
+
:title => "My Mailjet Campaign",
|
16
|
+
:list_id => list.id,
|
17
|
+
:from => Mailjet.config.default_from, # must be valid
|
18
|
+
:from_name => "Sender Name",
|
19
|
+
:subject => "Our new product",
|
20
|
+
:template_id => Mailjet::TemplateModel.all.first.id,
|
21
|
+
:lang => "en",
|
22
|
+
:footer => "default"
|
23
|
+
)
|
24
|
+
campaign.url.must_match /^https\:\/\/www\.mailjet\.com\/campaigns\/template\/[0-9]+$/
|
25
|
+
|
26
|
+
# Mailjet::Campaign.all
|
27
|
+
campaigns = Mailjet::Campaign.all
|
28
|
+
campaigns.wont_be_empty # we can't empty the whole campaign list...
|
29
|
+
campaigns.first.must_be_instance_of Mailjet::Campaign
|
30
|
+
|
31
|
+
# Mailjet::Campaign.find
|
32
|
+
Mailjet::Campaign.find(campaign.id).must_be_instance_of Mailjet::Campaign
|
33
|
+
Mailjet::Campaign.find(0).must_be_nil
|
34
|
+
|
35
|
+
# Mailjet::Campaign#update
|
36
|
+
campaign.update(:title => "My *new* Mailjet Campaign")
|
37
|
+
|
38
|
+
# Mailjet::Campaign#duplicate
|
39
|
+
dup = campaign.duplicate(:title => "My *new* Mailjet Campaign")
|
40
|
+
dup.must_be_instance_of Mailjet::Campaign
|
41
|
+
dup.id.wont_be_same_as campaign.id
|
42
|
+
|
43
|
+
# Mailjet::Campaign#send!
|
44
|
+
campaign.send!.must_equal 'OK'
|
45
|
+
# TODO does not work, 500 server side.
|
46
|
+
|
47
|
+
# Mailjet::Campaign#test
|
48
|
+
campaign.test('benoit.benezech@gmail.com').must_equal 'OK'
|
49
|
+
|
50
|
+
# Mailjet::Campaign#html
|
51
|
+
campaign.html.must_be_nil
|
52
|
+
# TODO how to get content in the campaign template?
|
53
|
+
|
54
|
+
campaign = Mailjet::Campaign.find(campaign.id)
|
55
|
+
|
56
|
+
# Mailjet::Campaign#contacts
|
57
|
+
campaign.contacts.wont_be_empty
|
58
|
+
|
59
|
+
# Mailjet::Campaign#statistics
|
60
|
+
campaign.statistics.keys.must_include "blocked"
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Mailjet::Configuration do
|
4
|
+
describe "accessors" do
|
5
|
+
it "should memorize values" do
|
6
|
+
Mailjet::Configuration.api_key = '1234'
|
7
|
+
Mailjet::Configuration.api_key.must_equal '1234'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#use_https" do
|
12
|
+
it "should be true by default" do
|
13
|
+
Mailjet::Configuration.use_https.must_equal true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Mailjet::Contact do
|
4
|
+
it 'has an integration suite, tested directly against Mailjet service' do
|
5
|
+
# init
|
6
|
+
Mailjet::List.all.each do |list|
|
7
|
+
list.delete
|
8
|
+
end
|
9
|
+
list = Mailjet::List.create(:label => 'My Mailjet list', :name => "mymailjetlist")
|
10
|
+
list.add_contacts("c1@contacts.com")
|
11
|
+
|
12
|
+
# Mailjet::Contact.all
|
13
|
+
contacts = Mailjet::Contact.all
|
14
|
+
contacts.wont_be_empty # we can't empty the whole contact list...
|
15
|
+
contacts.first.must_be_instance_of Mailjet::Contact
|
16
|
+
|
17
|
+
# Mailjet::Contact.all(:openers => true)
|
18
|
+
# Mailjet::Contact.all(:openers => true).must_be_empty
|
19
|
+
# TODO :openers does not work, times out
|
20
|
+
|
21
|
+
# Mailjet::Contact#infos
|
22
|
+
contacts.first.infos["click"].wont_be_nil
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Mailjet::List do
|
4
|
+
it 'has an integration suite, tested directly against Mailjet service' do
|
5
|
+
# clean-up all existing lists:
|
6
|
+
Mailjet::List.all.each do |list|
|
7
|
+
list.delete
|
8
|
+
end
|
9
|
+
|
10
|
+
# Mailjet::List.all for no lists
|
11
|
+
Mailjet::List.all.must_be_empty
|
12
|
+
|
13
|
+
# Mailjet::List#create
|
14
|
+
list = Mailjet::List.create(:label => 'My Mailjet list', :name => "mymailjetlist")
|
15
|
+
list.must_be_instance_of Mailjet::List
|
16
|
+
list.label.must_equal 'My Mailjet list'
|
17
|
+
list.name.must_equal 'mymailjetlist'
|
18
|
+
|
19
|
+
# Mailjet::List#update.
|
20
|
+
list.update(:label => 'My updated Mailjet list', :name => "myupdatedmailjetlist").must_equal "OK"
|
21
|
+
updated_list = Mailjet::List.all.first
|
22
|
+
updated_list.label.must_equal 'My updated Mailjet list'
|
23
|
+
updated_list.name.must_equal 'myupdatedmailjetlist'
|
24
|
+
updated_list.id.must_equal list.id
|
25
|
+
|
26
|
+
# Mailjet::List.all
|
27
|
+
lists = Mailjet::List.all
|
28
|
+
lists.count.must_equal 1
|
29
|
+
lists.first.must_be_instance_of Mailjet::List
|
30
|
+
lists.first.id.must_equal updated_list.id
|
31
|
+
|
32
|
+
# Mailjet::List#add_contacts
|
33
|
+
list.add_contacts.must_equal "NotModified"
|
34
|
+
list.add_contacts("c1@contacts.com").must_equal "OK"
|
35
|
+
list.add_contacts("c1@contacts.com").must_equal "NotModified"
|
36
|
+
list.add_contacts("c2@contacts.com", "c3@contacts.com").must_equal "OK"
|
37
|
+
list.add_contacts("c4@contacts.com", "c5@contacts.com").must_equal "OK"
|
38
|
+
|
39
|
+
# Mailjet::List#contacts and validate results of add_contacts
|
40
|
+
contacts = list.contacts
|
41
|
+
contacts.first.must_be_instance_of Mailjet::Contact
|
42
|
+
contacts.map(&:email).sort.must_equal ["c1@contacts.com", "c2@contacts.com", "c3@contacts.com", "c4@contacts.com", "c5@contacts.com"]
|
43
|
+
|
44
|
+
# Mailjet::List#remove_contacts
|
45
|
+
list.remove_contacts.must_equal "NotModified"
|
46
|
+
list.remove_contacts("does-not-exist@nowhere.com").must_equal "NotModified"
|
47
|
+
list.remove_contacts("c1@contacts.com", "c2@contacts.com").must_equal "OK"
|
48
|
+
list.contacts.count.must_equal 3
|
49
|
+
|
50
|
+
# Mailjet::List#email
|
51
|
+
list.email.must_match /\@lists\.mailjet\.com$/
|
52
|
+
|
53
|
+
# Mailjet::List#statistics
|
54
|
+
list.statistics["sent"].must_equal "0"
|
55
|
+
|
56
|
+
# Mailjet::List#delete
|
57
|
+
list.delete.must_equal 'OK'
|
58
|
+
Mailjet::List.all.must_be_empty
|
59
|
+
exception = proc { list.delete }.must_raise(Mailjet::ApiError)
|
60
|
+
exception.to_s.must_match /This ID not appears to be an active list on your account/
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
require 'rack/mock'
|
3
|
+
|
4
|
+
SAMPLE_MAILJET_PAYLOAD = "{\"event\":\"open\",\"time\":1331581827,\"email\":\"benoit.benezech+1634@gmail.com\",\"mj_campaign_id\":\"105881975\",\"mj_contact_id\":\"116408391\",\"customcampaign\":null,\"ip\":\"88.164.20.58\",\"geo\":\"FR\",\"agent\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit\\/535.11 (KHTML, like Gecko) Chrome\\/17.0.963.79 Safari\\/535.11\"}"
|
5
|
+
SAMPLE_MAILJET_PARAMS = {"event"=>"open", "time"=>1331581827, "email"=>"benoit.benezech+1634@gmail.com", "mj_campaign_id"=>"105881975", "mj_contact_id"=>"116408391", "customcampaign"=>nil, "ip"=>"88.164.20.58", "geo"=>"FR", "agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11"}
|
6
|
+
|
7
|
+
|
8
|
+
describe Mailjet::Rack::Endpoint do
|
9
|
+
it "should decipher Mailjet's posted events and pass them to the block" do
|
10
|
+
# mock should receive :find with "benoit.benezech+1634@gmail.com" and will return true
|
11
|
+
$user_class_mock = MiniTest::Mock.new.expect(:find, true, ["benoit.benezech+1634@gmail.com"])
|
12
|
+
|
13
|
+
app = Rack::Builder.new do
|
14
|
+
use Rack::Lint
|
15
|
+
use Mailjet::Rack::Endpoint, '/callback' do |params|
|
16
|
+
$user_class_mock.find(params['email'])#.do_smtg_with_the_user....
|
17
|
+
end
|
18
|
+
run lambda { |env|
|
19
|
+
[200, {'Content-Type' => 'text/plain'}, ['passed through your endpoint, haha']]
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
response = Rack::MockRequest.new(app).get('/not_callback')
|
24
|
+
response.body.must_equal('passed through your endpoint, haha')
|
25
|
+
|
26
|
+
response = Rack::MockRequest.new(app).post('/callback', :input => SAMPLE_MAILJET_PAYLOAD)
|
27
|
+
response.body.must_equal('')
|
28
|
+
$user_class_mock.verify
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Mailjet::Reporting do
|
4
|
+
it 'has an integration suite, tested directly against Mailjet service' do
|
5
|
+
# Mailjet::Reporting.clicks
|
6
|
+
Mailjet::Reporting.clicks.must_be_instance_of Array
|
7
|
+
|
8
|
+
# Mailjet::Reporting.domains
|
9
|
+
Mailjet::Reporting.domains.must_be_instance_of Array
|
10
|
+
|
11
|
+
# Mailjet::Reporting.clients
|
12
|
+
Mailjet::Reporting.clients.must_be_instance_of Array
|
13
|
+
|
14
|
+
# Mailjet::Reporting.emails
|
15
|
+
Mailjet::Reporting.emails.must_be_instance_of Array
|
16
|
+
|
17
|
+
# Mailjet::Reporting.statistics
|
18
|
+
Mailjet::Reporting.statistics["cnt_messages"].wont_be_nil
|
19
|
+
|
20
|
+
# Mailjet::Reporting.geolocation
|
21
|
+
Mailjet::Reporting.geolocation.must_be_instance_of Hash
|
22
|
+
|
23
|
+
# Mailjet::Reporting.agents
|
24
|
+
Mailjet::Reporting.agents.must_be_instance_of Array
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Mailjet::TemplateCategory do
|
4
|
+
it 'has an integration suite, tested directly against Mailjet service' do
|
5
|
+
|
6
|
+
# Mailjet::TemplateCategory.all
|
7
|
+
models = Mailjet::TemplateCategory.all
|
8
|
+
models.wont_be_empty
|
9
|
+
model = models.find{|m| m.id == "2"} # from default Mailjet templates
|
10
|
+
model.must_be_instance_of Mailjet::TemplateCategory
|
11
|
+
model.label.must_equal "basic"
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Mailjet::TemplateModel do
|
4
|
+
it 'has an integration suite, tested directly against Mailjet service' do
|
5
|
+
|
6
|
+
# Mailjet::TemplateModel.all
|
7
|
+
models = Mailjet::TemplateModel.all
|
8
|
+
models.wont_be_empty
|
9
|
+
model = models.find{|t| t.id == '4'} # from default Mailjet templates
|
10
|
+
model.must_be_instance_of Mailjet::TemplateModel
|
11
|
+
model.name == "Text"
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe Mailjet do
|
4
|
+
describe "#configure" do
|
5
|
+
it "should permit to set api keys and remember them" do
|
6
|
+
Mailjet.configure do |config|
|
7
|
+
config.api_key = "1234"
|
8
|
+
config.secret_key = "5678"
|
9
|
+
config.domain = "domain_test"
|
10
|
+
config.default_from = "default from test"
|
11
|
+
end
|
12
|
+
|
13
|
+
Mailjet.config.api_key.must_equal "1234"
|
14
|
+
Mailjet.config.secret_key.must_equal "5678"
|
15
|
+
Mailjet.config.domain.must_equal "domain_test"
|
16
|
+
Mailjet.config.default_from = "default from test"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/matchers'
|
3
|
+
require "mocha"
|
4
|
+
require 'mailjet'
|
5
|
+
require 'turn'
|
6
|
+
|
7
|
+
test_account = YAML::load(File.new(File.expand_path("../../config.yml", __FILE__)))['mailjet']
|
8
|
+
|
9
|
+
MiniTest::Spec.before do
|
10
|
+
Mailjet.configure do |config|
|
11
|
+
config.api_key = test_account['api_key']
|
12
|
+
config.secret_key = test_account['secret_key']
|
13
|
+
config.domain = test_account['domain']
|
14
|
+
config.default_from = test_account['default_from']
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
MiniTest::Spec.after do
|
19
|
+
Object.send(:remove_const, 'Mailjet')
|
20
|
+
Dir["#{File.dirname(__FILE__)}/../lib/**/*.rb"].each {|f| load f}
|
21
|
+
end
|
22
|
+
|
23
|
+
Turn.config.format = :outline
|
metadata
ADDED
@@ -0,0 +1,198 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mailjet
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- "Aur\xC3\xA9lien AMILIN"
|
9
|
+
- "Benoit B\xC3\xA9n\xC3\xA9zech"
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
|
14
|
+
date: 2012-03-26 00:00:00 +02:00
|
15
|
+
default_executable:
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: activesupport
|
19
|
+
prerelease: false
|
20
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
21
|
+
none: false
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 3.0.9
|
26
|
+
type: :runtime
|
27
|
+
version_requirements: *id001
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: actionmailer
|
30
|
+
prerelease: false
|
31
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
32
|
+
none: false
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 3.0.9
|
37
|
+
type: :development
|
38
|
+
version_requirements: *id002
|
39
|
+
- !ruby/object:Gem::Dependency
|
40
|
+
name: minitest
|
41
|
+
prerelease: false
|
42
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: "0"
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id003
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: minitest-matchers
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: "0"
|
59
|
+
type: :development
|
60
|
+
version_requirements: *id004
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: turn
|
63
|
+
prerelease: false
|
64
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: "0"
|
70
|
+
type: :development
|
71
|
+
version_requirements: *id005
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
name: rake
|
74
|
+
prerelease: false
|
75
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: "0"
|
81
|
+
type: :development
|
82
|
+
version_requirements: *id006
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: json
|
85
|
+
prerelease: false
|
86
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: "0"
|
92
|
+
type: :development
|
93
|
+
version_requirements: *id007
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rack
|
96
|
+
prerelease: false
|
97
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: "0"
|
103
|
+
type: :development
|
104
|
+
version_requirements: *id008
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
name: mocha
|
107
|
+
prerelease: false
|
108
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: "0"
|
114
|
+
type: :development
|
115
|
+
version_requirements: *id009
|
116
|
+
description: Cloud Emailing for easy delivery.
|
117
|
+
email:
|
118
|
+
- benoit.benezech@gmail.com
|
119
|
+
executables: []
|
120
|
+
|
121
|
+
extensions: []
|
122
|
+
|
123
|
+
extra_rdoc_files: []
|
124
|
+
|
125
|
+
files:
|
126
|
+
- lib/mailjet/api.rb
|
127
|
+
- lib/mailjet/api_error.rb
|
128
|
+
- lib/mailjet/api_request.rb
|
129
|
+
- lib/mailjet/campaign.rb
|
130
|
+
- lib/mailjet/click.rb
|
131
|
+
- lib/mailjet/configuration.rb
|
132
|
+
- lib/mailjet/contact.rb
|
133
|
+
- lib/mailjet/core_extensions/ostruct.rb
|
134
|
+
- lib/mailjet/email.rb
|
135
|
+
- lib/mailjet/list.rb
|
136
|
+
- lib/mailjet/mailer.rb
|
137
|
+
- lib/mailjet/rack/endpoint.rb
|
138
|
+
- lib/mailjet/reporting.rb
|
139
|
+
- lib/mailjet/template_category.rb
|
140
|
+
- lib/mailjet/template_model.rb
|
141
|
+
- lib/mailjet/version.rb
|
142
|
+
- lib/mailjet.rb
|
143
|
+
- MIT-LICENSE
|
144
|
+
- Rakefile
|
145
|
+
- README.md
|
146
|
+
- test/mailjet/api_request_test.rb
|
147
|
+
- test/mailjet/api_test.rb
|
148
|
+
- test/mailjet/campaign_test.rb
|
149
|
+
- test/mailjet/configuration_test.rb
|
150
|
+
- test/mailjet/contact_test.rb
|
151
|
+
- test/mailjet/list_test.rb
|
152
|
+
- test/mailjet/rack/endpoint_test.rb
|
153
|
+
- test/mailjet/reporting_test.rb
|
154
|
+
- test/mailjet/template_category_test.rb
|
155
|
+
- test/mailjet/template_model_test.rb
|
156
|
+
- test/mailjet_test.rb
|
157
|
+
- test/minitest_helper.rb
|
158
|
+
has_rdoc: true
|
159
|
+
homepage: http://www.mailjet.com
|
160
|
+
licenses: []
|
161
|
+
|
162
|
+
post_install_message:
|
163
|
+
rdoc_options: []
|
164
|
+
|
165
|
+
require_paths:
|
166
|
+
- lib
|
167
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
168
|
+
none: false
|
169
|
+
requirements:
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: "0"
|
173
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
|
+
none: false
|
175
|
+
requirements:
|
176
|
+
- - ">="
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: "0"
|
179
|
+
requirements: []
|
180
|
+
|
181
|
+
rubyforge_project:
|
182
|
+
rubygems_version: 1.6.2
|
183
|
+
signing_key:
|
184
|
+
specification_version: 3
|
185
|
+
summary: Cloud Emailing for easy delivery.
|
186
|
+
test_files:
|
187
|
+
- test/mailjet/api_request_test.rb
|
188
|
+
- test/mailjet/api_test.rb
|
189
|
+
- test/mailjet/campaign_test.rb
|
190
|
+
- test/mailjet/configuration_test.rb
|
191
|
+
- test/mailjet/contact_test.rb
|
192
|
+
- test/mailjet/list_test.rb
|
193
|
+
- test/mailjet/rack/endpoint_test.rb
|
194
|
+
- test/mailjet/reporting_test.rb
|
195
|
+
- test/mailjet/template_category_test.rb
|
196
|
+
- test/mailjet/template_model_test.rb
|
197
|
+
- test/mailjet_test.rb
|
198
|
+
- test/minitest_helper.rb
|