email_direct 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +41 -0
- data/MIT-LICENSE +21 -0
- data/README.md +38 -0
- data/Rakefile +2 -0
- data/email_direct.gemspec +27 -0
- data/examples/email.rb +53 -0
- data/examples/source.rb +26 -0
- data/lib/email_direct.rb +6 -0
- data/lib/email_direct/response.rb +40 -0
- data/lib/email_direct/service_proxy_patch.rb +11 -0
- data/lib/email_direct/soap.rb +891 -0
- data/lib/email_direct/version.rb +3 -0
- data/spec/email_spec.rb +68 -0
- data/spec/response_spec.rb +54 -0
- data/spec/source_spec.rb +58 -0
- data/spec/spec_helper.rb +7 -0
- metadata +166 -0
data/spec/email_spec.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'email_direct/soap'
|
3
|
+
|
4
|
+
describe EmailDirect::SOAP, "#Email_AddWithFields" do
|
5
|
+
|
6
|
+
describe "A valid request without hardcoding parameters (Source,Publications,List,etc) id" do
|
7
|
+
before do
|
8
|
+
@soap = EmailDirect::SOAP.new(ENV['USERNAME'], ENV['PASSWORD'])
|
9
|
+
@soap.debug = true
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should run successfully" do
|
13
|
+
result = @soap.Source_GetAll()
|
14
|
+
result.success?.should == true
|
15
|
+
source_id = result.data["Element"].first["ElementID"]
|
16
|
+
|
17
|
+
# create some publication
|
18
|
+
# result = @soap.Publication_Add("ElementName" => "Publication1", "Description" => "publication 1 info")
|
19
|
+
# result.success?.should == true
|
20
|
+
|
21
|
+
# result = @soap.Publication_Add("ElementName" => "Publication2", "Description" => "publication 2 info")
|
22
|
+
# result.success?.should == true
|
23
|
+
|
24
|
+
result = @soap.Publication_GetAll()
|
25
|
+
result.success?.should == true
|
26
|
+
publication_id1 = result.data["Element"][0]["ElementID"]
|
27
|
+
publication_id2 = result.data["Element"][1]["ElementID"]
|
28
|
+
|
29
|
+
# create some list
|
30
|
+
# result = @soap.List_Add("ElementName" => "List1", "Description" => "List 1 info")
|
31
|
+
# result.success?.should == true
|
32
|
+
|
33
|
+
# result = @soap.List_Add("ElementName" => "List2", "Description" => "List 2 info")
|
34
|
+
# result.success?.should == true
|
35
|
+
|
36
|
+
result = @soap.List_GetAll()
|
37
|
+
result.success?.should == true
|
38
|
+
list_id1 = result.data["Element"][0]["ElementID"]
|
39
|
+
list_id2 = result.data["Element"][1]["ElementID"]
|
40
|
+
|
41
|
+
result = @soap.Email_AddWithFields(
|
42
|
+
"Email" => "someone@test.com",
|
43
|
+
"SourceID" => source_id,
|
44
|
+
"Publications" => [
|
45
|
+
{"int" => publication_id1},
|
46
|
+
{"int" => publication_id2}
|
47
|
+
],
|
48
|
+
"Lists" => [
|
49
|
+
{"int" => list_id1},
|
50
|
+
{"int" => list_id2}
|
51
|
+
],
|
52
|
+
"AutoResponderID" => 0,
|
53
|
+
"Force" => "false",
|
54
|
+
"CustomFields" => [
|
55
|
+
{
|
56
|
+
"FieldName" => "FirstName",
|
57
|
+
"Value" => "Jason"
|
58
|
+
}, {
|
59
|
+
"FieldName" => "LastName",
|
60
|
+
"Value" => "Red"
|
61
|
+
}
|
62
|
+
])
|
63
|
+
result.success?.should == true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'email_direct'
|
3
|
+
|
4
|
+
describe EmailDirect::Response, "#initialize" do
|
5
|
+
|
6
|
+
describe "A valid response from Source_Add" do
|
7
|
+
before do
|
8
|
+
xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body><Source_AddResponse xmlns=\"http://espapi.net/v1/\"><Source_AddResult xmlns=\"http://espapi.net/v1/components/apiresult\"><Code>10</Code><Message>Invalid AccountName or Password.</Message></Source_AddResult></Source_AddResponse></soap:Body></soap:Envelope>"
|
9
|
+
@response = EmailDirect::Response.new(xml)
|
10
|
+
end
|
11
|
+
it "parse correctly" do
|
12
|
+
@response.success?.should == false
|
13
|
+
@response.code.should == 10
|
14
|
+
@response.message.should == "Invalid AccountName or Password."
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "A valid element List with Source_GetAll" do
|
19
|
+
before do
|
20
|
+
xml =<<XML
|
21
|
+
<?xml version="1.0" encoding="utf-8"?>
|
22
|
+
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
23
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
24
|
+
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
25
|
+
<soap:Body>
|
26
|
+
<Source_GetAllResponse xmlns="http://espapi.net/v1/">
|
27
|
+
<Source_GetAllResult>
|
28
|
+
<Element>
|
29
|
+
<ElementID>1</ElementID>
|
30
|
+
<ElementName>string</ElementName>
|
31
|
+
<Description>string</Description>
|
32
|
+
</Element>
|
33
|
+
<Element>
|
34
|
+
<ElementID>2</ElementID>
|
35
|
+
<ElementName>string</ElementName>
|
36
|
+
<Description>string</Description>
|
37
|
+
</Element>
|
38
|
+
</Source_GetAllResult>
|
39
|
+
</Source_GetAllResponse>
|
40
|
+
</soap:Body>
|
41
|
+
</soap:Envelope>
|
42
|
+
XML
|
43
|
+
@response = EmailDirect::Response.new(xml)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "parse correctly" do
|
47
|
+
@response.success?.should == true
|
48
|
+
@response.data.should == {"Element"=>
|
49
|
+
[{"ElementID"=>"1", "Description"=>"string", "ElementName"=>"string"},
|
50
|
+
{"ElementID"=>"2", "Description"=>"string", "ElementName"=>"string"}]}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
data/spec/source_spec.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'email_direct/soap'
|
3
|
+
|
4
|
+
describe EmailDirect::SOAP, "#source" do
|
5
|
+
|
6
|
+
describe "A live EmailDirect Source actions" do
|
7
|
+
before do
|
8
|
+
@soap = EmailDirect::SOAP.new(ENV['USERNAME'], ENV['PASSWORD'])
|
9
|
+
#uncomment this line for full debug info
|
10
|
+
#@soap.debug = true
|
11
|
+
end
|
12
|
+
it "interacts with source" do
|
13
|
+
puts "Element should already exists.."
|
14
|
+
element_name = 'RubyTestSource'
|
15
|
+
description = 'a test source item'
|
16
|
+
result = @soap.Source_Add("ElementName" => element_name, "Description" => element_name)
|
17
|
+
result.success?.should == false
|
18
|
+
result.code.should == 402
|
19
|
+
result.message.should == "A Source with this name already exists."
|
20
|
+
|
21
|
+
puts "creating new source.."
|
22
|
+
element_name = 'RubyTestSource2'
|
23
|
+
description = 'a test source item'
|
24
|
+
result = @soap.Source_Add("ElementName" => element_name, "Description" => element_name)
|
25
|
+
result.success?.should == true
|
26
|
+
|
27
|
+
# puts "find the added item"
|
28
|
+
result = @soap.Source_GetAll()
|
29
|
+
result.success?.should == true
|
30
|
+
|
31
|
+
source = result.data["Element"].find {|e| e["ElementName"] == element_name}
|
32
|
+
source.should_not == nil
|
33
|
+
pp source
|
34
|
+
|
35
|
+
|
36
|
+
puts "we're done with the test, delete the test source"
|
37
|
+
result = @soap.Source_Delete("SourceID" => source["ElementID"])
|
38
|
+
result.success?.should == true
|
39
|
+
result.message.should == ""
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "An invalid authentication error in soap response with Source_GetAll" do
|
44
|
+
before do
|
45
|
+
@soap = EmailDirect::SOAP.new('invalid', 'password')
|
46
|
+
#@soap.debug = true
|
47
|
+
end
|
48
|
+
|
49
|
+
it "fails gracefully" do
|
50
|
+
result = @soap.Source_GetAll()
|
51
|
+
result.success?.should == false
|
52
|
+
result.code.should == 10
|
53
|
+
result.message.should == "Invalid AccountName or Password."
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,166 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: email_direct
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Tucker Connelly
|
14
|
+
- wynst
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2010-10-30 00:00:00 +07:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: serviceproxy
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 21
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
- 2
|
34
|
+
- 1
|
35
|
+
version: 0.2.1
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: nokogiri
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - "="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 5
|
47
|
+
segments:
|
48
|
+
- 1
|
49
|
+
- 4
|
50
|
+
- 1
|
51
|
+
version: 1.4.1
|
52
|
+
type: :runtime
|
53
|
+
version_requirements: *id002
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: builder
|
56
|
+
prerelease: false
|
57
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
hash: 15
|
63
|
+
segments:
|
64
|
+
- 2
|
65
|
+
- 1
|
66
|
+
- 2
|
67
|
+
version: 2.1.2
|
68
|
+
type: :runtime
|
69
|
+
version_requirements: *id003
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: activesupport
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 7
|
79
|
+
segments:
|
80
|
+
- 3
|
81
|
+
- 0
|
82
|
+
- 0
|
83
|
+
version: 3.0.0
|
84
|
+
type: :runtime
|
85
|
+
version_requirements: *id004
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: rspec
|
88
|
+
prerelease: false
|
89
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ~>
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 15
|
95
|
+
segments:
|
96
|
+
- 2
|
97
|
+
- 0
|
98
|
+
- 0
|
99
|
+
version: 2.0.0
|
100
|
+
type: :development
|
101
|
+
version_requirements: *id005
|
102
|
+
description: "To use this gem, initialize with your account name and password. All the SOAP calls (found here: http://dev.emaildirect.com/v1/) are functions of the module with the same function name and parameters (minus the credentials). This gem depends on the serviceproxy and activesupport gems."
|
103
|
+
email:
|
104
|
+
- l4nc3r@comcast.net
|
105
|
+
- wynst.uei@gmail.com
|
106
|
+
executables: []
|
107
|
+
|
108
|
+
extensions: []
|
109
|
+
|
110
|
+
extra_rdoc_files: []
|
111
|
+
|
112
|
+
files:
|
113
|
+
- .gitignore
|
114
|
+
- Gemfile
|
115
|
+
- Gemfile.lock
|
116
|
+
- MIT-LICENSE
|
117
|
+
- README.md
|
118
|
+
- Rakefile
|
119
|
+
- email_direct.gemspec
|
120
|
+
- examples/email.rb
|
121
|
+
- examples/source.rb
|
122
|
+
- lib/email_direct.rb
|
123
|
+
- lib/email_direct/response.rb
|
124
|
+
- lib/email_direct/service_proxy_patch.rb
|
125
|
+
- lib/email_direct/soap.rb
|
126
|
+
- lib/email_direct/version.rb
|
127
|
+
- spec/email_spec.rb
|
128
|
+
- spec/response_spec.rb
|
129
|
+
- spec/source_spec.rb
|
130
|
+
- spec/spec_helper.rb
|
131
|
+
has_rdoc: true
|
132
|
+
homepage: http://rubygems.org/gems/email_direct
|
133
|
+
licenses: []
|
134
|
+
|
135
|
+
post_install_message:
|
136
|
+
rdoc_options: []
|
137
|
+
|
138
|
+
require_paths:
|
139
|
+
- lib
|
140
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
hash: 3
|
146
|
+
segments:
|
147
|
+
- 0
|
148
|
+
version: "0"
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
none: false
|
151
|
+
requirements:
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
hash: 3
|
155
|
+
segments:
|
156
|
+
- 0
|
157
|
+
version: "0"
|
158
|
+
requirements: []
|
159
|
+
|
160
|
+
rubyforge_project: email_direct
|
161
|
+
rubygems_version: 1.3.7
|
162
|
+
signing_key:
|
163
|
+
specification_version: 3
|
164
|
+
summary: Used to connect to the EmailDirect SOAP service.
|
165
|
+
test_files: []
|
166
|
+
|