fuelsdk 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +8 -1
- data/lib/fuelsdk.rb +12 -0
- data/lib/fuelsdk/soap.rb +70 -18
- data/lib/fuelsdk/version.rb +1 -1
- data/spec/array_spec.rb +12 -0
- data/spec/soap/dataextension_spec.rb +22 -0
- metadata +5 -1
data/ChangeLog.md
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
FuelSDK-Ruby
|
2
2
|
============
|
3
3
|
|
4
|
+
2013-09-18: Version 0.1.3
|
5
|
+
```
|
6
|
+
augment soap_cud to handle dataextensions better
|
7
|
+
|
8
|
+
array.wrap so we can be less terse
|
9
|
+
```
|
10
|
+
|
4
11
|
2013-09-18: Version 0.1.2
|
5
12
|
```
|
6
|
-
get
|
13
|
+
get dataextension properties sugar method
|
7
14
|
|
8
15
|
clear soap client on refresh so the client gets re-established with header with new token
|
9
16
|
|
data/lib/fuelsdk.rb
CHANGED
@@ -5,6 +5,18 @@ require 'date'
|
|
5
5
|
require 'jwt'
|
6
6
|
require 'active_support/inflector'
|
7
7
|
|
8
|
+
class Array
|
9
|
+
class << self
|
10
|
+
def wrap subject
|
11
|
+
if subject.kind_of? Array
|
12
|
+
subject
|
13
|
+
else
|
14
|
+
[subject]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
8
20
|
module FuelSDK
|
9
21
|
require 'fuelsdk/utils'
|
10
22
|
autoload :HTTPRequest, 'fuelsdk/http_request'
|
data/lib/fuelsdk/soap.rb
CHANGED
@@ -47,7 +47,7 @@ module FuelSDK
|
|
47
47
|
def unpack_rslts raw
|
48
48
|
@more = (raw.body[raw.body.keys.first][:overall_status] == 'MoreDataAvailable')
|
49
49
|
rslts = raw.body[raw.body.keys.first][:results] || []
|
50
|
-
rslts =
|
50
|
+
rslts = Array.wrap(rslts)
|
51
51
|
rslts
|
52
52
|
rescue
|
53
53
|
[]
|
@@ -71,7 +71,7 @@ module FuelSDK
|
|
71
71
|
# ugly, but a necessary evil
|
72
72
|
_exts = definition[:extended_properties].nil? ? {} : definition[:extended_properties] # if they have no extended properties nil is returned
|
73
73
|
_exts = _exts[:extended_property] || [] # if no properties nil and we need an array to iterate
|
74
|
-
_exts =
|
74
|
+
_exts = Array.wrap(_exts) # if they have only one extended property we need to wrap it in array to iterate
|
75
75
|
_exts.each do |p|
|
76
76
|
@viewable << p[:name] if p[:is_viewable]
|
77
77
|
@editable << p[:name] if p[:is_editable]
|
@@ -121,16 +121,41 @@ module FuelSDK
|
|
121
121
|
)
|
122
122
|
end
|
123
123
|
|
124
|
-
def
|
125
|
-
|
124
|
+
def describe_object_type_message object_type
|
125
|
+
{
|
126
126
|
'DescribeRequests' => {
|
127
127
|
'ObjectDefinitionRequest' => {
|
128
128
|
'ObjectType' => object_type
|
129
129
|
}
|
130
130
|
}
|
131
131
|
}
|
132
|
+
end
|
132
133
|
|
133
|
-
|
134
|
+
def describe_dataextension_message dataextension
|
135
|
+
{
|
136
|
+
'Property' => "DataExtension.CustomerKey",
|
137
|
+
'SimpleOperator' => 'equals',
|
138
|
+
'Value' => dataextension
|
139
|
+
}
|
140
|
+
end
|
141
|
+
|
142
|
+
def describe_data_extension dataextension
|
143
|
+
soap_get('DataExtensionField',
|
144
|
+
'Name',
|
145
|
+
describe_dataextension_message(dataextension)
|
146
|
+
)
|
147
|
+
end
|
148
|
+
|
149
|
+
def soap_describe object_type
|
150
|
+
soap_request :describe, describe_object_type_message(object_type)
|
151
|
+
end
|
152
|
+
|
153
|
+
def describe object_type
|
154
|
+
rsp = soap_describe(object_type)
|
155
|
+
unless rsp.success?
|
156
|
+
rsp = describe_data_extension object_type
|
157
|
+
end
|
158
|
+
rsp
|
134
159
|
end
|
135
160
|
|
136
161
|
def get_all_object_properties object_type
|
@@ -140,12 +165,8 @@ module FuelSDK
|
|
140
165
|
end
|
141
166
|
|
142
167
|
def get_dataextension_properties dataextension
|
143
|
-
|
144
|
-
|
145
|
-
'Property' => "DataExtension.CustomerKey",
|
146
|
-
'SimpleOperator' => 'equals',
|
147
|
-
'Value' => dataextension
|
148
|
-
).results.collect{|f| f[:name]}
|
168
|
+
describe_dataextension(dataextension)
|
169
|
+
.results.collect{|f| f[:name]}
|
149
170
|
end
|
150
171
|
|
151
172
|
def cache_properties action, object_type, properties
|
@@ -168,6 +189,8 @@ module FuelSDK
|
|
168
189
|
def get_retrievable_properties object_type
|
169
190
|
if props=retrievable_properties_cached?(object_type)
|
170
191
|
props
|
192
|
+
elsif is_a_dataextension? object_type
|
193
|
+
[]
|
171
194
|
else
|
172
195
|
cache_retrievable object_type, get_all_object_properties(object_type).retrievable
|
173
196
|
end
|
@@ -184,6 +207,8 @@ module FuelSDK
|
|
184
207
|
def get_editable_properties object_type
|
185
208
|
if props=editable_properties_cached?(object_type)
|
186
209
|
props
|
210
|
+
elsif is_a_dataextension? object_type
|
211
|
+
[]
|
187
212
|
else
|
188
213
|
cache_editable object_type, get_all_object_properties(object_type).editable
|
189
214
|
end
|
@@ -263,7 +288,7 @@ module FuelSDK
|
|
263
288
|
end
|
264
289
|
|
265
290
|
def create_action_message message_type, object_type, properties, action
|
266
|
-
properties =
|
291
|
+
properties = Array.wrap(properties)
|
267
292
|
{
|
268
293
|
'Action' => action,
|
269
294
|
message_type => {
|
@@ -295,14 +320,29 @@ module FuelSDK
|
|
295
320
|
}
|
296
321
|
end
|
297
322
|
|
298
|
-
def
|
299
|
-
properties
|
300
|
-
|
323
|
+
def format_dataextension_cud_properties properties
|
324
|
+
Array.wrap(properties).each do |p|
|
325
|
+
formated_attrs = []
|
326
|
+
p.each do |k, v|
|
327
|
+
unless k == 'CustomerKey'
|
328
|
+
p.delete k
|
329
|
+
attrs = FuelSDK.format_name_value_pairs k => v
|
330
|
+
formated_attrs.concat attrs
|
331
|
+
end
|
332
|
+
end
|
333
|
+
unless formated_attrs.blank?
|
334
|
+
p['Properties'] ||= {}
|
335
|
+
(p['Properties']['Property'] ||= []).concat formated_attrs
|
336
|
+
end
|
337
|
+
end
|
338
|
+
end
|
301
339
|
|
302
|
-
|
303
|
-
|
304
|
-
|
340
|
+
def is_a_dataextension? object_type
|
341
|
+
object_type == 'DataExtensionObject'
|
342
|
+
end
|
305
343
|
|
344
|
+
def format_object_cud_properties object_type, properties
|
345
|
+
type_attrs = get_editable_properties object_type
|
306
346
|
properties.each do |p|
|
307
347
|
formated_attrs = []
|
308
348
|
p.each do |k, v|
|
@@ -316,6 +356,18 @@ module FuelSDK
|
|
316
356
|
end
|
317
357
|
end
|
318
358
|
|
359
|
+
def normalize_properties_for_cud object_type, properties
|
360
|
+
properties = Array.wrap(properties)
|
361
|
+
raise 'Object properties must be a Hash' unless properties.first.kind_of? Hash
|
362
|
+
|
363
|
+
if is_a_dataextension? object_type
|
364
|
+
format_dataextension_cud_properties properties
|
365
|
+
else
|
366
|
+
format_object_cud_properties object_type, properties
|
367
|
+
end
|
368
|
+
|
369
|
+
end
|
370
|
+
|
319
371
|
private
|
320
372
|
|
321
373
|
def soap_cud action, object_type, properties
|
data/lib/fuelsdk/version.rb
CHANGED
data/spec/array_spec.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Array do
|
4
|
+
|
5
|
+
it '#self.wrap returns subject wrapped in an array' do
|
6
|
+
expect(Array.wrap(1)).to eq([1])
|
7
|
+
end
|
8
|
+
|
9
|
+
it '#self.wrap returns subject as is when already wrapped' do
|
10
|
+
expect(Array.wrap([1])).to eq([1])
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FuelSDK::Soap do
|
4
|
+
|
5
|
+
let(:client) { FuelSDK::Client.new }
|
6
|
+
|
7
|
+
subject { client }
|
8
|
+
|
9
|
+
describe '#format_cud_properties_for_dataextension' do
|
10
|
+
let(:de_properties) {
|
11
|
+
[{'CustomerKey' => 'Orders', 'total' => 1}]
|
12
|
+
}
|
13
|
+
it 'leaves CustomerKey alone an puts other attributes in name value pairs under Properies' do
|
14
|
+
expect(client.format_dataextension_cud_properties de_properties).to eq([{
|
15
|
+
'CustomerKey' => 'Orders',
|
16
|
+
'Properties' => {'Property' => [{'Name' => 'total', 'Value' => 1}]}
|
17
|
+
}])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fuelsdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -196,6 +196,7 @@ files:
|
|
196
196
|
- samples/sample-triggeredsend.rb
|
197
197
|
- samples/sample-unsubevent.rb
|
198
198
|
- samples/sample_helper.rb
|
199
|
+
- spec/array_spec.rb
|
199
200
|
- spec/client_spec.rb
|
200
201
|
- spec/fuelsdk_response_spec.rb
|
201
202
|
- spec/helper_funcs_spec.rb
|
@@ -204,6 +205,7 @@ files:
|
|
204
205
|
- spec/rest_spec.rb
|
205
206
|
- spec/soap/configure_spec.rb
|
206
207
|
- spec/soap/cud_spec.rb
|
208
|
+
- spec/soap/dataextension_spec.rb
|
207
209
|
- spec/soap/describe_error_spec.rb
|
208
210
|
- spec/soap/get_spec.rb
|
209
211
|
- spec/soap/perform_spec.rb
|
@@ -254,6 +256,7 @@ test_files:
|
|
254
256
|
- samples/sample-triggeredsend.rb
|
255
257
|
- samples/sample-unsubevent.rb
|
256
258
|
- samples/sample_helper.rb
|
259
|
+
- spec/array_spec.rb
|
257
260
|
- spec/client_spec.rb
|
258
261
|
- spec/fuelsdk_response_spec.rb
|
259
262
|
- spec/helper_funcs_spec.rb
|
@@ -262,6 +265,7 @@ test_files:
|
|
262
265
|
- spec/rest_spec.rb
|
263
266
|
- spec/soap/configure_spec.rb
|
264
267
|
- spec/soap/cud_spec.rb
|
268
|
+
- spec/soap/dataextension_spec.rb
|
265
269
|
- spec/soap/describe_error_spec.rb
|
266
270
|
- spec/soap/get_spec.rb
|
267
271
|
- spec/soap/perform_spec.rb
|