email_direct 0.0.1
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/.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/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
email_direct (0.0.1)
|
5
|
+
activesupport (~> 3.0.0)
|
6
|
+
builder (~> 2.1.2)
|
7
|
+
nokogiri (= 1.4.1)
|
8
|
+
serviceproxy (~> 0.2.1)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
activesupport (3.0.1)
|
14
|
+
builder (2.1.2)
|
15
|
+
diff-lcs (1.1.2)
|
16
|
+
hpricot (0.8.2)
|
17
|
+
nokogiri (1.4.1)
|
18
|
+
rspec (2.0.1)
|
19
|
+
rspec-core (~> 2.0.1)
|
20
|
+
rspec-expectations (~> 2.0.1)
|
21
|
+
rspec-mocks (~> 2.0.1)
|
22
|
+
rspec-core (2.0.1)
|
23
|
+
rspec-expectations (2.0.1)
|
24
|
+
diff-lcs (>= 1.1.2)
|
25
|
+
rspec-mocks (2.0.1)
|
26
|
+
rspec-core (~> 2.0.1)
|
27
|
+
rspec-expectations (~> 2.0.1)
|
28
|
+
serviceproxy (0.2.1)
|
29
|
+
hpricot
|
30
|
+
nokogiri
|
31
|
+
|
32
|
+
PLATFORMS
|
33
|
+
ruby
|
34
|
+
|
35
|
+
DEPENDENCIES
|
36
|
+
activesupport (~> 3.0.0)
|
37
|
+
builder (~> 2.1.2)
|
38
|
+
email_direct!
|
39
|
+
nokogiri (= 1.4.1)
|
40
|
+
rspec (~> 2.0.0)
|
41
|
+
serviceproxy (~> 0.2.1)
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (c) 2010 Tucker Connelly, wynst
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
data/README.md
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# Email Direct API
|
2
|
+
|
3
|
+
Ruby wrapper for [emaildirect.com](http://emaildirect.com) SOAP service
|
4
|
+
|
5
|
+
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.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
gem install email_direct
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
require 'email_direct'
|
14
|
+
|
15
|
+
username = 'username'
|
16
|
+
password = 'password'
|
17
|
+
|
18
|
+
@soap = EmailDirect::SOAP.new(username, password)
|
19
|
+
#uncomment this line for full debug info
|
20
|
+
#@soap.debug = true
|
21
|
+
|
22
|
+
element_name = 'RubyTestSource2'
|
23
|
+
description = 'a test source item'
|
24
|
+
|
25
|
+
result = @soap.Source_Add("ElementName" => element_name, "Description" => element_name)
|
26
|
+
puts "Error Adding source " unless result.success?
|
27
|
+
|
28
|
+
result = @soap.Source_GetAll()
|
29
|
+
source = result.data["Element"].find {|e| e["ElementName"] == element_name}
|
30
|
+
pp source
|
31
|
+
|
32
|
+
puts "we're done with the test, delete the test source"
|
33
|
+
result = @soap.Source_Delete("SourceID" => source["ElementID"])
|
34
|
+
|
35
|
+
## TODO
|
36
|
+
|
37
|
+
More specs
|
38
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "email_direct/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "email_direct"
|
7
|
+
s.version = EmailDirect::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Tucker Connelly", "wynst"]
|
10
|
+
s.email = ["l4nc3r@comcast.net", "wynst.uei@gmail.com"]
|
11
|
+
s.homepage = "http://rubygems.org/gems/email_direct"
|
12
|
+
s.summary = %q{Used to connect to the EmailDirect SOAP service.}
|
13
|
+
s.description = %q{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.}
|
14
|
+
|
15
|
+
s.rubyforge_project = "email_direct"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
s.add_dependency "serviceproxy", "~> 0.2.1"
|
22
|
+
s.add_dependency "nokogiri", "= 1.4.1"
|
23
|
+
s.add_dependency "builder", "~> 2.1.2"
|
24
|
+
s.add_dependency "activesupport", "~> 3.0.0"
|
25
|
+
s.add_development_dependency "rspec", "~> 2.0.0"
|
26
|
+
end
|
27
|
+
|
data/examples/email.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'email_direct'
|
2
|
+
|
3
|
+
username = 'username'
|
4
|
+
password = 'password'
|
5
|
+
|
6
|
+
@soap = EmailDirect::SOAP.new(username, password)
|
7
|
+
#uncomment this line for full debug info
|
8
|
+
#@soap.debug = true
|
9
|
+
|
10
|
+
result = @soap.Source_GetAll()
|
11
|
+
source_id = result.data["Element"].first["ElementID"]
|
12
|
+
|
13
|
+
# create some publication
|
14
|
+
@soap.Publication_Add("ElementName" => "Publication1", "Description" => "publication 1 info")
|
15
|
+
@soap.Publication_Add("ElementName" => "Publication2", "Description" => "publication 2 info")
|
16
|
+
|
17
|
+
result = @soap.Publication_GetAll()
|
18
|
+
publication_id1 = result.data["Element"][0]["ElementID"]
|
19
|
+
publication_id2 = result.data["Element"][1]["ElementID"]
|
20
|
+
|
21
|
+
# create some list
|
22
|
+
result = @soap.List_Add("ElementName" => "List1", "Description" => "List 1 info")
|
23
|
+
result = @soap.List_Add("ElementName" => "List2", "Description" => "List 2 info")
|
24
|
+
|
25
|
+
result = @soap.List_GetAll()
|
26
|
+
list_id1 = result.data["Element"][0]["ElementID"]
|
27
|
+
list_id2 = result.data["Element"][1]["ElementID"]
|
28
|
+
|
29
|
+
result = @soap.Email_AddWithFields(
|
30
|
+
"Email" => "someone@test.com",
|
31
|
+
"SourceID" => source_id,
|
32
|
+
"Publications" => [
|
33
|
+
{"int" => publication_id1},
|
34
|
+
{"int" => publication_id2}
|
35
|
+
],
|
36
|
+
"Lists" => [
|
37
|
+
{"int" => list_id1},
|
38
|
+
{"int" => list_id2}
|
39
|
+
],
|
40
|
+
"AutoResponderID" => 0,
|
41
|
+
"Force" => "false",
|
42
|
+
"CustomFields" => [
|
43
|
+
{
|
44
|
+
"FieldName" => "FirstName",
|
45
|
+
"Value" => "Jason"
|
46
|
+
}, {
|
47
|
+
"FieldName" => "LastName",
|
48
|
+
"Value" => "Red"
|
49
|
+
}
|
50
|
+
])
|
51
|
+
|
52
|
+
puts result.message
|
53
|
+
|
data/examples/source.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'email_direct'
|
2
|
+
|
3
|
+
username = 'username'
|
4
|
+
password = 'password'
|
5
|
+
|
6
|
+
@soap = EmailDirect::SOAP.new(username, password)
|
7
|
+
#uncomment this line for full debug info
|
8
|
+
#@soap.debug = true
|
9
|
+
|
10
|
+
puts "creating new source.."
|
11
|
+
|
12
|
+
element_name = 'RubyTestSource2'
|
13
|
+
description = 'a test source item'
|
14
|
+
|
15
|
+
result = @soap.Source_Add("ElementName" => element_name, "Description" => element_name)
|
16
|
+
puts result.message
|
17
|
+
|
18
|
+
result = @soap.Source_GetAll()
|
19
|
+
|
20
|
+
source = result.data["Element"].find {|e| e["ElementName"] == element_name}
|
21
|
+
pp source
|
22
|
+
|
23
|
+
|
24
|
+
puts "we're done with the test, delete the test source"
|
25
|
+
result = @soap.Source_Delete("SourceID" => source["ElementID"])
|
26
|
+
|
data/lib/email_direct.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
module EmailDirect
|
2
|
+
class Response
|
3
|
+
attr_reader :xml, :code, :message, :data
|
4
|
+
|
5
|
+
def initialize(xml)
|
6
|
+
@xml = xml
|
7
|
+
parse_response!
|
8
|
+
end
|
9
|
+
|
10
|
+
def success?
|
11
|
+
@code == 0
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
def parse_response!
|
16
|
+
doc = Nokogiri::XML(@xml)
|
17
|
+
elem = doc.xpath("//*[contains(name(),'Result')]", 'xpath' => 'http://espapi.net/v1/components/apiresult')
|
18
|
+
if elem.length == 1
|
19
|
+
#bug in Nokogiri?
|
20
|
+
#@code = elem.css("Code").first.inner_text.to_i
|
21
|
+
#@message = elem.css("Message").first.inner_text
|
22
|
+
found = 0
|
23
|
+
elem.children.each do |node|
|
24
|
+
case node.name
|
25
|
+
when 'Code' then found+=1; @code = node.inner_text.to_i;
|
26
|
+
when 'Message' then found+=1; @message = node.inner_text;
|
27
|
+
end
|
28
|
+
end
|
29
|
+
if found != 2
|
30
|
+
@code = 0
|
31
|
+
@data = Hash.from_xml(elem.first.to_xml)
|
32
|
+
#ignore wrapping element (eg. Source_GetAllResult)
|
33
|
+
@data = @data[@data.keys.first]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module EmailDirect
|
2
|
+
module ServiceProxyPatch
|
3
|
+
# same as original, but don't call .target! on custom builder
|
4
|
+
def build_request(method, options)
|
5
|
+
builder = underscore("build_#{method}")
|
6
|
+
self.respond_to?(builder) ? self.send(builder, options) :
|
7
|
+
soap_envelope(options).target!
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
@@ -0,0 +1,891 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'service_proxy/base'
|
3
|
+
require 'email_direct/service_proxy_patch'
|
4
|
+
require 'active_support/core_ext/hash/conversions'
|
5
|
+
ActiveSupport::XmlMini.backend = 'Nokogiri'
|
6
|
+
require 'email_direct/response'
|
7
|
+
|
8
|
+
module EmailDirect
|
9
|
+
class SOAP < ServiceProxy::Base
|
10
|
+
include ServiceProxyPatch
|
11
|
+
attr_accessor :credentials
|
12
|
+
|
13
|
+
def initialize(accountname, password, options={})
|
14
|
+
super(options["EndPoint"] || "http://espapi.net/v1/api.asmx?WSDL")
|
15
|
+
@credentials = {}
|
16
|
+
@credentials["AccountName"] = accountname
|
17
|
+
@credentials["Password"] = password
|
18
|
+
@credentials["Enc"] = options["Enc"] || options[:enc]
|
19
|
+
end
|
20
|
+
|
21
|
+
def build_account_get_active_emails(options)
|
22
|
+
email_direct_envelope(options) do |xml|
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def parse_account_get_active_emails(response)
|
27
|
+
::EmailDirect::Response.new(response.body)
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_account_get_active_emails_simple(options)
|
31
|
+
email_direct_envelope(options) do |xml|
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def parse_account_get_active_emails_simple(response)
|
36
|
+
::EmailDirect::Response.new(response.body)
|
37
|
+
end
|
38
|
+
|
39
|
+
def build_account_get_complaints(options)
|
40
|
+
email_direct_envelope(options) do |xml|
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def parse_account_get_complaints(response)
|
45
|
+
::EmailDirect::Response.new(response.body)
|
46
|
+
end
|
47
|
+
|
48
|
+
def build_account_get_complaints_simple(options)
|
49
|
+
email_direct_envelope(options) do |xml|
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def parse_account_get_complaints_simple(response)
|
54
|
+
::EmailDirect::Response.new(response.body)
|
55
|
+
end
|
56
|
+
|
57
|
+
def build_account_get_database_fields(options)
|
58
|
+
email_direct_envelope(options) do |xml|
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def parse_account_get_database_fields(response)
|
63
|
+
::EmailDirect::Response.new(response.body)
|
64
|
+
end
|
65
|
+
|
66
|
+
def build_account_get_global_removes(options)
|
67
|
+
email_direct_envelope(options) do |xml|
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def parse_account_get_global_removes(response)
|
72
|
+
::EmailDirect::Response.new(response.body)
|
73
|
+
end
|
74
|
+
|
75
|
+
def build_account_get_global_removes_simple(options)
|
76
|
+
email_direct_envelope(options) do |xml|
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def parse_account_get_global_removes_simple(response)
|
81
|
+
::EmailDirect::Response.new(response.body)
|
82
|
+
end
|
83
|
+
|
84
|
+
def build_account_get_hard_bounces(options)
|
85
|
+
email_direct_envelope(options) do |xml|
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def parse_account_get_hard_bounces(response)
|
90
|
+
::EmailDirect::Response.new(response.body)
|
91
|
+
end
|
92
|
+
|
93
|
+
def build_account_get_hard_bounces_simple(options)
|
94
|
+
email_direct_envelope(options) do |xml|
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def parse_account_get_hard_bounces_simple(response)
|
99
|
+
::EmailDirect::Response.new(response.body)
|
100
|
+
end
|
101
|
+
|
102
|
+
def build_account_get_ip_information(options)
|
103
|
+
email_direct_envelope(options) do |xml|
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def parse_account_get_ip_information(response)
|
108
|
+
::EmailDirect::Response.new(response.body)
|
109
|
+
end
|
110
|
+
|
111
|
+
def build_account_set_email_limit(options)
|
112
|
+
email_direct_envelope(options) do |xml|
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def parse_account_set_email_limit(response)
|
117
|
+
::EmailDirect::Response.new(response.body)
|
118
|
+
end
|
119
|
+
|
120
|
+
def build_campaign_add(options)
|
121
|
+
email_direct_envelope(options) do |xml|
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def parse_campaign_add(response)
|
126
|
+
::EmailDirect::Response.new(response.body)
|
127
|
+
end
|
128
|
+
|
129
|
+
def build_campaign_copy(options)
|
130
|
+
email_direct_envelope(options) do |xml|
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def parse_campaign_copy(response)
|
135
|
+
::EmailDirect::Response.new(response.body)
|
136
|
+
end
|
137
|
+
|
138
|
+
def build_campaign_get_clicks(options)
|
139
|
+
email_direct_envelope(options) do |xml|
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def parse_campaign_get_clicks(response)
|
144
|
+
::EmailDirect::Response.new(response.body)
|
145
|
+
end
|
146
|
+
|
147
|
+
def build_campaign_get_clicks_for_link(options)
|
148
|
+
email_direct_envelope(options) do |xml|
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def parse_campaign_get_clicks_for_link(response)
|
153
|
+
::EmailDirect::Response.new(response.body)
|
154
|
+
end
|
155
|
+
|
156
|
+
def build_campaign_get_complaints(options)
|
157
|
+
email_direct_envelope(options) do |xml|
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def parse_campaign_get_complaints(response)
|
162
|
+
::EmailDirect::Response.new(response.body)
|
163
|
+
end
|
164
|
+
|
165
|
+
def build_campaign_get_hard_bounces(options)
|
166
|
+
email_direct_envelope(options) do |xml|
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
def parse_campaign_get_hard_bounces(response)
|
171
|
+
::EmailDirect::Response.new(response.body)
|
172
|
+
end
|
173
|
+
|
174
|
+
def build_campaign_get_list_drafts(options)
|
175
|
+
email_direct_envelope(options) do |xml|
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
def parse_campaign_get_list_drafts(response)
|
180
|
+
::EmailDirect::Response.new(response.body)
|
181
|
+
end
|
182
|
+
|
183
|
+
def build_campaign_get_list_scheduled(options)
|
184
|
+
email_direct_envelope(options) do |xml|
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
def parse_campaign_get_list_scheduled(response)
|
189
|
+
::EmailDirect::Response.new(response.body)
|
190
|
+
end
|
191
|
+
|
192
|
+
def build_campaign_get_list_sent(options)
|
193
|
+
email_direct_envelope(options) do |xml|
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
def parse_campaign_get_list_sent(response)
|
198
|
+
::EmailDirect::Response.new(response.body)
|
199
|
+
end
|
200
|
+
|
201
|
+
def build_campaign_get_opens(options)
|
202
|
+
email_direct_envelope(options) do |xml|
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
def parse_campaign_get_opens(response)
|
207
|
+
::EmailDirect::Response.new(response.body)
|
208
|
+
end
|
209
|
+
|
210
|
+
def build_campaign_get_recipients(options)
|
211
|
+
email_direct_envelope(options) do |xml|
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
def parse_campaign_get_recipients(response)
|
216
|
+
::EmailDirect::Response.new(response.body)
|
217
|
+
end
|
218
|
+
|
219
|
+
def build_campaign_get_removes(options)
|
220
|
+
email_direct_envelope(options) do |xml|
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
def parse_campaign_get_removes(response)
|
225
|
+
::EmailDirect::Response.new(response.body)
|
226
|
+
end
|
227
|
+
|
228
|
+
def build_campaign_get_summary(options)
|
229
|
+
email_direct_envelope(options) do |xml|
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
def parse_campaign_get_summary(response)
|
234
|
+
::EmailDirect::Response.new(response.body)
|
235
|
+
end
|
236
|
+
|
237
|
+
def build_campaign_schedule(options)
|
238
|
+
email_direct_envelope(options) do |xml|
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
def parse_campaign_schedule(response)
|
243
|
+
::EmailDirect::Response.new(response.body)
|
244
|
+
end
|
245
|
+
|
246
|
+
def build_creative_add(options)
|
247
|
+
email_direct_envelope(options) do |xml|
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
def parse_creative_add(response)
|
252
|
+
::EmailDirect::Response.new(response.body)
|
253
|
+
end
|
254
|
+
|
255
|
+
def build_creative_create_folder(options)
|
256
|
+
email_direct_envelope(options) do |xml|
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
def parse_creative_create_folder(response)
|
261
|
+
::EmailDirect::Response.new(response.body)
|
262
|
+
end
|
263
|
+
|
264
|
+
def build_creative_get_creatives_for_folder(options)
|
265
|
+
email_direct_envelope(options) do |xml|
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
def parse_creative_get_creatives_for_folder(response)
|
270
|
+
::EmailDirect::Response.new(response.body)
|
271
|
+
end
|
272
|
+
|
273
|
+
def build_creative_get_folders(options)
|
274
|
+
email_direct_envelope(options) do |xml|
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
def parse_creative_get_folders(response)
|
279
|
+
::EmailDirect::Response.new(response.body)
|
280
|
+
end
|
281
|
+
|
282
|
+
def build_email_add(options)
|
283
|
+
email_direct_envelope(options) do |xml|
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
def parse_email_add(response)
|
288
|
+
::EmailDirect::Response.new(response.body)
|
289
|
+
end
|
290
|
+
|
291
|
+
def build_email_add_with_fields(options)
|
292
|
+
email_direct_envelope(options) do |xml|
|
293
|
+
#adjustments for activesupport list hash to EmailDirect specific xml
|
294
|
+
xml.gsub!("<List>\n","")
|
295
|
+
xml.gsub!("</List>\n","")
|
296
|
+
xml.gsub!("<Publication>\n","")
|
297
|
+
xml.gsub!("</Publication>\n","")
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
def parse_email_add_with_fields(response)
|
302
|
+
::EmailDirect::Response.new(response.body)
|
303
|
+
end
|
304
|
+
|
305
|
+
def build_email_add_simple(options)
|
306
|
+
email_direct_envelope(options) do |xml|
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
def parse_email_add_simple(response)
|
311
|
+
::EmailDirect::Response.new(response.body)
|
312
|
+
end
|
313
|
+
|
314
|
+
def build_email_change(options)
|
315
|
+
email_direct_envelope(options) do |xml|
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
319
|
+
def parse_email_change(response)
|
320
|
+
::EmailDirect::Response.new(response.body)
|
321
|
+
end
|
322
|
+
|
323
|
+
def build_email_delete(options)
|
324
|
+
email_direct_envelope(options) do |xml|
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
def parse_email_delete(response)
|
329
|
+
::EmailDirect::Response.new(response.body)
|
330
|
+
end
|
331
|
+
|
332
|
+
def build_email_delete_simple(options)
|
333
|
+
email_direct_envelope(options) do |xml|
|
334
|
+
end
|
335
|
+
end
|
336
|
+
|
337
|
+
def parse_email_delete_simple(response)
|
338
|
+
::EmailDirect::Response.new(response.body)
|
339
|
+
end
|
340
|
+
|
341
|
+
def build_email_get_history(options)
|
342
|
+
email_direct_envelope(options) do |xml|
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
def parse_email_get_history(response)
|
347
|
+
::EmailDirect::Response.new(response.body)
|
348
|
+
end
|
349
|
+
|
350
|
+
def build_email_get_properties(options)
|
351
|
+
email_direct_envelope(options) do |xml|
|
352
|
+
end
|
353
|
+
end
|
354
|
+
|
355
|
+
def parse_email_get_properties(response)
|
356
|
+
::EmailDirect::Response.new(response.body)
|
357
|
+
end
|
358
|
+
|
359
|
+
def build_email_remove(options)
|
360
|
+
email_direct_envelope(options) do |xml|
|
361
|
+
end
|
362
|
+
end
|
363
|
+
|
364
|
+
def parse_email_remove(response)
|
365
|
+
::EmailDirect::Response.new(response.body)
|
366
|
+
end
|
367
|
+
|
368
|
+
def build_email_remove_simple(options)
|
369
|
+
email_direct_envelope(options) do |xml|
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
def parse_email_remove_simple(response)
|
374
|
+
::EmailDirect::Response.new(response.body)
|
375
|
+
end
|
376
|
+
|
377
|
+
def build_email_update(options)
|
378
|
+
email_direct_envelope(options) do |xml|
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
382
|
+
def parse_email_update(response)
|
383
|
+
::EmailDirect::Response.new(response.body)
|
384
|
+
end
|
385
|
+
|
386
|
+
def build_filter_get_all(options)
|
387
|
+
email_direct_envelope(options) do |xml|
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
def parse_filter_get_all(response)
|
392
|
+
::EmailDirect::Response.new(response.body)
|
393
|
+
end
|
394
|
+
|
395
|
+
def build_filter_get_subscribers(options)
|
396
|
+
email_direct_envelope(options) do |xml|
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
def parse_filter_get_subscribers(response)
|
401
|
+
::EmailDirect::Response.new(response.body)
|
402
|
+
end
|
403
|
+
|
404
|
+
def build_filter_get_subscribers_simple(options)
|
405
|
+
email_direct_envelope(options) do |xml|
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
409
|
+
def parse_filter_get_subscribers_simple(response)
|
410
|
+
::EmailDirect::Response.new(response.body)
|
411
|
+
end
|
412
|
+
|
413
|
+
def build_list_add(options)
|
414
|
+
email_direct_envelope(options) do |xml|
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
418
|
+
def parse_list_add(response)
|
419
|
+
::EmailDirect::Response.new(response.body)
|
420
|
+
end
|
421
|
+
|
422
|
+
def build_list_delete(options)
|
423
|
+
email_direct_envelope(options) do |xml|
|
424
|
+
end
|
425
|
+
end
|
426
|
+
|
427
|
+
def parse_list_delete(response)
|
428
|
+
::EmailDirect::Response.new(response.body)
|
429
|
+
end
|
430
|
+
|
431
|
+
def build_list_get_all(options)
|
432
|
+
email_direct_envelope(options) do |xml|
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
436
|
+
def parse_list_get_all(response)
|
437
|
+
::EmailDirect::Response.new(response.body)
|
438
|
+
end
|
439
|
+
|
440
|
+
def build_list_get_members(options)
|
441
|
+
email_direct_envelope(options) do |xml|
|
442
|
+
end
|
443
|
+
end
|
444
|
+
|
445
|
+
def parse_list_get_members(response)
|
446
|
+
::EmailDirect::Response.new(response.body)
|
447
|
+
end
|
448
|
+
|
449
|
+
def build_private_label_create_account(options)
|
450
|
+
email_direct_envelope(options) do |xml|
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
def parse_private_label_create_account(response)
|
455
|
+
::EmailDirect::Response.new(response.body)
|
456
|
+
end
|
457
|
+
|
458
|
+
def build_private_label_get_child_accounts(options)
|
459
|
+
email_direct_envelope(options) do |xml|
|
460
|
+
end
|
461
|
+
end
|
462
|
+
|
463
|
+
def parse_private_label_get_child_accounts(response)
|
464
|
+
::EmailDirect::Response.new(response.body)
|
465
|
+
end
|
466
|
+
|
467
|
+
def build_private_label_set_api_password(options)
|
468
|
+
email_direct_envelope(options) do |xml|
|
469
|
+
end
|
470
|
+
end
|
471
|
+
|
472
|
+
def parse_private_label_set_api_password(response)
|
473
|
+
::EmailDirect::Response.new(response.body)
|
474
|
+
end
|
475
|
+
|
476
|
+
def build_publication_add(options)
|
477
|
+
email_direct_envelope(options) do |xml|
|
478
|
+
end
|
479
|
+
end
|
480
|
+
|
481
|
+
def parse_publication_add(response)
|
482
|
+
::EmailDirect::Response.new(response.body)
|
483
|
+
end
|
484
|
+
|
485
|
+
def build_publication_delete(options)
|
486
|
+
email_direct_envelope(options) do |xml|
|
487
|
+
end
|
488
|
+
end
|
489
|
+
|
490
|
+
def parse_publication_delete(response)
|
491
|
+
::EmailDirect::Response.new(response.body)
|
492
|
+
end
|
493
|
+
|
494
|
+
def build_publication_get_all(options)
|
495
|
+
email_direct_envelope(options) do |xml|
|
496
|
+
end
|
497
|
+
end
|
498
|
+
|
499
|
+
def parse_publication_get_all(response)
|
500
|
+
::EmailDirect::Response.new(response.body)
|
501
|
+
end
|
502
|
+
|
503
|
+
def build_publication_get_subscribers(options)
|
504
|
+
email_direct_envelope(options) do |xml|
|
505
|
+
end
|
506
|
+
end
|
507
|
+
|
508
|
+
def parse_publication_get_subscribers(response)
|
509
|
+
::EmailDirect::Response.new(response.body)
|
510
|
+
end
|
511
|
+
|
512
|
+
def build_publication_get_unsubscribes(options)
|
513
|
+
email_direct_envelope(options) do |xml|
|
514
|
+
end
|
515
|
+
end
|
516
|
+
|
517
|
+
def parse_publication_get_unsubscribes(response)
|
518
|
+
::EmailDirect::Response.new(response.body)
|
519
|
+
end
|
520
|
+
|
521
|
+
def build_relay_send_create_category(options)
|
522
|
+
email_direct_envelope(options) do |xml|
|
523
|
+
end
|
524
|
+
end
|
525
|
+
|
526
|
+
def parse_relay_send_create_category(response)
|
527
|
+
::EmailDirect::Response.new(response.body)
|
528
|
+
end
|
529
|
+
|
530
|
+
def build_relay_send_get_categories(options)
|
531
|
+
email_direct_envelope(options) do |xml|
|
532
|
+
end
|
533
|
+
end
|
534
|
+
|
535
|
+
def parse_relay_send_get_categories(response)
|
536
|
+
::EmailDirect::Response.new(response.body)
|
537
|
+
end
|
538
|
+
|
539
|
+
def build_relay_send_get_category_stats(options)
|
540
|
+
email_direct_envelope(options) do |xml|
|
541
|
+
end
|
542
|
+
end
|
543
|
+
|
544
|
+
def parse_relay_send_get_category_stats(response)
|
545
|
+
::EmailDirect::Response.new(response.body)
|
546
|
+
end
|
547
|
+
|
548
|
+
def build_relay_send_get_category_stats_for_tags(options)
|
549
|
+
email_direct_envelope(options) do |xml|
|
550
|
+
end
|
551
|
+
end
|
552
|
+
|
553
|
+
def parse_relay_send_get_category_stats_for_tags(response)
|
554
|
+
::EmailDirect::Response.new(response.body)
|
555
|
+
end
|
556
|
+
|
557
|
+
def build_relay_send_get_details_for_receipt(options)
|
558
|
+
email_direct_envelope(options) do |xml|
|
559
|
+
end
|
560
|
+
end
|
561
|
+
|
562
|
+
def parse_relay_send_get_details_for_receipt(response)
|
563
|
+
::EmailDirect::Response.new(response.body)
|
564
|
+
end
|
565
|
+
|
566
|
+
def build_relay_send_get_summary_for_receipts(options)
|
567
|
+
email_direct_envelope(options) do |xml|
|
568
|
+
end
|
569
|
+
end
|
570
|
+
|
571
|
+
def parse_relay_send_get_summary_for_receipts(response)
|
572
|
+
::EmailDirect::Response.new(response.body)
|
573
|
+
end
|
574
|
+
|
575
|
+
def build_relay_send_send_email(options)
|
576
|
+
email_direct_envelope(options) do |xml|
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
580
|
+
def parse_relay_send_send_email(response)
|
581
|
+
::EmailDirect::Response.new(response.body)
|
582
|
+
end
|
583
|
+
|
584
|
+
def build_relay_send_send_email_vars(options)
|
585
|
+
email_direct_envelope(options) do |xml|
|
586
|
+
end
|
587
|
+
end
|
588
|
+
|
589
|
+
def parse_relay_send_send_email_vars(response)
|
590
|
+
::EmailDirect::Response.new(response.body)
|
591
|
+
end
|
592
|
+
|
593
|
+
def build_short_url_create(options)
|
594
|
+
email_direct_envelope(options) do |xml|
|
595
|
+
end
|
596
|
+
end
|
597
|
+
|
598
|
+
def parse_short_url_create(response)
|
599
|
+
::EmailDirect::Response.new(response.body)
|
600
|
+
end
|
601
|
+
|
602
|
+
def build_short_url_get_stats(options)
|
603
|
+
email_direct_envelope(options) do |xml|
|
604
|
+
end
|
605
|
+
end
|
606
|
+
|
607
|
+
def parse_short_url_get_stats(response)
|
608
|
+
::EmailDirect::Response.new(response.body)
|
609
|
+
end
|
610
|
+
|
611
|
+
def build_short_url_update_link(options)
|
612
|
+
email_direct_envelope(options) do |xml|
|
613
|
+
end
|
614
|
+
end
|
615
|
+
|
616
|
+
def parse_short_url_update_link(response)
|
617
|
+
::EmailDirect::Response.new(response.body)
|
618
|
+
end
|
619
|
+
|
620
|
+
def build_source_add(options)
|
621
|
+
email_direct_envelope(options) do |xml|
|
622
|
+
end
|
623
|
+
end
|
624
|
+
|
625
|
+
def parse_source_add(response)
|
626
|
+
::EmailDirect::Response.new(response.body)
|
627
|
+
end
|
628
|
+
|
629
|
+
def build_source_delete(options)
|
630
|
+
email_direct_envelope(options) do |xml|
|
631
|
+
end
|
632
|
+
end
|
633
|
+
|
634
|
+
def parse_source_delete(response)
|
635
|
+
::EmailDirect::Response.new(response.body)
|
636
|
+
end
|
637
|
+
|
638
|
+
def build_source_get_all(options)
|
639
|
+
email_direct_envelope(options) do |xml|
|
640
|
+
end
|
641
|
+
end
|
642
|
+
|
643
|
+
def parse_source_get_all(response)
|
644
|
+
::EmailDirect::Response.new(response.body)
|
645
|
+
end
|
646
|
+
|
647
|
+
def build_stats_day_of_week(options)
|
648
|
+
email_direct_envelope(options) do |xml|
|
649
|
+
end
|
650
|
+
end
|
651
|
+
|
652
|
+
def parse_stats_day_of_week(response)
|
653
|
+
::EmailDirect::Response.new(response.body)
|
654
|
+
end
|
655
|
+
|
656
|
+
def build_stats_domain_over_time(options)
|
657
|
+
email_direct_envelope(options) do |xml|
|
658
|
+
end
|
659
|
+
end
|
660
|
+
|
661
|
+
def parse_stats_domain_over_time(response)
|
662
|
+
::EmailDirect::Response.new(response.body)
|
663
|
+
end
|
664
|
+
|
665
|
+
def build_stats_hourly(options)
|
666
|
+
email_direct_envelope(options) do |xml|
|
667
|
+
end
|
668
|
+
end
|
669
|
+
|
670
|
+
def parse_stats_hourly(response)
|
671
|
+
::EmailDirect::Response.new(response.body)
|
672
|
+
end
|
673
|
+
|
674
|
+
def build_stats_over_time(options)
|
675
|
+
email_direct_envelope(options) do |xml|
|
676
|
+
end
|
677
|
+
end
|
678
|
+
|
679
|
+
def parse_stats_over_time(response)
|
680
|
+
::EmailDirect::Response.new(response.body)
|
681
|
+
end
|
682
|
+
|
683
|
+
def build_stats_source_over_time(options)
|
684
|
+
email_direct_envelope(options) do |xml|
|
685
|
+
end
|
686
|
+
end
|
687
|
+
|
688
|
+
def parse_stats_source_over_time(response)
|
689
|
+
::EmailDirect::Response.new(response.body)
|
690
|
+
end
|
691
|
+
|
692
|
+
def build_stats_summary(options)
|
693
|
+
email_direct_envelope(options) do |xml|
|
694
|
+
end
|
695
|
+
end
|
696
|
+
|
697
|
+
def parse_stats_summary(response)
|
698
|
+
::EmailDirect::Response.new(response.body)
|
699
|
+
end
|
700
|
+
|
701
|
+
def build_stats_top_domains(options)
|
702
|
+
email_direct_envelope(options) do |xml|
|
703
|
+
end
|
704
|
+
end
|
705
|
+
|
706
|
+
def parse_stats_top_domains(response)
|
707
|
+
::EmailDirect::Response.new(response.body)
|
708
|
+
end
|
709
|
+
|
710
|
+
def build_stats_top_sources(options)
|
711
|
+
email_direct_envelope(options) do |xml|
|
712
|
+
end
|
713
|
+
end
|
714
|
+
|
715
|
+
def parse_stats_top_sources(response)
|
716
|
+
::EmailDirect::Response.new(response.body)
|
717
|
+
end
|
718
|
+
|
719
|
+
def build_suppression_list_add(options)
|
720
|
+
email_direct_envelope(options) do |xml|
|
721
|
+
end
|
722
|
+
end
|
723
|
+
|
724
|
+
def parse_suppression_list_add(response)
|
725
|
+
::EmailDirect::Response.new(response.body)
|
726
|
+
end
|
727
|
+
|
728
|
+
def build_suppression_list_add_domains(options)
|
729
|
+
email_direct_envelope(options) do |xml|
|
730
|
+
end
|
731
|
+
end
|
732
|
+
|
733
|
+
def parse_suppression_list_add_domains(response)
|
734
|
+
::EmailDirect::Response.new(response.body)
|
735
|
+
end
|
736
|
+
|
737
|
+
def build_suppression_list_add_emails(options)
|
738
|
+
email_direct_envelope(options) do |xml|
|
739
|
+
end
|
740
|
+
end
|
741
|
+
|
742
|
+
def parse_suppression_list_add_emails(response)
|
743
|
+
::EmailDirect::Response.new(response.body)
|
744
|
+
end
|
745
|
+
|
746
|
+
def build_suppression_list_delete(options)
|
747
|
+
email_direct_envelope(options) do |xml|
|
748
|
+
end
|
749
|
+
end
|
750
|
+
|
751
|
+
def parse_suppression_list_delete(response)
|
752
|
+
::EmailDirect::Response.new(response.body)
|
753
|
+
end
|
754
|
+
|
755
|
+
def build_suppression_list_get_all(options)
|
756
|
+
email_direct_envelope(options) do |xml|
|
757
|
+
end
|
758
|
+
end
|
759
|
+
|
760
|
+
def parse_suppression_list_get_all(response)
|
761
|
+
::EmailDirect::Response.new(response.body)
|
762
|
+
end
|
763
|
+
|
764
|
+
def build_suppression_list_get_members_simple(options)
|
765
|
+
email_direct_envelope(options) do |xml|
|
766
|
+
end
|
767
|
+
end
|
768
|
+
|
769
|
+
def parse_suppression_list_get_members_simple(response)
|
770
|
+
::EmailDirect::Response.new(response.body)
|
771
|
+
end
|
772
|
+
|
773
|
+
def build_workflow_add_existing_emails(options)
|
774
|
+
email_direct_envelope(options) do |xml|
|
775
|
+
end
|
776
|
+
end
|
777
|
+
|
778
|
+
def parse_workflow_add_existing_emails(response)
|
779
|
+
::EmailDirect::Response.new(response.body)
|
780
|
+
end
|
781
|
+
|
782
|
+
def build_workflow_add_to_workflows(options)
|
783
|
+
email_direct_envelope(options) do |xml|
|
784
|
+
end
|
785
|
+
end
|
786
|
+
|
787
|
+
def parse_workflow_add_to_workflows(response)
|
788
|
+
::EmailDirect::Response.new(response.body)
|
789
|
+
end
|
790
|
+
|
791
|
+
def build_workflow_get_all(options)
|
792
|
+
email_direct_envelope(options) do |xml|
|
793
|
+
end
|
794
|
+
end
|
795
|
+
|
796
|
+
def parse_workflow_get_all(response)
|
797
|
+
::EmailDirect::Response.new(response.body)
|
798
|
+
end
|
799
|
+
|
800
|
+
def build_workflow_get_send_nodes(options)
|
801
|
+
email_direct_envelope(options) do |xml|
|
802
|
+
end
|
803
|
+
end
|
804
|
+
|
805
|
+
def parse_workflow_get_send_nodes(response)
|
806
|
+
::EmailDirect::Response.new(response.body)
|
807
|
+
end
|
808
|
+
|
809
|
+
def build_workflow_get_stats(options)
|
810
|
+
email_direct_envelope(options) do |xml|
|
811
|
+
end
|
812
|
+
end
|
813
|
+
|
814
|
+
def parse_workflow_get_stats(response)
|
815
|
+
::EmailDirect::Response.new(response.body)
|
816
|
+
end
|
817
|
+
|
818
|
+
def build_workflow_get_stats_for_send_node(options)
|
819
|
+
email_direct_envelope(options) do |xml|
|
820
|
+
end
|
821
|
+
end
|
822
|
+
|
823
|
+
def parse_workflow_get_stats_for_send_node(response)
|
824
|
+
::EmailDirect::Response.new(response.body)
|
825
|
+
end
|
826
|
+
|
827
|
+
def build_workflow_remove_emails(options)
|
828
|
+
email_direct_envelope(options) do |xml|
|
829
|
+
end
|
830
|
+
end
|
831
|
+
|
832
|
+
def parse_workflow_remove_emails(response)
|
833
|
+
::EmailDirect::Response.new(response.body)
|
834
|
+
end
|
835
|
+
|
836
|
+
def build_workflow_start(options)
|
837
|
+
email_direct_envelope(options) do |xml|
|
838
|
+
end
|
839
|
+
end
|
840
|
+
|
841
|
+
def parse_workflow_start(response)
|
842
|
+
::EmailDirect::Response.new(response.body)
|
843
|
+
end
|
844
|
+
|
845
|
+
def build_workflow_stop(options)
|
846
|
+
email_direct_envelope(options) do |xml|
|
847
|
+
end
|
848
|
+
end
|
849
|
+
|
850
|
+
def parse_workflow_stop(response)
|
851
|
+
::EmailDirect::Response.new(response.body)
|
852
|
+
end
|
853
|
+
|
854
|
+
protected
|
855
|
+
def add_credentials!(xml)
|
856
|
+
xml.Creds(:xmlns=>"http://espapi.net/v1/components/credentials") do |cred|
|
857
|
+
cred.AccountName(@credentials["AccountName"])
|
858
|
+
cred.Password(@credentials["Password"])
|
859
|
+
cred.Enc(@credentials["Enc"])
|
860
|
+
end
|
861
|
+
end
|
862
|
+
|
863
|
+
# same as ServiceProxy email_direct_envelope method, except:
|
864
|
+
# 1) inject options hash directly
|
865
|
+
# 2) yields the raw xml (for incompatible activesupport style of array to xml)
|
866
|
+
# a hash with {"Lists" => [{:int => 1}, {:int => 2}]} will yields xml <Lists><List><int>1</int><List><int>2</int></Lists>
|
867
|
+
# 3) replace strange </ai> in generated xml
|
868
|
+
def email_direct_envelope(options, &block)
|
869
|
+
xsd = 'http://www.w3.org/2001/XMLSchema'
|
870
|
+
env = 'http://schemas.xmlsoap.org/soap/envelope/'
|
871
|
+
xsi = 'http://www.w3.org/2001/XMLSchema-instance'
|
872
|
+
data = options.clone
|
873
|
+
data.delete(:method)
|
874
|
+
data = data.to_xml(:skip_instruct => true, :skip_types => true).gsub("<hash>\n",'').gsub("</hash>\n",'')
|
875
|
+
xml = Builder::XmlMarkup.new
|
876
|
+
xml.env(:Envelope, 'xmlns:xsd' => xsd, 'xmlns:env' => env, 'xmlns:xsi' => xsi) do
|
877
|
+
xml.env(:Body) do
|
878
|
+
xml.__send__(options[:method].to_sym, 'xmlns' => self.target_namespace) do
|
879
|
+
add_credentials!(xml)
|
880
|
+
xml << data
|
881
|
+
end
|
882
|
+
end
|
883
|
+
end
|
884
|
+
raw = xml.target!
|
885
|
+
raw = raw.gsub('<ai/>','')
|
886
|
+
yield(raw) if block_given?
|
887
|
+
raw
|
888
|
+
end
|
889
|
+
end
|
890
|
+
end
|
891
|
+
|