exactly 0.0.7 → 0.0.9
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 +15 -0
- data/exactly.gemspec +1 -1
- data/lib/exactly/client.rb +65 -31
- data/lib/exactly/version.rb +1 -1
- metadata +9 -15
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZDA4NGVlZWU5YTEzNDdhYmQyYmEyYWU3MDkwMTBhMjI2ZWQ5NzYwYQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
Njk3YzVlMDU2N2UwNWQ5MTVkNjI0M2VmODU4YWUzNDUwODY0OTczMg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZDRjZmNmNjVjNzdkMGM4Mzc0MTEzNzRkYTY1OWRkZGIzNWFmOWY5ZGI0ZjE1
|
10
|
+
MjQyNDk1NGZhN2Y0NTVjZDFlZWE2NDZjNDE2NjBlMjMxNzAxNWY1NGFkMmYw
|
11
|
+
NDE3YzAwNWQ5NzZjMzRjNGJlNDA0N2EwNzkyYjkwNDE4ZmFjYmM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NzZiZDEzMTQ3MjYzYTZkNDhjOTZlZmExMjcwOTJjNzA4NDFlZDEzMWZhNjQy
|
14
|
+
NWMzMWQ5NGU3NTBiMTQwNjQ4ZGUxMzQxMGNhMWU5NTllNTZkN2FjOGZjZGZk
|
15
|
+
MjM3NTllNDcyMzk5MGU3MTU1Njk5YTUzYmIzMTA0YzRkYTNlZDc=
|
data/exactly.gemspec
CHANGED
data/lib/exactly/client.rb
CHANGED
@@ -26,17 +26,22 @@ module Exactly
|
|
26
26
|
|
27
27
|
class Client
|
28
28
|
def initialize(username, password)
|
29
|
-
|
29
|
+
@username = username
|
30
|
+
@password = password
|
30
31
|
end
|
31
32
|
|
32
33
|
def client
|
33
|
-
@client ||= ::Savon
|
34
|
+
@client ||= ::Savon.client(:wsse_auth => [@username,@password]) do
|
35
|
+
wsdl "https://webservice.s6.exacttarget.com/etframework.wsdl"
|
36
|
+
namespace "http://exacttarget.com/wsdl/partnerAPI"
|
37
|
+
end
|
34
38
|
end
|
35
39
|
|
36
40
|
def upsert_subscriber(customer_key, email, lists = [])
|
37
|
-
response = client.
|
38
|
-
|
39
|
-
|
41
|
+
response = client.call(
|
42
|
+
:create,
|
43
|
+
:soap_action => "Create",
|
44
|
+
:message => {
|
40
45
|
"Options" => {
|
41
46
|
"SaveOptions" => [
|
42
47
|
"SaveOption" => {
|
@@ -52,22 +57,49 @@ module Exactly
|
|
52
57
|
{ "ID" => list_id, "Status" => "Active" }
|
53
58
|
}
|
54
59
|
},
|
55
|
-
:attributes! => {
|
56
|
-
}
|
57
|
-
|
58
|
-
|
60
|
+
:attributes! => {"Objects" =>{ "xsi:type" => "tns:Subscriber" }}
|
61
|
+
})
|
62
|
+
if response.to_hash[:create_response][:overall_status] != 'OK'
|
63
|
+
raise Exactly::UpsertSubscriberFailed.new(response)
|
59
64
|
end
|
65
|
+
rescue Savon::SOAPFault => ex
|
66
|
+
raise Exactly::SoapFaultError, "Error: Could not upsert subscriber #{customer_key}/#{email} to ExactTarget: #{ex.message}"
|
67
|
+
end
|
68
|
+
|
69
|
+
def unsubscribe_subscriber(customer_key, email, lists = [])
|
70
|
+
response = client.call(
|
71
|
+
:create,
|
72
|
+
:soap_action => "Create",
|
73
|
+
:message => {
|
74
|
+
"Options" => {
|
75
|
+
"SaveOptions" => [
|
76
|
+
"SaveOption" => {
|
77
|
+
"PropertyName" => "*",
|
78
|
+
"SaveAction" => "UpdateAdd"
|
79
|
+
}
|
80
|
+
]
|
81
|
+
},
|
82
|
+
"Objects" => {
|
83
|
+
"CustomerKey" => customer_key,
|
84
|
+
"EmailAddress" => email,
|
85
|
+
"Lists" => Array(lists).map{|list_id|
|
86
|
+
{ "ID" => list_id, "Status" => "Unsubscribed" }
|
87
|
+
}
|
88
|
+
},
|
89
|
+
:attributes! => {"Objects" =>{ "xsi:type" => "tns:Subscriber" }}
|
90
|
+
})
|
60
91
|
if response.to_hash[:create_response][:overall_status] != 'OK'
|
61
92
|
raise Exactly::UpsertSubscriberFailed.new(response)
|
62
93
|
end
|
63
|
-
rescue Savon::
|
94
|
+
rescue Savon::SOAPFault => ex
|
64
95
|
raise Exactly::SoapFaultError, "Error: Could not upsert subscriber #{customer_key}/#{email} to ExactTarget: #{ex.message}"
|
65
96
|
end
|
66
97
|
|
67
98
|
def upsert_data_extension(customer_key, properties)
|
68
|
-
response = client.
|
69
|
-
|
70
|
-
|
99
|
+
response = client.call(
|
100
|
+
:update,
|
101
|
+
:soap_action => "Update",
|
102
|
+
:message => {
|
71
103
|
"Options" => {
|
72
104
|
"SaveOptions" => [
|
73
105
|
"SaveOption" => {
|
@@ -79,42 +111,45 @@ module Exactly
|
|
79
111
|
"Objects" => {
|
80
112
|
"CustomerKey" => customer_key,
|
81
113
|
"Properties" => {
|
82
|
-
"Property" => properties.map do
|
83
|
-
|
114
|
+
"Property" => properties.map do |k, v|
|
115
|
+
{ "Name" => k, "Value" => v }
|
84
116
|
end
|
85
117
|
}
|
86
118
|
},
|
87
|
-
:attributes! => { "Objects" => { "xsi:type" => "DataExtensionObject" }}
|
88
|
-
}
|
89
|
-
end
|
119
|
+
:attributes! => { "Objects" => { "xsi:type" => "tns:DataExtensionObject" }}
|
120
|
+
})
|
90
121
|
if response.to_hash[:update_response][:overall_status] != 'OK'
|
91
122
|
raise Exactly::UpsertDataExtensionFailed.new(response)
|
92
123
|
end
|
93
124
|
end
|
94
125
|
|
95
126
|
def delete_from_data_extension(customer_key, properties)
|
96
|
-
|
97
|
-
|
98
|
-
|
127
|
+
response = client.call(
|
128
|
+
:delete,
|
129
|
+
:soap_action => "Delete",
|
130
|
+
:message => {
|
99
131
|
"DeleteOptions" => {},
|
100
132
|
"Objects" => {
|
101
133
|
"CustomerKey" => customer_key,
|
102
134
|
"Keys" => {
|
103
|
-
"Key" => properties.map do
|
104
|
-
|
135
|
+
"Key" => properties.map do |k, v|
|
136
|
+
{ "Name" => k, "Value" => v }
|
105
137
|
end
|
106
138
|
}
|
107
139
|
},
|
108
|
-
:attributes! => { "Objects" => { "xsi:type" => "DataExtensionObject" }}
|
109
|
-
}
|
140
|
+
:attributes! => { "Objects" => { "xsi:type" => "tns:DataExtensionObject" }}
|
141
|
+
})
|
142
|
+
if response.to_hash[:delete_response][:overall_status] != 'OK'
|
143
|
+
raise Exactly::TriggeredSendFailed.new(response)
|
110
144
|
end
|
111
145
|
end
|
112
146
|
|
113
147
|
def triggered_send(customer_key, attributes)
|
114
148
|
attributes_without_email = attributes.reject{|k,v| k == :email}
|
115
|
-
response = client.
|
116
|
-
|
117
|
-
|
149
|
+
response = client.call(
|
150
|
+
:create,
|
151
|
+
:soap_action => "Create",
|
152
|
+
:message => {
|
118
153
|
"Objects" => {
|
119
154
|
"TriggeredSendDefinition" => {
|
120
155
|
"CustomerKey" => customer_key
|
@@ -127,9 +162,8 @@ module Exactly
|
|
127
162
|
end
|
128
163
|
}
|
129
164
|
},
|
130
|
-
:attributes! => { "Objects" => { "xsi:type" => "TriggeredSend" }}
|
131
|
-
}
|
132
|
-
end
|
165
|
+
:attributes! => { "Objects" => { "xsi:type" => "tns:TriggeredSend" }}
|
166
|
+
})
|
133
167
|
if response.to_hash[:create_response][:overall_status] != 'OK'
|
134
168
|
raise Exactly::TriggeredSendFailed.new(response)
|
135
169
|
end
|
data/lib/exactly/version.rb
CHANGED
metadata
CHANGED
@@ -1,36 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exactly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.9
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jacob Atzen
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: savon
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
version: '2.2'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
26
|
+
version: '2.2'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ! '>='
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -61,26 +56,25 @@ files:
|
|
61
56
|
- lib/exactly/version.rb
|
62
57
|
homepage: http://github.com/lokalebasen/exactly
|
63
58
|
licenses: []
|
59
|
+
metadata: {}
|
64
60
|
post_install_message:
|
65
61
|
rdoc_options: []
|
66
62
|
require_paths:
|
67
63
|
- lib
|
68
64
|
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
-
none: false
|
70
65
|
requirements:
|
71
66
|
- - ! '>='
|
72
67
|
- !ruby/object:Gem::Version
|
73
68
|
version: '0'
|
74
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
70
|
requirements:
|
77
71
|
- - ! '>='
|
78
72
|
- !ruby/object:Gem::Version
|
79
73
|
version: '0'
|
80
74
|
requirements: []
|
81
75
|
rubyforge_project:
|
82
|
-
rubygems_version: 1.
|
76
|
+
rubygems_version: 2.1.11
|
83
77
|
signing_key:
|
84
|
-
specification_version:
|
78
|
+
specification_version: 4
|
85
79
|
summary: Making it easier to interact with ExactTargets SOAP API
|
86
80
|
test_files: []
|