midwife-client 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/midwife/client/version.rb +1 -1
- data/lib/midwife/client.rb +16 -6
- data/midwife-client.gemspec +0 -1
- data/spec/client_spec.rb +30 -13
- metadata +6 -22
data/lib/midwife/client.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require "net/http"
|
2
2
|
require "uri"
|
3
3
|
require "json"
|
4
|
-
require 'excon'
|
5
4
|
|
6
5
|
module Midwife
|
7
6
|
class RequestError < StandardError
|
@@ -16,9 +15,17 @@ module Midwife
|
|
16
15
|
private
|
17
16
|
|
18
17
|
def request(path, attributes)
|
19
|
-
|
18
|
+
uri = URI.parse(@endpoint + path)
|
20
19
|
|
21
|
-
|
20
|
+
request = Net::HTTP::Post.new(uri.path)
|
21
|
+
request["content-type"] = "application/json"
|
22
|
+
request.body = attributes.to_json
|
23
|
+
|
24
|
+
response = Net::HTTP.start(uri.host, uri.port) { |http|
|
25
|
+
http.request(request)
|
26
|
+
}
|
27
|
+
|
28
|
+
if response.code =~ /2../
|
22
29
|
JSON.parse(response.body)
|
23
30
|
else
|
24
31
|
raise RequestError.new(response)
|
@@ -43,9 +50,6 @@ module Midwife
|
|
43
50
|
raise ArgumentError, "list_id is required"
|
44
51
|
}
|
45
52
|
|
46
|
-
# transform into an array
|
47
|
-
attributes['subscription_ids[]'] = attributes.delete(:subscription_ids) || []
|
48
|
-
|
49
53
|
request "/lists/#{list_id}/recipients", attributes
|
50
54
|
end
|
51
55
|
|
@@ -65,6 +69,12 @@ module Midwife
|
|
65
69
|
request "/campaigns/#{campaign_id}/deliver", attributes
|
66
70
|
end
|
67
71
|
|
72
|
+
def deliver_campaign_test(attributes)
|
73
|
+
campaign_id = attributes.delete(:campaign_id)
|
74
|
+
|
75
|
+
request "/campaigns/#{campaign_id}/deliver_test", attributes
|
76
|
+
end
|
77
|
+
|
68
78
|
def unsubscribe(attributes)
|
69
79
|
request "/unsubscribe", attributes
|
70
80
|
end
|
data/midwife-client.gemspec
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -33,14 +33,6 @@ describe Midwife::Client do
|
|
33
33
|
|
34
34
|
before do
|
35
35
|
client.reset
|
36
|
-
@campaign_attributes = {
|
37
|
-
'name' => 'April 2011 eVetTen',
|
38
|
-
'from_name' => 'Robert Eversole',
|
39
|
-
'from_email' => 'robert.eversole@recruitmilitary.com',
|
40
|
-
'subject' => '[RecruitMilitary] April eVetTen',
|
41
|
-
'html_body' => '<p>Hello world</p>',
|
42
|
-
'plain_body' => 'hello world'
|
43
|
-
}
|
44
36
|
end
|
45
37
|
|
46
38
|
def last_request
|
@@ -63,7 +55,7 @@ describe Midwife::Client do
|
|
63
55
|
|
64
56
|
last_request.path.should == "/lists/42/recipients"
|
65
57
|
last_request.method.should == :post
|
66
|
-
last_request.params.should == { :email => 'michael@jordan.com',
|
58
|
+
last_request.params.should == { :email => 'michael@jordan.com', :subscription_ids => [1, 2] }
|
67
59
|
end
|
68
60
|
|
69
61
|
context 'when list_id is missing' do
|
@@ -77,11 +69,26 @@ describe Midwife::Client do
|
|
77
69
|
|
78
70
|
describe '#create_campaign' do
|
79
71
|
it 'creates a campaign' do
|
80
|
-
client.create_campaign(
|
72
|
+
client.create_campaign(
|
73
|
+
:filters => [{:column => 'location', :operator => 'near', :value => '45140', :extras => { :distance => 150 }}],
|
74
|
+
:name => 'April 2011 eVetTen',
|
75
|
+
:from_name => 'Robert Eversole',
|
76
|
+
:from_email => 'robert.eversole@recruitmilitary.com',
|
77
|
+
:subject => '[RecruitMilitary] April eVetTen',
|
78
|
+
:html_body => '<p>Hello world</p>',
|
79
|
+
:plain_body => 'hello world')
|
81
80
|
|
82
81
|
last_request.path.should == "/campaigns"
|
83
82
|
last_request.method.should == :post
|
84
|
-
last_request.params.should ==
|
83
|
+
last_request.params.should == {
|
84
|
+
:filters => [{:column => 'location', :operator => 'near', :value => '45140', :extras => { :distance => 150 }}],
|
85
|
+
:name => 'April 2011 eVetTen',
|
86
|
+
:from_name => 'Robert Eversole',
|
87
|
+
:from_email => 'robert.eversole@recruitmilitary.com',
|
88
|
+
:subject => '[RecruitMilitary] April eVetTen',
|
89
|
+
:html_body => '<p>Hello world</p>',
|
90
|
+
:plain_body => 'hello world'
|
91
|
+
}
|
85
92
|
end
|
86
93
|
end
|
87
94
|
|
@@ -120,15 +127,25 @@ describe Midwife::Client do
|
|
120
127
|
last_request.params.should == { :email => 'foo@bar.com', :list_id => 42 }
|
121
128
|
end
|
122
129
|
end
|
130
|
+
|
131
|
+
describe '#deliver_campaign_test' do
|
132
|
+
it 'generates the correct request' do
|
133
|
+
client.deliver_campaign_test(:campaign_id => 42, :emails => ['a@b.com', 'c@d.com'])
|
134
|
+
|
135
|
+
last_request.path.should == "/campaigns/42/deliver_test"
|
136
|
+
last_request.method.should == :post
|
137
|
+
last_request.params.should == { :emails => ['a@b.com', 'c@d.com'] }
|
138
|
+
end
|
139
|
+
end
|
123
140
|
end
|
124
141
|
|
125
142
|
context 'when processing a non-success response' do
|
126
143
|
let(:client) { Midwife::Client.new }
|
127
|
-
let(:response) { double(:
|
144
|
+
let(:response) { double(:code => '404') }
|
128
145
|
|
129
146
|
|
130
147
|
before do
|
131
|
-
|
148
|
+
Net::HTTP.stub(:start).and_return(response)
|
132
149
|
end
|
133
150
|
|
134
151
|
it 'raises an exception' do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: midwife-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Guterl
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-05-
|
18
|
+
date: 2011-05-25 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -32,26 +32,10 @@ dependencies:
|
|
32
32
|
version: "0"
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: excon
|
37
|
-
prerelease: false
|
38
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
hash: 1
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
- 6
|
47
|
-
- 3
|
48
|
-
version: 0.6.3
|
49
|
-
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
35
|
- !ruby/object:Gem::Dependency
|
52
36
|
name: rspec
|
53
37
|
prerelease: false
|
54
|
-
requirement: &
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
55
39
|
none: false
|
56
40
|
requirements:
|
57
41
|
- - ~>
|
@@ -62,7 +46,7 @@ dependencies:
|
|
62
46
|
- 5
|
63
47
|
version: "2.5"
|
64
48
|
type: :development
|
65
|
-
version_requirements: *
|
49
|
+
version_requirements: *id002
|
66
50
|
description: A ruby wrapper for the Midwife HTTP API
|
67
51
|
email:
|
68
52
|
- mguterl@gmail.com
|