streamsend 1.0.0.rc3 → 1.0.0.rc4
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 +8 -8
- data/lib/streamsend/api/base/create.rb +12 -5
- data/lib/streamsend/api/base/show.rb +2 -2
- data/lib/streamsend/api/trigger.rb +20 -0
- data/lib/streamsend/version.rb +1 -1
- data/lib/streamsend.rb +1 -0
- data/spec/lib/streamsend/api/integration/trigger_spec.rb +89 -0
- data/spec/lib/streamsend/api/unit/base/create_spec.rb +7 -3
- data/spec/lib/streamsend/api/unit/trigger_spec.rb +66 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OWQwZjQyNTdiY2E1OThiYWExZGRmOGUzNzQ0ODFmZGM4MmY3ZDNjNQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YTk3MTc1NzM2NDFlMGZiYjM2MTEwYmQ3ZjAwZjkxYzFlZGNiZmM2NA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Yjc2OWMzZDQ0NjA1ZDg3ZGMyNTFmZmU3NTE4MDAwODhkZWQwMWVkZTEyYjg3
|
10
|
+
NDY4ZjEwYjI0ZmY0YjFhM2VhYjM3ZGE2ZTRhY2ZiNDUyNjNjNWRjYmE5ODQ0
|
11
|
+
NjA1M2E0YjA4NzFlZDNjZWQ1ZTRiMzMxMzI5OGE2OGIwY2FkOWY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YWIzOTAzN2VlYjI3YmFkZTU5ZDAzMGE2OTA1NWY4MGZkNTBiMDM2OTJhM2Jl
|
14
|
+
ODlkMTUxZTYwMzkyMjM0YTk5ZmI1MGFjYzQzN2QyOWEwNWU4MDk2NzdjYzYz
|
15
|
+
NzlkZDRiYzYzZjYzOTQ1Yjc1ZTJkZThjMGQ5ZDYwMjhmZDI1MjA=
|
@@ -11,11 +11,7 @@ module StreamSend
|
|
11
11
|
when 401
|
12
12
|
raise StreamSend::Api::UnauthorizedException
|
13
13
|
when 422
|
14
|
-
|
15
|
-
message = response["errors"]
|
16
|
-
else
|
17
|
-
message = "Unprocessable Entity"
|
18
|
-
end
|
14
|
+
message = get_error_from response
|
19
15
|
raise StreamSend::Api::SemanticException.new(message)
|
20
16
|
else
|
21
17
|
raise StreamSend::Api::Exception.new("Could not create the #{namespace}. (#{response.code})")
|
@@ -25,6 +21,17 @@ module StreamSend
|
|
25
21
|
def uri
|
26
22
|
"#{base_uri}.xml"
|
27
23
|
end
|
24
|
+
|
25
|
+
def get_error_from response
|
26
|
+
message = "Unprocessable Entity"
|
27
|
+
if response.parsed_response["request"]
|
28
|
+
message = response.parsed_response["request"]["errors"]
|
29
|
+
elsif response.parsed_response["errors"]
|
30
|
+
message = response.parsed_response["errors"]["error"]
|
31
|
+
elsif response["errors"]
|
32
|
+
message = response["errors"]
|
33
|
+
end
|
34
|
+
end
|
28
35
|
end
|
29
36
|
|
30
37
|
class AudienceCreate < StreamSend::Api::Call::Create
|
@@ -2,9 +2,9 @@ module StreamSend
|
|
2
2
|
module Api
|
3
3
|
module Call
|
4
4
|
class Show < StreamSend::Api::Call::BaseCall
|
5
|
-
def execute(object_id)
|
5
|
+
def execute(object_id, show_options = {})
|
6
6
|
@id = object_id
|
7
|
-
response = session.get(uri)
|
7
|
+
response = session.get(uri, show_options)
|
8
8
|
case response.code
|
9
9
|
when 200
|
10
10
|
StreamSend::Api::Result.new(response.parsed_response[namespace.singularize])
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module StreamSend
|
2
|
+
module Api
|
3
|
+
module Trigger
|
4
|
+
class Index < StreamSend::Api::Call::Index
|
5
|
+
end
|
6
|
+
|
7
|
+
class Show < StreamSend::Api::Call::Show
|
8
|
+
end
|
9
|
+
|
10
|
+
class Update < StreamSend::Api::Call::Update
|
11
|
+
end
|
12
|
+
|
13
|
+
class Create < StreamSend::Api::Call::Create
|
14
|
+
end
|
15
|
+
|
16
|
+
class Destroy < StreamSend::Api::Call::Destroy
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/streamsend/version.rb
CHANGED
data/lib/streamsend.rb
CHANGED
@@ -31,6 +31,7 @@ require "streamsend/api/list"
|
|
31
31
|
require "streamsend/api/import"
|
32
32
|
require "streamsend/api/membership"
|
33
33
|
require "streamsend/api/person"
|
34
|
+
require "streamsend/api/trigger"
|
34
35
|
require "streamsend/api/unsubscribe"
|
35
36
|
require "streamsend/api/upload"
|
36
37
|
require "streamsend/api/view"
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Trigger
|
6
|
+
describe "Trigger calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new() }
|
8
|
+
let(:create_request){ Create.new(session) }
|
9
|
+
let(:destroy_request){ Destroy.new(session) }
|
10
|
+
let(:from_addy){ "jo@yo.yoyo" }
|
11
|
+
|
12
|
+
before do
|
13
|
+
WebMock.disable!
|
14
|
+
emails = StreamSend::Api::Email::Index.new(session).execute
|
15
|
+
email_id = emails[0].id
|
16
|
+
from_emails = StreamSend::Api::FromEmailAddress::Index.new(session).execute
|
17
|
+
@from_email = from_emails.select{|email| email.activated == true}.first
|
18
|
+
@trigger = { :trigger => { :name => "test trigs",
|
19
|
+
:enabled => true,
|
20
|
+
:subject => "testing this yo!",
|
21
|
+
:email_id => email_id,
|
22
|
+
:start_date => "2013-05-27",
|
23
|
+
:time => "T03:44:55Z",
|
24
|
+
:frequency => "weekly",
|
25
|
+
:interval => 2,
|
26
|
+
:days => 1,
|
27
|
+
:from => {:name => "jo", :email_address => @from_email.email_address },
|
28
|
+
:reply_to => {:name => "jack", :email_address => @from_email.email_address },
|
29
|
+
:to => {:audience_id => 1 },
|
30
|
+
:options => {:track_views => true}}}
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
after do
|
35
|
+
WebMock.enable!
|
36
|
+
end
|
37
|
+
|
38
|
+
describe Index do
|
39
|
+
it "returns an array of triggers" do
|
40
|
+
pending "No activated from email addresses for this account" if !@from_email
|
41
|
+
id = create_request.execute(@trigger)
|
42
|
+
|
43
|
+
index_request = Index.new(session)
|
44
|
+
triggers = index_request.execute
|
45
|
+
expect(triggers.count).to be > 0
|
46
|
+
|
47
|
+
destroy_request.execute(id)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe Show do
|
52
|
+
it "returns a specific trigger by id" do
|
53
|
+
pending "No activated from email addresses for this account" if !@from_email
|
54
|
+
id = create_request.execute(@trigger)
|
55
|
+
|
56
|
+
show_request = Show.new(session)
|
57
|
+
trigger = show_request.execute(id)
|
58
|
+
expect(trigger.name).to eq(@trigger[:trigger][:name])
|
59
|
+
|
60
|
+
destroy_request.execute(id)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe Create do
|
65
|
+
it "creates a trigger" do
|
66
|
+
pending "No activated from email addresses for this account" if !@from_email
|
67
|
+
id = create_request.execute(@trigger)
|
68
|
+
|
69
|
+
expect(id).to_not be nil
|
70
|
+
destroy_request.execute(id)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe Destroy do
|
75
|
+
it "destroys a trigger" do
|
76
|
+
pending "No activated from email addresses for this account" if !@from_email
|
77
|
+
id = create_request.execute(@trigger)
|
78
|
+
expect(id).to_not be nil
|
79
|
+
destroy_request.execute(id)
|
80
|
+
expect do
|
81
|
+
show_request = Show.new(session)
|
82
|
+
user = show_request.execute(id)
|
83
|
+
end.to raise_exception(StreamSend::Api::Exception, "Could not find any triggers with the specified id. (404)")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -31,9 +31,11 @@ module StreamSend
|
|
31
31
|
|
32
32
|
it "raises a SemanticException when encountering 422 with a singular error message" do
|
33
33
|
response_xml = <<-XML
|
34
|
+
<request>
|
34
35
|
<errors type='array'>
|
35
|
-
<
|
36
|
+
<message>Error B</message>
|
36
37
|
</errors>
|
38
|
+
</request>
|
37
39
|
XML
|
38
40
|
stub_request(:post, "http://test:password@default.base/calls.xml").
|
39
41
|
to_return(:status => 422, :body => response_xml, :headers => { :content_type => "application/xml" })
|
@@ -44,10 +46,12 @@ module StreamSend
|
|
44
46
|
|
45
47
|
it "raises a SemanticException when encountering 422 with multiple errors" do
|
46
48
|
response_xml = <<-XML
|
49
|
+
<request>
|
47
50
|
<errors type='array'>
|
48
|
-
<
|
49
|
-
<
|
51
|
+
<message>Error A</message>
|
52
|
+
<message>Error B</message>
|
50
53
|
</errors>
|
54
|
+
</request>
|
51
55
|
XML
|
52
56
|
stub_request(:post, "http://test:password@default.base/calls.xml").
|
53
57
|
to_return(:status => 422, :body => response_xml, :headers => { :content_type => "application/xml" })
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module StreamSend
|
4
|
+
module Api
|
5
|
+
module Trigger
|
6
|
+
describe "Trigger calls" do
|
7
|
+
let(:session){ StreamSend::Api::Session.new("test", "password", "https://default.base") }
|
8
|
+
let(:index_request){ Index.new(session) }
|
9
|
+
let(:show_request){ Show.new(session) }
|
10
|
+
let(:create_request){ Create.new(session) }
|
11
|
+
let(:update_request){ Update.new(session) }
|
12
|
+
let(:trigger_hash){ {:trigger => { :name => "test trigs",
|
13
|
+
:enabled => true,
|
14
|
+
:subject => "testing this yo!",
|
15
|
+
:email_id => 1,
|
16
|
+
:start_date => "2013-05-27",
|
17
|
+
:time => "T03:44:55Z",
|
18
|
+
:frequency => "weekly",
|
19
|
+
:interval => 2,
|
20
|
+
:days => [1,2,3],
|
21
|
+
:from => {:name => "jo", :email_address => "jo@what.not" },
|
22
|
+
:reply_to => {:name => "jack", :email_address => "jack@the.box" },
|
23
|
+
:to => {:audience_id => 1 },
|
24
|
+
:options => {:track_views => true}}}}
|
25
|
+
let(:trigger_id){ 1234 }
|
26
|
+
let(:xml){ "<?xml version=\"1.0\" encoding=\"UTF-8\"?><triggers type=\"array\"><trigger><test type=\"integer\">1</test></trigger></triggers>" }
|
27
|
+
|
28
|
+
describe Index do
|
29
|
+
it "creates a uri for getting an index of triggers" do
|
30
|
+
stub_request(:get, "https://test:password@default.base/triggers.xml").
|
31
|
+
to_return(:status => 200, :body => xml, :headers => {'Content-Type' => 'text/xml'})
|
32
|
+
index_request.execute
|
33
|
+
expect(index_request.uri).to eq("https://default.base/triggers.xml")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe Show do
|
38
|
+
it "creates a uri for getting a specific trigger" do
|
39
|
+
stub_request(:get, "https://test:password@default.base/triggers/#{trigger_id}.xml").
|
40
|
+
to_return(:status => 200, :body => xml, :headers => {'Content-Type' => 'text/xml'})
|
41
|
+
show_request.execute(trigger_id)
|
42
|
+
expect(show_request.uri).to eq("https://default.base/triggers/#{trigger_id}.xml")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe Create do
|
47
|
+
it "creates a uri for creating a trigger" do
|
48
|
+
stub_request(:post, "https://test:password@default.base/triggers.xml").
|
49
|
+
to_return(:status => 201, :body => "", :headers => {'Location' => 'something/something/101'})
|
50
|
+
create_request.execute(trigger_hash)
|
51
|
+
expect(create_request.uri).to eq("https://default.base/triggers.xml")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe Update do
|
56
|
+
it "creates a uri for updating a trigger" do
|
57
|
+
stub_request(:put, "https://test:password@default.base/triggers/#{trigger_id}.xml").
|
58
|
+
to_return(:status => 200, :body => "")
|
59
|
+
update_request.execute(trigger_id, trigger_hash)
|
60
|
+
expect(update_request.uri).to eq("https://default.base/triggers/#{trigger_id}.xml")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: streamsend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Yeo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httmultiparty
|
@@ -178,6 +178,7 @@ files:
|
|
178
178
|
- lib/streamsend/api/person.rb
|
179
179
|
- lib/streamsend/api/result.rb
|
180
180
|
- lib/streamsend/api/session.rb
|
181
|
+
- lib/streamsend/api/trigger.rb
|
181
182
|
- lib/streamsend/api/unsubscribe.rb
|
182
183
|
- lib/streamsend/api/upload.rb
|
183
184
|
- lib/streamsend/api/user.rb
|
@@ -199,6 +200,7 @@ files:
|
|
199
200
|
- spec/lib/streamsend/api/integration/list_spec.rb
|
200
201
|
- spec/lib/streamsend/api/integration/membership_spec.rb
|
201
202
|
- spec/lib/streamsend/api/integration/person_spec.rb
|
203
|
+
- spec/lib/streamsend/api/integration/trigger_spec.rb
|
202
204
|
- spec/lib/streamsend/api/integration/unsubscribe_spec.rb
|
203
205
|
- spec/lib/streamsend/api/integration/upload_spec.rb
|
204
206
|
- spec/lib/streamsend/api/integration/user_spec.rb
|
@@ -220,6 +222,7 @@ files:
|
|
220
222
|
- spec/lib/streamsend/api/unit/person_spec.rb
|
221
223
|
- spec/lib/streamsend/api/unit/result_spec.rb
|
222
224
|
- spec/lib/streamsend/api/unit/session_spec.rb
|
225
|
+
- spec/lib/streamsend/api/unit/trigger_spec.rb
|
223
226
|
- spec/lib/streamsend/api/unit/unsubscribe_spec.rb
|
224
227
|
- spec/lib/streamsend/api/unit/user_spec.rb
|
225
228
|
- spec/spec_helper.rb
|
@@ -264,6 +267,7 @@ test_files:
|
|
264
267
|
- spec/lib/streamsend/api/integration/list_spec.rb
|
265
268
|
- spec/lib/streamsend/api/integration/membership_spec.rb
|
266
269
|
- spec/lib/streamsend/api/integration/person_spec.rb
|
270
|
+
- spec/lib/streamsend/api/integration/trigger_spec.rb
|
267
271
|
- spec/lib/streamsend/api/integration/unsubscribe_spec.rb
|
268
272
|
- spec/lib/streamsend/api/integration/upload_spec.rb
|
269
273
|
- spec/lib/streamsend/api/integration/user_spec.rb
|
@@ -285,6 +289,7 @@ test_files:
|
|
285
289
|
- spec/lib/streamsend/api/unit/person_spec.rb
|
286
290
|
- spec/lib/streamsend/api/unit/result_spec.rb
|
287
291
|
- spec/lib/streamsend/api/unit/session_spec.rb
|
292
|
+
- spec/lib/streamsend/api/unit/trigger_spec.rb
|
288
293
|
- spec/lib/streamsend/api/unit/unsubscribe_spec.rb
|
289
294
|
- spec/lib/streamsend/api/unit/user_spec.rb
|
290
295
|
- spec/spec_helper.rb
|