email_center_api 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.md +64 -11
- data/config/email_center_api.example.yml +3 -0
- data/email_center_api.gemspec +5 -4
- data/lib/email_center_api.rb +32 -8
- data/lib/email_center_api/actions.rb +17 -0
- data/lib/email_center_api/http_client.rb +47 -0
- data/lib/email_center_api/nodes/email_node.rb +81 -0
- data/lib/email_center_api/nodes/template_node.rb +22 -0
- data/lib/email_center_api/query.rb +44 -0
- data/lib/email_center_api/response_validator.rb +31 -0
- data/lib/email_center_api/version.rb +1 -1
- data/spec/fake_web_helpers/email.rb +36 -0
- data/spec/fake_web_helpers/template.rb +21 -0
- data/spec/features/triggering_an_email_to_send_spec.rb +22 -0
- data/spec/http_client_spec.rb +50 -0
- data/spec/nodes/email_node_spec.rb +113 -0
- data/spec/nodes/template_node_spec.rb +15 -0
- data/spec/response_validator_spec.rb +70 -0
- data/spec/spec_helper.rb +12 -41
- data/spec/support/fake_config.yml +3 -0
- metadata +120 -106
- data/lib/email_center_api/base.rb +0 -40
- data/lib/email_center_api/configuration.rb +0 -32
- data/lib/email_center_api/list.rb +0 -90
- data/lib/email_center_api/recipient.rb +0 -62
- data/spec/configuration_spec.rb +0 -28
- data/spec/list_spec.rb +0 -119
- data/spec/recipient_spec.rb +0 -56
@@ -0,0 +1,21 @@
|
|
1
|
+
module FakeWebHelpers
|
2
|
+
class Template
|
3
|
+
def self.setup
|
4
|
+
all_templates = [
|
5
|
+
{
|
6
|
+
text: "email_template",
|
7
|
+
children: [
|
8
|
+
{text: "A template", nodeId: "10", nodeClass: "email_template"},
|
9
|
+
{text: "Another template", nodeId: "11", nodeClass: "email_template"},
|
10
|
+
{text: "More templates", nodeId: "12", nodeClass: "email_template"}]
|
11
|
+
}
|
12
|
+
].to_json
|
13
|
+
FakeWeb.register_uri(:get, 'https://test:test@maxemail.emailcenteruk.com/api/json/tree?method=fetchRoot&tree=email_template&children[]=root',
|
14
|
+
:body => all_templates,
|
15
|
+
:content_type => 'application/json')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
FakeWebHelpers::Template.setup
|
21
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'when a trigger email exists' do
|
4
|
+
it 'find the appropriate email and then trigger it to send' do
|
5
|
+
emails = EmailCenterApi::Nodes::EmailNode.emails(folder: 123)
|
6
|
+
|
7
|
+
email = emails.detect { |e| e.name == 'Test Email' }
|
8
|
+
|
9
|
+
email_address = 'test@reevoo.com'
|
10
|
+
options = {
|
11
|
+
'Reviews' => {
|
12
|
+
'retailer_product_name' => 'Test product',
|
13
|
+
'retailer_name' => 'test retailer',
|
14
|
+
'retailer_from' => 'reply@reevoo.com'
|
15
|
+
}
|
16
|
+
}
|
17
|
+
expect(
|
18
|
+
email.trigger(email_address, options).response.code
|
19
|
+
).to eq('200')
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EmailCenterApi::HttpClient do
|
4
|
+
describe '#get' do
|
5
|
+
|
6
|
+
before do
|
7
|
+
described_class.reset
|
8
|
+
described_class::Connection.stub(:get)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'uses the configured API endpoint' do
|
12
|
+
described_class::Connection.should_receive(:base_uri).with(
|
13
|
+
EmailCenterApi.config['base_uri']
|
14
|
+
)
|
15
|
+
described_class.get('/tree')
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'logs the user in' do
|
19
|
+
described_class::Connection.should_receive(:basic_auth).with(
|
20
|
+
EmailCenterApi.config['username'],
|
21
|
+
EmailCenterApi.config['password']
|
22
|
+
)
|
23
|
+
described_class.get('/tree')
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when a Timeout error is raised once' do
|
27
|
+
before do
|
28
|
+
described_class::Connection.stub(:get) do
|
29
|
+
@attempt ||= 0
|
30
|
+
@attempt += 1
|
31
|
+
raise(Timeout::Error) if @attempt <= 1
|
32
|
+
'Valid Result'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'retries the request' do
|
37
|
+
described_class.get('/tree').should == 'Valid Result'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when data is never returned before timeout' do
|
42
|
+
before { described_class::Connection.stub(:get).and_raise(Timeout::Error, 'did not complete') }
|
43
|
+
|
44
|
+
it 'when it times out' do
|
45
|
+
expect { described_class.get('/tree') }.to raise_error(EmailCenterApi::HttpTimeoutError, 'did not complete')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EmailCenterApi::Nodes::EmailNode do
|
4
|
+
describe '.emails' do
|
5
|
+
context 'when a folder is specified' do
|
6
|
+
|
7
|
+
it 'returns all emails in the specified folder' do
|
8
|
+
json_object = [{ 'text' => 'Reevoo-test', 'nodeId' => '145', 'nodeClass' => 'email_template'}]
|
9
|
+
|
10
|
+
expect_any_instance_of(
|
11
|
+
EmailCenterApi::Query
|
12
|
+
).to receive(:tree).with('folder', 584).and_return(json_object)
|
13
|
+
|
14
|
+
expect(described_class.emails(folder: 584)).to eq([
|
15
|
+
described_class.new('Reevoo-test', 145, 'email_template')
|
16
|
+
])
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'does not return sub-folders in the specified folder' do
|
20
|
+
json_object = [{ 'text' => 'Reevoo-test', 'nodeId' => '145', 'nodeClass' => 'folder'}]
|
21
|
+
|
22
|
+
expect_any_instance_of(
|
23
|
+
EmailCenterApi::Query
|
24
|
+
).to receive(:tree).with('folder', 584).and_return(json_object)
|
25
|
+
|
26
|
+
expect(described_class.emails(folder: 584)).to be_empty
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'returns empty array when folder ID does not exist' do
|
30
|
+
expect_any_instance_of(
|
31
|
+
EmailCenterApi::Query
|
32
|
+
).to receive(:tree).and_raise(EmailCenterApi::ApiError)
|
33
|
+
|
34
|
+
expect(described_class.emails(folder: 584)).to be_empty
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when a folder is not specified' do
|
39
|
+
it 'it retrievs elements from teh root node' do
|
40
|
+
json_object = [{ 'text' => 'Reevoo-test', 'nodeId' => '145', 'nodeClass' => 'email_template'}]
|
41
|
+
|
42
|
+
expect_any_instance_of(
|
43
|
+
EmailCenterApi::Query
|
44
|
+
).to receive(:tree).with('folder', 0).and_return(json_object)
|
45
|
+
|
46
|
+
expect(described_class.emails).to eq([
|
47
|
+
described_class.new('Reevoo-test', 145, 'email_template')
|
48
|
+
])
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '.folders' do
|
55
|
+
context 'when a parent node id is not passed in' do
|
56
|
+
it 'queries the root node' do
|
57
|
+
json_object = [{ 'text' => 'Reevoo-test', 'nodeId' => '145', 'nodeClass' => 'folder'}]
|
58
|
+
|
59
|
+
expect_any_instance_of(
|
60
|
+
EmailCenterApi::Query
|
61
|
+
).to receive(:tree).with('folder', 0).and_return(json_object)
|
62
|
+
|
63
|
+
expect(described_class.folders).to eq([
|
64
|
+
described_class.new('Reevoo-test', 145, 'folder')
|
65
|
+
])
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'when a parent node id is passed in' do
|
70
|
+
it 'queries within the specified folder' do
|
71
|
+
json_object = [{ 'text' => 'Reevoo-test', 'nodeId' => '145', 'nodeClass' => 'folder'}]
|
72
|
+
|
73
|
+
expect_any_instance_of(
|
74
|
+
EmailCenterApi::Query
|
75
|
+
).to receive(:tree).with('folder', 777).and_return(json_object)
|
76
|
+
|
77
|
+
expect(described_class.folders(folder: 777)).to eq([
|
78
|
+
described_class.new('Reevoo-test', 145, 'folder')
|
79
|
+
])
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '.trigger' do
|
85
|
+
context 'when an email type node' do
|
86
|
+
let(:email_address) { 'test@reevoo.com' }
|
87
|
+
let(:options) { {
|
88
|
+
'Reviews' => {
|
89
|
+
'retailer_product_name' => 'Test product',
|
90
|
+
'retailer_name' => 'test retailer',
|
91
|
+
'retailer_from' => 'reply@reevoo.com'
|
92
|
+
}
|
93
|
+
} }
|
94
|
+
|
95
|
+
it 'will trigger sending of the email' do
|
96
|
+
expect_any_instance_of(
|
97
|
+
EmailCenterApi::Actions
|
98
|
+
).to receive(:trigger).with(100, email_address, options)
|
99
|
+
|
100
|
+
email = described_class.new('Trigger Test', 100, 'email_triggered')
|
101
|
+
email.trigger(email_address, options)
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'will raise an arguement invalid error if node is not an email' do
|
105
|
+
email = described_class.new('Trigger Test', 100, 'folder')
|
106
|
+
expect {
|
107
|
+
email.trigger(email_address, options)
|
108
|
+
}.to raise_error(NoMethodError)
|
109
|
+
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EmailCenterApi::Nodes::TemplateNode do
|
4
|
+
describe '.all' do
|
5
|
+
it 'returns 3 items' do
|
6
|
+
described_class.all.length.should == 3
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'returns templates with the correct text and node_id' do
|
10
|
+
template = described_class.all.first
|
11
|
+
template.name.should == 'A template'
|
12
|
+
template.node_id.should == 10
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EmailCenterApi::ResponseValidator do
|
4
|
+
|
5
|
+
describe "#validate_and_return_response" do
|
6
|
+
subject { described_class.new(response) }
|
7
|
+
|
8
|
+
class TestResponse
|
9
|
+
def initialize(options)
|
10
|
+
@options = options
|
11
|
+
end
|
12
|
+
|
13
|
+
def success?
|
14
|
+
@options[:success?]
|
15
|
+
end
|
16
|
+
|
17
|
+
def [](key)
|
18
|
+
(@options[:data] || {})[key]
|
19
|
+
end
|
20
|
+
|
21
|
+
def code
|
22
|
+
'404'
|
23
|
+
end
|
24
|
+
|
25
|
+
def is_a?(obj)
|
26
|
+
obj == Hash
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when response is valid' do
|
31
|
+
let(:response) { TestResponse.new({success?: true}) }
|
32
|
+
|
33
|
+
it 'return response' do
|
34
|
+
expect(subject.validate_and_return_response).to eq(response)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when success? is false' do
|
39
|
+
context 'and no msg is set' do
|
40
|
+
let(:response) { TestResponse.new(success?: false) }
|
41
|
+
|
42
|
+
it 'return response' do
|
43
|
+
expect {
|
44
|
+
subject.validate_and_return_response
|
45
|
+
}.to raise_error(EmailCenterApi::HttpError)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'and msg is set' do
|
50
|
+
let(:response) { TestResponse.new(success?: false, data: {'msg' => 'error'}) }
|
51
|
+
|
52
|
+
it 'return response' do
|
53
|
+
expect {
|
54
|
+
subject.validate_and_return_response
|
55
|
+
}.to raise_error(EmailCenterApi::ApiError)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'when success is true but response is a hash and success key is false' do
|
61
|
+
let(:response) { TestResponse.new(success?: true, data: {'success' => false}) }
|
62
|
+
|
63
|
+
it 'return response' do
|
64
|
+
expect {
|
65
|
+
subject.validate_and_return_response
|
66
|
+
}.to raise_error(EmailCenterApi::HttpError)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,48 +1,19 @@
|
|
1
|
+
$LOAD_PATH << './'
|
1
2
|
require 'email_center_api'
|
2
|
-
require 'email_center_api/list'
|
3
|
-
require 'email_center_api/recipient'
|
4
|
-
require 'email_center_api/configuration'
|
5
3
|
|
4
|
+
require 'pry-debugger' unless ENV['RM_INFO']
|
6
5
|
require 'fakeweb'
|
7
6
|
require 'httparty'
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
{\"recipient_id\":\"1234\",\"list_id\":\"26\",\"record_type\":\"campaign\",\"subscribed\":\"1\",\"update_ts\":\"2012-09-11 16:43:10\",\"list_name\":\"testsublist\",\"list_type\":\"something\",\"email_address\":\"test@example.co.uk\"}]"
|
12
|
-
FakeWeb.register_uri(:get, "https://test:test@maxemail.emailcenteruk.com/api/json/recipient?recipientId=1234&method=fetchLists", :body => lists_body, :content_type => "application/json" )
|
13
|
-
#Subscribed list only
|
14
|
-
sub_list_body = "[{\"recipient_id\":\"1234\",\"list_id\":\"26\",\"record_type\":\"campaign\",\"subscribed\":\"1\",\"update_ts\":\"2012-09-11 16:43:10\",\"list_name\":\"testsublist\",\"list_type\":\"something\",\"email_address\":\"test@example.co.uk\"}]"
|
15
|
-
FakeWeb.register_uri(:get, "https://test:test@maxemail.emailcenteruk.com/api/json/recipient?recipientId=2346&method=fetchLists", :body => sub_list_body, :content_type => 'application/json')
|
16
|
-
#Find Recipient
|
17
|
-
recipient_body = "{\"recipient_id\":\"1234\",\"email_address\":\"test@example.co.uk\",\"domain_name\":\"example.co.uk\",\"update_ts\":\"2012-01-21 07:15:13\"}"
|
18
|
-
FakeWeb.register_uri(:get, "https://test:test@maxemail.emailcenteruk.com/api/json/recipient?method=find&recipientId=1234", :body => recipient_body, :content_type => "application/json")
|
19
|
-
#Find another
|
20
|
-
another_recipient_body = "{\"recipient_id\":\"2346\",\"email_address\":\"test2@example.co.uk\",\"domain_name\":\"example.co.uk\",\"update_ts\":\"2012-01-21 07:15:13\"}"
|
21
|
-
FakeWeb.register_uri(:get, "https://test:test@maxemail.emailcenteruk.com/api/json/recipient?method=find&recipientId=2345", :body => another_recipient_body, :content_type => "application/json")
|
7
|
+
require 'json'
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
22
10
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
#Find List list
|
27
|
-
list = '{"list_id":"4","folder_id":"9","name":"Master Unsubscribe List","list_total":"1925","status":"available","type":"suppression","created_ts":"2009-02-13 11:18:05","update_ts":"2012-09-11 13:29:25"}'
|
28
|
-
FakeWeb.register_uri(:get, "https://test:test@maxemail.emailcenteruk.com/api/json/list?method=find&listId=4", :body => list, :content_type => "application/json")
|
29
|
-
#List Not Found
|
30
|
-
FakeWeb.register_uri(:get, "https://test:test@maxemail.emailcenteruk.com/api/json/list?method=find&listId=10", :body => '{"success":false,"msg":"Unable to find requested list","code":0,"errors":[]}', :content_type => "application/json", :status => 400)
|
31
|
-
#All lists
|
32
|
-
all_lists = '[{"list_id":"19","folder_id":"9","name":"111116_clicked_bad_link","list_total":"2930","status":"available","type":"include","created_ts":"2011-11-16 17:42:44","update_ts":"2011-11-16 17:43:02"},
|
33
|
-
{"list_id":"21","folder_id":"9","name":"111116_clicked_good_link","list_total":"3602","status":"available","type":"suppression","created_ts":"2011-11-16 17:43:28","update_ts":"2011-11-16 17:43:46"},
|
34
|
-
{"list_id":"23","folder_id":"9","name":"111123_clicked_initial_email","list_total":"23632","status":"available","type":"suppression","created_ts":"2011-11-23 10:02:03","update_ts":"2011-11-23 10:02:28"},
|
35
|
-
{"list_id":"7","folder_id":"9","name":"Contacts","list_total":"0","status":"available","type":"include","created_ts":"2011-08-10 16:23:39","update_ts":"2011-08-10 16:23:39"},
|
36
|
-
{"list_id":"2","folder_id":"9","name":"Master Bounce List","list_total":"4030","status":"available","type":"bounce","created_ts":"2009-02-13 11:18:05","update_ts":"2012-09-11 10:02:15"},
|
37
|
-
{"list_id":"9","folder_id":"33","name":"Master List","list_total":"7521","status":"available","type":"include","created_ts":"2011-08-15 14:50:05","update_ts":"2012-09-11 04:00:15"},
|
38
|
-
{"list_id":"4","folder_id":"9","name":"Master Unsubscribe List","list_total":"1925","status":"available","type":"suppression","created_ts":"2009-02-13 11:18:05","update_ts":"2012-09-11 13:29:25"},
|
39
|
-
{"list_id":"13","folder_id":"33","name":"Reminder List","list_total":"1642205","status":"available","type":"include","created_ts":"2011-10-03 16:22:09","update_ts":"2012-09-11 04:00:15"},
|
40
|
-
{"list_id":"5","folder_id":"9","name":"Test Data (EMC)","list_total":"9","status":"available","type":"include","created_ts":"2011-08-10 14:45:03","update_ts":"2011-08-10 14:48:34"},
|
41
|
-
{"list_id":"11","folder_id":"9","name":"Test Data (SD)","list_total":"3","status":"available","type":"include","created_ts":"2011-08-17 14:14:01","update_ts":"2011-08-17 14:16:48"},
|
42
|
-
{"list_id":"25","folder_id":"9","name":"testunsub","list_total":"0","status":"available","type":"suppression","created_ts":"2012-09-10 13:39:19","update_ts":"2012-09-10 13:39:19"}]'
|
43
|
-
FakeWeb.register_uri(:get, "https://test:test@maxemail.emailcenteruk.com/api/json/list?method=fetchAll", :body => all_lists, :content_type => "application/json")
|
11
|
+
config.before(:all) do
|
12
|
+
EmailCenterApi.config_path = File.dirname(__FILE__) + "/support/fake_config.yml"
|
13
|
+
end
|
44
14
|
|
45
|
-
|
46
|
-
|
15
|
+
end
|
16
|
+
|
17
|
+
FakeWeb.allow_net_connect = false
|
47
18
|
|
48
|
-
|
19
|
+
Dir['spec/fake_web_helpers/*.rb'].each { |f| require f }
|
metadata
CHANGED
@@ -1,161 +1,175 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: email_center_api
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.0.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Ed Robinson
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-11-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: httparty
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
18
|
+
requirements:
|
26
19
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 9
|
32
|
-
- 0
|
33
|
-
version: 0.9.0
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.11.0
|
34
22
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: json
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.11.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: json
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
40
33
|
none: false
|
41
|
-
requirements:
|
34
|
+
requirements:
|
42
35
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 1
|
45
|
-
segments:
|
46
|
-
- 1
|
47
|
-
- 7
|
48
|
-
- 5
|
36
|
+
- !ruby/object:Gem::Version
|
49
37
|
version: 1.7.5
|
50
38
|
type: :runtime
|
51
|
-
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: fakeweb
|
54
39
|
prerelease: false
|
55
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
41
|
none: false
|
57
|
-
requirements:
|
42
|
+
requirements:
|
58
43
|
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.7.5
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: fakeweb
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
65
53
|
version: 1.3.0
|
66
54
|
type: :development
|
67
|
-
version_requirements: *id003
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: rspec
|
70
55
|
prerelease: false
|
71
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
57
|
none: false
|
73
|
-
requirements:
|
58
|
+
requirements:
|
74
59
|
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.3.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.14.0
|
82
70
|
type: :development
|
83
|
-
|
84
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.14.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
85
79
|
name: pry
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
86
87
|
prerelease: false
|
87
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: pry-debugger
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
88
97
|
none: false
|
89
|
-
requirements:
|
90
|
-
- -
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
|
93
|
-
segments:
|
94
|
-
- 0
|
95
|
-
version: "0"
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
96
102
|
type: :development
|
97
|
-
|
98
|
-
|
99
|
-
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
description: A RubyGem That wraps EmailCenter's maxemail JSON Api
|
111
|
+
email: !binary |-
|
112
|
+
ZWQucm9iaW5zb25AcmVldm9vLmNvbQ==
|
100
113
|
executables: []
|
101
|
-
|
102
114
|
extensions: []
|
103
|
-
|
104
115
|
extra_rdoc_files: []
|
105
|
-
|
106
|
-
files:
|
116
|
+
files:
|
107
117
|
- .gitignore
|
108
118
|
- Gemfile
|
109
119
|
- LICENSE.txt
|
110
120
|
- README.md
|
111
121
|
- Rakefile
|
122
|
+
- config/email_center_api.example.yml
|
112
123
|
- email_center_api.gemspec
|
113
124
|
- lib/email_center_api.rb
|
114
|
-
- lib/email_center_api/
|
115
|
-
- lib/email_center_api/
|
116
|
-
- lib/email_center_api/
|
117
|
-
- lib/email_center_api/
|
125
|
+
- lib/email_center_api/actions.rb
|
126
|
+
- lib/email_center_api/http_client.rb
|
127
|
+
- lib/email_center_api/nodes/email_node.rb
|
128
|
+
- lib/email_center_api/nodes/template_node.rb
|
129
|
+
- lib/email_center_api/query.rb
|
130
|
+
- lib/email_center_api/response_validator.rb
|
118
131
|
- lib/email_center_api/version.rb
|
119
|
-
- spec/
|
120
|
-
- spec/
|
121
|
-
- spec/
|
132
|
+
- spec/fake_web_helpers/email.rb
|
133
|
+
- spec/fake_web_helpers/template.rb
|
134
|
+
- spec/features/triggering_an_email_to_send_spec.rb
|
135
|
+
- spec/http_client_spec.rb
|
136
|
+
- spec/nodes/email_node_spec.rb
|
137
|
+
- spec/nodes/template_node_spec.rb
|
138
|
+
- spec/response_validator_spec.rb
|
122
139
|
- spec/spec_helper.rb
|
140
|
+
- spec/support/fake_config.yml
|
123
141
|
homepage: https://github.com/reevoo/email_center_api
|
124
142
|
licenses: []
|
125
|
-
|
126
143
|
post_install_message:
|
127
144
|
rdoc_options: []
|
128
|
-
|
129
|
-
require_paths:
|
145
|
+
require_paths:
|
130
146
|
- lib
|
131
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
148
|
none: false
|
133
|
-
requirements:
|
134
|
-
- -
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
|
137
|
-
|
138
|
-
- 0
|
139
|
-
version: "0"
|
140
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ! '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
154
|
none: false
|
142
|
-
requirements:
|
143
|
-
- -
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
|
146
|
-
segments:
|
147
|
-
- 0
|
148
|
-
version: "0"
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
149
159
|
requirements: []
|
150
|
-
|
151
160
|
rubyforge_project:
|
152
|
-
rubygems_version: 1.8.
|
161
|
+
rubygems_version: 1.8.25
|
153
162
|
signing_key:
|
154
163
|
specification_version: 3
|
155
164
|
summary: A RubyGem That wraps EmailCenter's maxemail JSON Api
|
156
|
-
test_files:
|
157
|
-
- spec/
|
158
|
-
- spec/
|
159
|
-
- spec/
|
165
|
+
test_files:
|
166
|
+
- spec/fake_web_helpers/email.rb
|
167
|
+
- spec/fake_web_helpers/template.rb
|
168
|
+
- spec/features/triggering_an_email_to_send_spec.rb
|
169
|
+
- spec/http_client_spec.rb
|
170
|
+
- spec/nodes/email_node_spec.rb
|
171
|
+
- spec/nodes/template_node_spec.rb
|
172
|
+
- spec/response_validator_spec.rb
|
160
173
|
- spec/spec_helper.rb
|
174
|
+
- spec/support/fake_config.yml
|
161
175
|
has_rdoc:
|