MxmConnect 1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +6 -0
- data/lib/default.rb +146 -0
- data/lib/defaultDriver.rb +101 -0
- data/lib/defaultMappingRegistry.rb +170 -0
- data/lib/mxmconnect.rb +257 -0
- metadata +83 -0
data/README
ADDED
data/lib/default.rb
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
require 'xsd/qname'
|
2
|
+
require 'date'
|
3
|
+
require 'rubygems'
|
4
|
+
gem 'ruby-hmac'
|
5
|
+
require 'hmac-sha2'
|
6
|
+
|
7
|
+
|
8
|
+
# {http://mxmaster.net/campaign/0.1}Authentication
|
9
|
+
# user - SOAP::SOAPString
|
10
|
+
# timestamp - SOAP::SOAPDateTime
|
11
|
+
# signature - SOAP::SOAPString
|
12
|
+
class Authentication
|
13
|
+
attr_accessor :user
|
14
|
+
attr_accessor :timestamp
|
15
|
+
attr_accessor :signature
|
16
|
+
|
17
|
+
def initialize(user, password)
|
18
|
+
@user = user
|
19
|
+
@password= password
|
20
|
+
t = Time.now
|
21
|
+
t = t.utc
|
22
|
+
@timestamp = t.xmlschema
|
23
|
+
makeSignature()
|
24
|
+
end
|
25
|
+
|
26
|
+
def makeSignature()
|
27
|
+
sign = ::HMAC::SHA256.new()
|
28
|
+
sign.set_key(@password)
|
29
|
+
sign.update("http://mxmaster.net/campaign/0.1#doCampaign" + @user + @timestamp)
|
30
|
+
@signature = sign.hexdigest()
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# {http://mxmaster.net/campaign/0.1}CampaignParameters
|
35
|
+
# tag - ArrayTag
|
36
|
+
# mailfrom - SOAP::SOAPString
|
37
|
+
# mailfrom_friendly - SOAP::SOAPString
|
38
|
+
# replyto - SOAP::SOAPString
|
39
|
+
# replyto_filtered - SOAP::SOAPBoolean
|
40
|
+
class CampaignParameters
|
41
|
+
attr_accessor :tag
|
42
|
+
attr_accessor :mailfrom
|
43
|
+
attr_accessor :mailfrom_friendly
|
44
|
+
attr_accessor :replyto
|
45
|
+
attr_accessor :replyto_filtered
|
46
|
+
|
47
|
+
def initialize(tag = nil, mailfrom = nil, mailfrom_friendly = nil, replyto = nil, replyto_filtered = nil)
|
48
|
+
@tag = tag
|
49
|
+
@mailfrom = mailfrom
|
50
|
+
@mailfrom_friendly = mailfrom_friendly
|
51
|
+
@replyto = replyto
|
52
|
+
@replyto_filtered = replyto_filtered
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# {http://mxmaster.net/campaign/0.1}Content
|
57
|
+
# subject - SOAP::SOAPString
|
58
|
+
# html - SOAP::SOAPString
|
59
|
+
# text - SOAP::SOAPString
|
60
|
+
class Content
|
61
|
+
attr_accessor :subject
|
62
|
+
attr_accessor :html
|
63
|
+
attr_accessor :text
|
64
|
+
|
65
|
+
def initialize(subject = nil, html = nil, text = nil)
|
66
|
+
@subject = subject
|
67
|
+
@html = html
|
68
|
+
@text = text
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# {http://mxmaster.net/campaign/0.1}Subscribers
|
73
|
+
# descriptor - Email
|
74
|
+
# database - ArrayEmail
|
75
|
+
class Subscribers
|
76
|
+
attr_accessor :descriptor
|
77
|
+
attr_accessor :database
|
78
|
+
|
79
|
+
def initialize(descriptor = nil, database = nil)
|
80
|
+
@descriptor = descriptor
|
81
|
+
@database = database
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# {http://mxmaster.net/campaign/0.1}Email
|
86
|
+
# email - SOAP::SOAPString
|
87
|
+
# field1 - SOAP::SOAPString
|
88
|
+
# field2 - SOAP::SOAPString
|
89
|
+
# field3 - SOAP::SOAPString
|
90
|
+
# field4 - SOAP::SOAPString
|
91
|
+
# field5 - SOAP::SOAPString
|
92
|
+
# field6 - SOAP::SOAPString
|
93
|
+
# field7 - SOAP::SOAPString
|
94
|
+
# field8 - SOAP::SOAPString
|
95
|
+
# field9 - SOAP::SOAPString
|
96
|
+
# field10 - SOAP::SOAPString
|
97
|
+
# field11 - SOAP::SOAPString
|
98
|
+
# field12 - SOAP::SOAPString
|
99
|
+
# field13 - SOAP::SOAPString
|
100
|
+
# field14 - SOAP::SOAPString
|
101
|
+
# field15 - SOAP::SOAPString
|
102
|
+
class Email
|
103
|
+
attr_accessor :email
|
104
|
+
attr_accessor :field1
|
105
|
+
attr_accessor :field2
|
106
|
+
attr_accessor :field3
|
107
|
+
attr_accessor :field4
|
108
|
+
attr_accessor :field5
|
109
|
+
attr_accessor :field6
|
110
|
+
attr_accessor :field7
|
111
|
+
attr_accessor :field8
|
112
|
+
attr_accessor :field9
|
113
|
+
attr_accessor :field10
|
114
|
+
attr_accessor :field11
|
115
|
+
attr_accessor :field12
|
116
|
+
attr_accessor :field13
|
117
|
+
attr_accessor :field14
|
118
|
+
attr_accessor :field15
|
119
|
+
|
120
|
+
def initialize(email = '', field1 = '', field2 = '', field3 = '', field4 = '', field5 = '', field6 = '', field7 = '', field8 = '', field9 = '', field10 = '', field11 = '', field12 = '', field13 = '', field14 = '', field15 = '')
|
121
|
+
@email = email
|
122
|
+
@field1 = field1
|
123
|
+
@field2 = field2
|
124
|
+
@field3 = field3
|
125
|
+
@field4 = field4
|
126
|
+
@field5 = field5
|
127
|
+
@field6 = field6
|
128
|
+
@field7 = field7
|
129
|
+
@field8 = field8
|
130
|
+
@field9 = field9
|
131
|
+
@field10 = field10
|
132
|
+
@field11 = field11
|
133
|
+
@field12 = field12
|
134
|
+
@field13 = field13
|
135
|
+
@field14 = field14
|
136
|
+
@field15 = field15
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# {http://mxmaster.net/campaign/0.1}ArrayEmail
|
141
|
+
class ArrayEmail < ::Array
|
142
|
+
end
|
143
|
+
|
144
|
+
# {http://mxmaster.net/campaign/0.1}ArrayTag
|
145
|
+
class ArrayTag < ::Array
|
146
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'default.rb'
|
2
|
+
require 'defaultMappingRegistry.rb'
|
3
|
+
require 'soap/rpc/driver'
|
4
|
+
|
5
|
+
class WSDL01ForMxMasterPortType < ::SOAP::RPC::Driver
|
6
|
+
DefaultEndpointUrl = "http://mail.messaging-master.com/api_2.php"
|
7
|
+
NsC_01 = "http://mxmaster.net/campaign/0.1"
|
8
|
+
|
9
|
+
Methods = [
|
10
|
+
[ XSD::QName.new(NsC_01, "sendCampaign"),
|
11
|
+
"http://mxmaster.net/campaign/0.1#doCampaign",
|
12
|
+
"sendCampaign",
|
13
|
+
[ ["in", "authentication", ["Authentication", "http://mxmaster.net/campaign/0.1", "Authentication"]],
|
14
|
+
["in", "subscribers", ["ArrayEmail", "http://mxmaster.net/campaign/0.1", "ArrayEmail"]],
|
15
|
+
["in", "parameters", ["CampaignParameters", "http://mxmaster.net/campaign/0.1", "CampaignParameters"]],
|
16
|
+
["in", "content", ["Content", "http://mxmaster.net/campaign/0.1", "Content"]],
|
17
|
+
["retval", "return", ["::SOAP::SOAPBoolean"]] ],
|
18
|
+
{ :request_style => :rpc, :request_use => :literal,
|
19
|
+
:response_style => :rpc, :response_use => :literal,
|
20
|
+
:faults => {} }
|
21
|
+
],
|
22
|
+
[ XSD::QName.new(NsC_01, "createTag"),
|
23
|
+
"http://mxmaster.net/campaign/0.1#doCampaign",
|
24
|
+
"createTag",
|
25
|
+
[ ["in", "authentication", ["Authentication", "http://mxmaster.net/campaign/0.1", "Authentication"]],
|
26
|
+
["in", "tag", ["::SOAP::SOAPString"]],
|
27
|
+
["retval", "return", ["::SOAP::SOAPBoolean"]] ],
|
28
|
+
{ :request_style => :rpc, :request_use => :literal,
|
29
|
+
:response_style => :rpc, :response_use => :literal,
|
30
|
+
:faults => {} }
|
31
|
+
],
|
32
|
+
[ XSD::QName.new(NsC_01, "deleteTag"),
|
33
|
+
"http://mxmaster.net/campaign/0.1#doCampaign",
|
34
|
+
"deleteTag",
|
35
|
+
[ ["in", "authentication", ["Authentication", "http://mxmaster.net/campaign/0.1", "Authentication"]],
|
36
|
+
["in", "tag", ["::SOAP::SOAPString"]],
|
37
|
+
["retval", "return", ["::SOAP::SOAPBoolean"]] ],
|
38
|
+
{ :request_style => :rpc, :request_use => :literal,
|
39
|
+
:response_style => :rpc, :response_use => :literal,
|
40
|
+
:faults => {} }
|
41
|
+
],
|
42
|
+
[ XSD::QName.new(NsC_01, "listAllTags"),
|
43
|
+
"http://mxmaster.net/campaign/0.1#doCampaign",
|
44
|
+
"listAllTags",
|
45
|
+
[ ["in", "authentication", ["Authentication", "http://mxmaster.net/campaign/0.1", "Authentication"]],
|
46
|
+
["retval", "return", ["ArrayTag", "http://mxmaster.net/campaign/0.1", "ArrayTag"]] ],
|
47
|
+
{ :request_style => :rpc, :request_use => :literal,
|
48
|
+
:response_style => :rpc, :response_use => :literal,
|
49
|
+
:faults => {} }
|
50
|
+
],
|
51
|
+
[ XSD::QName.new(NsC_01, "isTag"),
|
52
|
+
"http://mxmaster.net/campaign/0.1#doCampaign",
|
53
|
+
"isTag",
|
54
|
+
[ ["in", "authentication", ["Authentication", "http://mxmaster.net/campaign/0.1", "Authentication"]],
|
55
|
+
["in", "tag", ["::SOAP::SOAPString"]],
|
56
|
+
["retval", "return", ["::SOAP::SOAPBoolean"]] ],
|
57
|
+
{ :request_style => :rpc, :request_use => :literal,
|
58
|
+
:response_style => :rpc, :response_use => :literal,
|
59
|
+
:faults => {} }
|
60
|
+
],
|
61
|
+
[ XSD::QName.new(NsC_01, "getTag"),
|
62
|
+
"http://mxmaster.net/campaign/0.1#doCampaign",
|
63
|
+
"getTag",
|
64
|
+
[ ["in", "authentication", ["Authentication", "http://mxmaster.net/campaign/0.1", "Authentication"]],
|
65
|
+
["in", "tag", ["::SOAP::SOAPString"]],
|
66
|
+
["retval", "return", ["::SOAP::SOAPString"]] ],
|
67
|
+
{ :request_style => :rpc, :request_use => :literal,
|
68
|
+
:response_style => :rpc, :response_use => :literal,
|
69
|
+
:faults => {} }
|
70
|
+
]
|
71
|
+
]
|
72
|
+
|
73
|
+
def initialize(endpoint_url = nil)
|
74
|
+
endpoint_url ||= DefaultEndpointUrl
|
75
|
+
super(endpoint_url, nil)
|
76
|
+
self.mapping_registry = DefaultMappingRegistry::EncodedRegistry
|
77
|
+
self.literal_mapping_registry = DefaultMappingRegistry::LiteralRegistry
|
78
|
+
init_methods
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def init_methods
|
84
|
+
Methods.each do |definitions|
|
85
|
+
opt = definitions.last
|
86
|
+
if opt[:request_style] == :document
|
87
|
+
add_document_operation(*definitions)
|
88
|
+
else
|
89
|
+
add_rpc_operation(*definitions)
|
90
|
+
qname = definitions[0]
|
91
|
+
name = definitions[2]
|
92
|
+
if qname.name != name and qname.name.capitalize == name.capitalize
|
93
|
+
::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
|
94
|
+
__send__(name, *arg)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
@@ -0,0 +1,170 @@
|
|
1
|
+
require 'default.rb'
|
2
|
+
require 'rubygems'
|
3
|
+
gem 'soap4r'
|
4
|
+
require 'soap/mapping'
|
5
|
+
|
6
|
+
module DefaultMappingRegistry
|
7
|
+
EncodedRegistry = ::SOAP::Mapping::EncodedRegistry.new
|
8
|
+
LiteralRegistry = ::SOAP::Mapping::LiteralRegistry.new
|
9
|
+
NsC_01 = "http://mxmaster.net/campaign/0.1"
|
10
|
+
|
11
|
+
EncodedRegistry.register(
|
12
|
+
:class => Authentication,
|
13
|
+
:schema_type => XSD::QName.new(NsC_01, "Authentication"),
|
14
|
+
:schema_element => [
|
15
|
+
["user", ["SOAP::SOAPString", XSD::QName.new(nil, "user")]],
|
16
|
+
["timestamp", ["SOAP::SOAPDateTime", XSD::QName.new(nil, "timestamp")]],
|
17
|
+
["signature", ["SOAP::SOAPString", XSD::QName.new(nil, "signature")]]
|
18
|
+
]
|
19
|
+
)
|
20
|
+
|
21
|
+
EncodedRegistry.register(
|
22
|
+
:class => CampaignParameters,
|
23
|
+
:schema_type => XSD::QName.new(NsC_01, "CampaignParameters"),
|
24
|
+
:schema_element => [
|
25
|
+
["tag", ["ArrayTag", XSD::QName.new(nil, "tag")]],
|
26
|
+
["mailfrom", ["SOAP::SOAPString", XSD::QName.new(nil, "mailfrom")]],
|
27
|
+
["mailfrom_friendly", ["SOAP::SOAPString", XSD::QName.new(nil, "mailfrom_friendly")]],
|
28
|
+
["replyto", ["SOAP::SOAPString", XSD::QName.new(nil, "replyto")]],
|
29
|
+
["replyto_filtered", ["SOAP::SOAPBoolean", XSD::QName.new(nil, "replyto_filtered")]]
|
30
|
+
]
|
31
|
+
)
|
32
|
+
|
33
|
+
EncodedRegistry.register(
|
34
|
+
:class => Content,
|
35
|
+
:schema_type => XSD::QName.new(NsC_01, "Content"),
|
36
|
+
:schema_element => [
|
37
|
+
["subject", ["SOAP::SOAPString", XSD::QName.new(nil, "subject")]],
|
38
|
+
["html", ["SOAP::SOAPString", XSD::QName.new(nil, "html")]],
|
39
|
+
["text", ["SOAP::SOAPString", XSD::QName.new(nil, "text")]]
|
40
|
+
]
|
41
|
+
)
|
42
|
+
|
43
|
+
EncodedRegistry.register(
|
44
|
+
:class => Subscribers,
|
45
|
+
:schema_type => XSD::QName.new(NsC_01, "Subscribers"),
|
46
|
+
:schema_element => [
|
47
|
+
["descriptor", ["Email", XSD::QName.new(nil, "descriptor")]],
|
48
|
+
["database", ["ArrayEmail", XSD::QName.new(nil, "database")]]
|
49
|
+
]
|
50
|
+
)
|
51
|
+
|
52
|
+
EncodedRegistry.register(
|
53
|
+
:class => Email,
|
54
|
+
:schema_type => XSD::QName.new(NsC_01, "Email"),
|
55
|
+
:schema_element => [
|
56
|
+
["email", ["SOAP::SOAPString", XSD::QName.new(nil, "email")]],
|
57
|
+
["field1", ["SOAP::SOAPString", XSD::QName.new(nil, "field1")]],
|
58
|
+
["field2", ["SOAP::SOAPString", XSD::QName.new(nil, "field2")]],
|
59
|
+
["field3", ["SOAP::SOAPString", XSD::QName.new(nil, "field3")]],
|
60
|
+
["field4", ["SOAP::SOAPString", XSD::QName.new(nil, "field4")]],
|
61
|
+
["field5", ["SOAP::SOAPString", XSD::QName.new(nil, "field5")]],
|
62
|
+
["field6", ["SOAP::SOAPString", XSD::QName.new(nil, "field6")]],
|
63
|
+
["field7", ["SOAP::SOAPString", XSD::QName.new(nil, "field7")]],
|
64
|
+
["field8", ["SOAP::SOAPString", XSD::QName.new(nil, "field8")]],
|
65
|
+
["field9", ["SOAP::SOAPString", XSD::QName.new(nil, "field9")]],
|
66
|
+
["field10", ["SOAP::SOAPString", XSD::QName.new(nil, "field10")]],
|
67
|
+
["field11", ["SOAP::SOAPString", XSD::QName.new(nil, "field11")]],
|
68
|
+
["field12", ["SOAP::SOAPString", XSD::QName.new(nil, "field12")]],
|
69
|
+
["field13", ["SOAP::SOAPString", XSD::QName.new(nil, "field13")]],
|
70
|
+
["field14", ["SOAP::SOAPString", XSD::QName.new(nil, "field14")]],
|
71
|
+
["field15", ["SOAP::SOAPString", XSD::QName.new(nil, "field15")]]
|
72
|
+
]
|
73
|
+
)
|
74
|
+
|
75
|
+
EncodedRegistry.register(
|
76
|
+
:class => ArrayEmail,
|
77
|
+
:schema_type => XSD::QName.new(NsC_01, "ArrayEmail"),
|
78
|
+
:schema_element => [
|
79
|
+
["email", ["Email[]", XSD::QName.new(nil, "Email")], [1, nil]]
|
80
|
+
]
|
81
|
+
)
|
82
|
+
|
83
|
+
EncodedRegistry.register(
|
84
|
+
:class => ArrayTag,
|
85
|
+
:schema_type => XSD::QName.new(NsC_01, "ArrayTag"),
|
86
|
+
:schema_element => [
|
87
|
+
["tag", ["SOAP::SOAPString[]", XSD::QName.new(nil, "Tag")], [1, nil]]
|
88
|
+
]
|
89
|
+
)
|
90
|
+
|
91
|
+
LiteralRegistry.register(
|
92
|
+
:class => Authentication,
|
93
|
+
:schema_type => XSD::QName.new(NsC_01, "Authentication"),
|
94
|
+
:schema_element => [
|
95
|
+
["user", ["SOAP::SOAPString", XSD::QName.new(nil, "user")]],
|
96
|
+
["timestamp", ["SOAP::SOAPDateTime", XSD::QName.new(nil, "timestamp")]],
|
97
|
+
["signature", ["SOAP::SOAPString", XSD::QName.new(nil, "signature")]]
|
98
|
+
]
|
99
|
+
)
|
100
|
+
|
101
|
+
LiteralRegistry.register(
|
102
|
+
:class => CampaignParameters,
|
103
|
+
:schema_type => XSD::QName.new(NsC_01, "CampaignParameters"),
|
104
|
+
:schema_element => [
|
105
|
+
["tag", ["ArrayTag", XSD::QName.new(nil, "tag")]],
|
106
|
+
["mailfrom", ["SOAP::SOAPString", XSD::QName.new(nil, "mailfrom")]],
|
107
|
+
["mailfrom_friendly", ["SOAP::SOAPString", XSD::QName.new(nil, "mailfrom_friendly")]],
|
108
|
+
["replyto", ["SOAP::SOAPString", XSD::QName.new(nil, "replyto")]],
|
109
|
+
["replyto_filtered", ["SOAP::SOAPBoolean", XSD::QName.new(nil, "replyto_filtered")]]
|
110
|
+
]
|
111
|
+
)
|
112
|
+
|
113
|
+
LiteralRegistry.register(
|
114
|
+
:class => Content,
|
115
|
+
:schema_type => XSD::QName.new(NsC_01, "Content"),
|
116
|
+
:schema_element => [
|
117
|
+
["subject", ["SOAP::SOAPString", XSD::QName.new(nil, "subject")]],
|
118
|
+
["html", ["SOAP::SOAPString", XSD::QName.new(nil, "html")]],
|
119
|
+
["text", ["SOAP::SOAPString", XSD::QName.new(nil, "text")]]
|
120
|
+
]
|
121
|
+
)
|
122
|
+
|
123
|
+
LiteralRegistry.register(
|
124
|
+
:class => Subscribers,
|
125
|
+
:schema_type => XSD::QName.new(NsC_01, "Subscribers"),
|
126
|
+
:schema_element => [
|
127
|
+
["descriptor", ["Email", XSD::QName.new(nil, "descriptor")]],
|
128
|
+
["database", ["ArrayEmail", XSD::QName.new(nil, "database")]]
|
129
|
+
]
|
130
|
+
)
|
131
|
+
|
132
|
+
LiteralRegistry.register(
|
133
|
+
:class => Email,
|
134
|
+
:schema_type => XSD::QName.new(NsC_01, "Email"),
|
135
|
+
:schema_element => [
|
136
|
+
["email", ["SOAP::SOAPString", XSD::QName.new(nil, "email")]],
|
137
|
+
["field1", ["SOAP::SOAPString", XSD::QName.new(nil, "field1")]],
|
138
|
+
["field2", ["SOAP::SOAPString", XSD::QName.new(nil, "field2")]],
|
139
|
+
["field3", ["SOAP::SOAPString", XSD::QName.new(nil, "field3")]],
|
140
|
+
["field4", ["SOAP::SOAPString", XSD::QName.new(nil, "field4")]],
|
141
|
+
["field5", ["SOAP::SOAPString", XSD::QName.new(nil, "field5")]],
|
142
|
+
["field6", ["SOAP::SOAPString", XSD::QName.new(nil, "field6")]],
|
143
|
+
["field7", ["SOAP::SOAPString", XSD::QName.new(nil, "field7")]],
|
144
|
+
["field8", ["SOAP::SOAPString", XSD::QName.new(nil, "field8")]],
|
145
|
+
["field9", ["SOAP::SOAPString", XSD::QName.new(nil, "field9")]],
|
146
|
+
["field10", ["SOAP::SOAPString", XSD::QName.new(nil, "field10")]],
|
147
|
+
["field11", ["SOAP::SOAPString", XSD::QName.new(nil, "field11")]],
|
148
|
+
["field12", ["SOAP::SOAPString", XSD::QName.new(nil, "field12")]],
|
149
|
+
["field13", ["SOAP::SOAPString", XSD::QName.new(nil, "field13")]],
|
150
|
+
["field14", ["SOAP::SOAPString", XSD::QName.new(nil, "field14")]],
|
151
|
+
["field15", ["SOAP::SOAPString", XSD::QName.new(nil, "field15")]]
|
152
|
+
]
|
153
|
+
)
|
154
|
+
|
155
|
+
LiteralRegistry.register(
|
156
|
+
:class => ArrayEmail,
|
157
|
+
:schema_type => XSD::QName.new(NsC_01, "ArrayEmail"),
|
158
|
+
:schema_element => [
|
159
|
+
["email", ["Email[]", XSD::QName.new(nil, "Email")], [1, nil]]
|
160
|
+
]
|
161
|
+
)
|
162
|
+
|
163
|
+
LiteralRegistry.register(
|
164
|
+
:class => ArrayTag,
|
165
|
+
:schema_type => XSD::QName.new(NsC_01, "ArrayTag"),
|
166
|
+
:schema_element => [
|
167
|
+
["tag", ["SOAP::SOAPString[]", XSD::QName.new(nil, "Tag")], [1, nil]]
|
168
|
+
]
|
169
|
+
)
|
170
|
+
end
|
data/lib/mxmconnect.rb
ADDED
@@ -0,0 +1,257 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'defaultDriver.rb'
|
3
|
+
|
4
|
+
# run ruby with -d to see SOAP wiredumps.
|
5
|
+
|
6
|
+
|
7
|
+
# SYNOPSIS
|
8
|
+
# This class encapsulates all exception; when you have it there is a
|
9
|
+
# problem in your code probably.
|
10
|
+
class MxmException < Exception
|
11
|
+
end
|
12
|
+
|
13
|
+
# SYNOPSIS
|
14
|
+
# This class is the stub to connect to MxM
|
15
|
+
class MxmConnect
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def connect(host)
|
20
|
+
@idx_host = 0
|
21
|
+
fqdn = @@Prefix + host + @@Postfix
|
22
|
+
@stub = WSDL01ForMxMasterPortType.new(fqdn)
|
23
|
+
end
|
24
|
+
|
25
|
+
def reconnect()
|
26
|
+
if @idx_host > (@@Hosts.length - 1):
|
27
|
+
raise MxmException
|
28
|
+
end
|
29
|
+
@idx_host = @idx_host + 1
|
30
|
+
fqdn = @@Prefix + @@Hosts[@idx_host] + @@Postfix
|
31
|
+
@stub = WSDL01ForMxMasterPortType.new(fqdn)
|
32
|
+
end
|
33
|
+
|
34
|
+
@@Default_host = 'mail'
|
35
|
+
@@Hosts = ['mail','mail6', 'mail7']
|
36
|
+
@@Fast_host = 'mail7'
|
37
|
+
@@Prefix = 'http://'
|
38
|
+
@@Postfix = '.messaging-master.com/api_2.php'
|
39
|
+
|
40
|
+
public
|
41
|
+
def initialize(user = nil, password = nil)
|
42
|
+
@idx_host = 0
|
43
|
+
@user = user
|
44
|
+
@password = password
|
45
|
+
@auth = Authentication.new(@user, @password)
|
46
|
+
connect(@@Default_host)
|
47
|
+
@stub.wiredump_dev = STDERR if $DEBUG
|
48
|
+
end
|
49
|
+
|
50
|
+
# SYNOPSIS
|
51
|
+
# This setter set the fast delivery on or off. true for on, false for off.
|
52
|
+
# Fast delivery is reserved for fast and critical emails such as subscription
|
53
|
+
# confirmation.
|
54
|
+
# setFastDelivery(bool)
|
55
|
+
#
|
56
|
+
# ARGS
|
57
|
+
# bool true for on, false for off
|
58
|
+
def setFastDelivery(bool)
|
59
|
+
if bool
|
60
|
+
connect(@@Fast_host)
|
61
|
+
else
|
62
|
+
connect(@@Default_host)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
# SYNOPSIS
|
70
|
+
# createTag(tag) creates a tag in the reporting system. Idempotent. If already there, will do nothing.
|
71
|
+
#
|
72
|
+
# ARGS
|
73
|
+
# tag String (ascii only and < 40 chars) the name of the new tag
|
74
|
+
#
|
75
|
+
# RETURNS
|
76
|
+
# v_return Boolean - true if success, false otherwise
|
77
|
+
#
|
78
|
+
def createTag(tag = nil)
|
79
|
+
if tag == nil or tag.length > 40 or tag.strip.length == 0
|
80
|
+
raise MxmException, 'invalid tag'
|
81
|
+
end
|
82
|
+
flag = true
|
83
|
+
while flag
|
84
|
+
begin
|
85
|
+
res = @stub.createTag(@auth, tag)
|
86
|
+
flag = false
|
87
|
+
return res
|
88
|
+
|
89
|
+
rescue SOAP::FaultError
|
90
|
+
raise MxmException
|
91
|
+
rescue Errno::ECONNREFUSED, SOAP::HTTPStreamError, SocketError
|
92
|
+
if flag
|
93
|
+
reconnect()
|
94
|
+
else
|
95
|
+
raise MxmException
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
# SYNOPSIS
|
103
|
+
# deleteTag(tag) deletes the tag
|
104
|
+
#
|
105
|
+
# ARGS
|
106
|
+
# tag String, name of the tag to be deleted.
|
107
|
+
#
|
108
|
+
# RETURNS
|
109
|
+
# v_return Boolean - true if success, false if failure
|
110
|
+
#
|
111
|
+
def deleteTag(tag = nil)
|
112
|
+
if tag == nil or tag.length > 40 or tag.strip.length == 0
|
113
|
+
raise MxmException, 'invalid tag'
|
114
|
+
end
|
115
|
+
flag = true
|
116
|
+
while flag
|
117
|
+
begin
|
118
|
+
res = @stub.deleteTag(@auth, tag)
|
119
|
+
flag = false
|
120
|
+
return res
|
121
|
+
rescue SOAP::FaultError
|
122
|
+
raise MxmException
|
123
|
+
rescue Errno::ECONNREFUSED, SOAP::HTTPStreamError, SocketError
|
124
|
+
if flag
|
125
|
+
reconnect()
|
126
|
+
else
|
127
|
+
raise MxmException
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
# SYNOPSIS
|
135
|
+
# listAllTags() lists all the tag for your user
|
136
|
+
#
|
137
|
+
# RETURNS
|
138
|
+
# v_return An array of string containing all your tags
|
139
|
+
#
|
140
|
+
def listAllTags
|
141
|
+
flag = true
|
142
|
+
while flag
|
143
|
+
begin
|
144
|
+
res = @stub.listAllTags(@auth)
|
145
|
+
flag = false
|
146
|
+
return res
|
147
|
+
rescue SOAP::FaultError
|
148
|
+
raise MxmException
|
149
|
+
rescue Errno::ECONNREFUSED, SOAP::HTTPStreamError, SocketError
|
150
|
+
if flag
|
151
|
+
reconnect()
|
152
|
+
else
|
153
|
+
raise MxmException
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
|
160
|
+
# SYNOPSIS
|
161
|
+
# getTag(tag) returns the content of a tag.
|
162
|
+
#
|
163
|
+
# ARGS
|
164
|
+
# tag String - name of the tag to be returned
|
165
|
+
#
|
166
|
+
# RETURNS
|
167
|
+
# v_return a String containing an XML document with the content of the tag
|
168
|
+
#
|
169
|
+
def getTag(tag)
|
170
|
+
if tag == nil or tag.length > 40 or tag.strip.length == 0
|
171
|
+
raise MxmException, 'invalid tag'
|
172
|
+
end
|
173
|
+
flag = true
|
174
|
+
while flag
|
175
|
+
begin
|
176
|
+
res = @stub.getTag(@auth, tag)
|
177
|
+
flag = false
|
178
|
+
return res
|
179
|
+
rescue SOAP::FaultError
|
180
|
+
raise MxmException
|
181
|
+
rescue Errno::ECONNREFUSED, SOAP::HTTPStreamError, SocketError
|
182
|
+
if flag
|
183
|
+
reconnect()
|
184
|
+
else
|
185
|
+
raise MxmException
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
# SYNOPSIS
|
194
|
+
# isTag(tag) tells you whether tag exists or not (deprecated. No usage.)
|
195
|
+
#
|
196
|
+
# ARGS
|
197
|
+
# tag String - the tag to query
|
198
|
+
#
|
199
|
+
# RETURNS
|
200
|
+
# v_return Boolean - {http://www.w3.org/2001/XMLSchema}boolean
|
201
|
+
def isTag(tag)
|
202
|
+
puts 'oooo'
|
203
|
+
if tag == nil or tag.length > 40 or tag.strip.length == 0
|
204
|
+
raise MxmException, 'invalid tag'
|
205
|
+
end
|
206
|
+
flag = true
|
207
|
+
while flag
|
208
|
+
begin
|
209
|
+
res = @stub.isTag(@auth, tag)
|
210
|
+
flag = false
|
211
|
+
return res
|
212
|
+
rescue SOAP::FaultError
|
213
|
+
raise MxmException
|
214
|
+
rescue Errno::ECONNREFUSED, SOAP::HTTPStreamError, SocketError
|
215
|
+
if flag
|
216
|
+
reconnect()
|
217
|
+
else
|
218
|
+
raise MxmException
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
# SYNOPSIS
|
225
|
+
# sendCampaign(subscribers, parameters, content)
|
226
|
+
#
|
227
|
+
# ARGS
|
228
|
+
# subscribers ArrayEmail - List of your subscribers
|
229
|
+
# parameters CampaignParameters - the parameter of the delivery
|
230
|
+
# content Content - the content of the email
|
231
|
+
#
|
232
|
+
# RETURNS
|
233
|
+
# v_return Boolean - true if success false otherwise
|
234
|
+
#
|
235
|
+
def sendCampaign(subscribers, parameters, content)
|
236
|
+
flag = true
|
237
|
+
while flag
|
238
|
+
begin
|
239
|
+
res = @stub.sendCampaign(@auth, subscribers, parameters, content)
|
240
|
+
flag = false
|
241
|
+
return res
|
242
|
+
rescue SOAP::FaultError
|
243
|
+
raise MxmException
|
244
|
+
rescue Errno::ECONNREFUSED, SOAP::HTTPStreamError, SocketError
|
245
|
+
if flag
|
246
|
+
reconnect()
|
247
|
+
else
|
248
|
+
raise MxmException
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: MxmConnect
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "1"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nicolas Toper
|
8
|
+
autorequire: mxmconnect
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-01-26 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: ruby-hmac
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.3.0
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: httpclient
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 2.1.3.1
|
32
|
+
version:
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: soap4r
|
35
|
+
version_requirement:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.5.8
|
41
|
+
version:
|
42
|
+
description:
|
43
|
+
email: nico@m--x--m.net
|
44
|
+
executables: []
|
45
|
+
|
46
|
+
extensions: []
|
47
|
+
|
48
|
+
extra_rdoc_files:
|
49
|
+
- README
|
50
|
+
files:
|
51
|
+
- lib/default.rb
|
52
|
+
- lib/defaultDriver.rb
|
53
|
+
- lib/defaultMappingRegistry.rb
|
54
|
+
- lib/mxmconnect.rb
|
55
|
+
- README
|
56
|
+
has_rdoc: true
|
57
|
+
homepage: http://www.m--x--m.net
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
68
|
+
version:
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: "0"
|
74
|
+
version:
|
75
|
+
requirements: []
|
76
|
+
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 1.0.1
|
79
|
+
signing_key:
|
80
|
+
specification_version: 2
|
81
|
+
summary: This is a stub used to connect easily to MxM mail delivery service
|
82
|
+
test_files: []
|
83
|
+
|