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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTMxZWI1MzljMWM0OTY4N2ZhYmMwMjE3NjU2M2FjM2VhNzk1NmExMg==
4
+ OWQwZjQyNTdiY2E1OThiYWExZGRmOGUzNzQ0ODFmZGM4MmY3ZDNjNQ==
5
5
  data.tar.gz: !binary |-
6
- NmI1ODY0YmE3MmZjNzhhMTIyMWVmZjE5ZTFiYTE0MWI0ZGZiYTY0Zg==
6
+ YTk3MTc1NzM2NDFlMGZiYjM2MTEwYmQ3ZjAwZjkxYzFlZGNiZmM2NA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzJiZWJkMTUzYTg1MTcxODc2NzE2YjViZDE4N2UzNzFjM2FjNDgwYWFhZTIx
10
- NTU0YWQyZjM2MWM1ZDQ5YTgyZWI1NWNiZTc3ZjBkMmFlMTgzYWE5MTljMWRm
11
- ZmJjZjk4MWZiZjA3MmNiY2UxMjQ4M2YxNTY3ODZjODFmMzM3ZmQ=
9
+ Yjc2OWMzZDQ0NjA1ZDg3ZGMyNTFmZmU3NTE4MDAwODhkZWQwMWVkZTEyYjg3
10
+ NDY4ZjEwYjI0ZmY0YjFhM2VhYjM3ZGE2ZTRhY2ZiNDUyNjNjNWRjYmE5ODQ0
11
+ NjA1M2E0YjA4NzFlZDNjZWQ1ZTRiMzMxMzI5OGE2OGIwY2FkOWY=
12
12
  data.tar.gz: !binary |-
13
- OTIzZmE5ZjEwMTJkOGNjY2U1NGE0ZjBlM2QyMjFmNjZiY2MxMzc4YzNhMDI0
14
- YTVjZDMzMDY3NzI4ZGE4MDUxZmJlOTc4ZWM0Y2Y5ZjRmN2FmZGVlNWZjODNh
15
- YTg2N2VkM2QzOTJhMDg5MjEyNTA1YmM5ZjIxYmY5ZGIxZTIxYWI=
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
- if response.content_type == "application/xml"
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
@@ -1,3 +1,3 @@
1
1
  module StreamSend
2
- VERSION = "1.0.0.rc3"
2
+ VERSION = "1.0.0.rc4"
3
3
  end
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
- <error>Error B</error>
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
- <error>Error A</error>
49
- <error>Error B</error>
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.rc3
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-21 00:00:00.000000000 Z
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