MyPreciousRuby1 1.1.0
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 +7 -0
- data/.gitignore +28 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +92 -0
- data/Guardfile +8 -0
- data/LICENSE.md +13 -0
- data/README.md +139 -0
- data/Rakefile +1 -0
- data/lib/marketingcloudsdk.rb +74 -0
- data/lib/marketingcloudsdk/client.rb +296 -0
- data/lib/marketingcloudsdk/http_request.rb +118 -0
- data/lib/marketingcloudsdk/objects.rb +757 -0
- data/lib/marketingcloudsdk/rest.rb +118 -0
- data/lib/marketingcloudsdk/soap.rb +282 -0
- data/lib/marketingcloudsdk/targeting.rb +99 -0
- data/lib/marketingcloudsdk/utils.rb +47 -0
- data/lib/marketingcloudsdk/version.rb +39 -0
- data/lib/new.rb +1240 -0
- data/marketingcloudsdk.gemspec +30 -0
- data/samples/sample-AddSubscriberToList.rb +56 -0
- data/samples/sample-CreateAndStartDataExtensionImport.rb +29 -0
- data/samples/sample-CreateAndStartListImport.rb +27 -0
- data/samples/sample-CreateContentAreas.rb +48 -0
- data/samples/sample-CreateDataExtensions.rb +54 -0
- data/samples/sample-CreateProfileAttributes.rb +48 -0
- data/samples/sample-SendEmailToDataExtension.rb +23 -0
- data/samples/sample-SendEmailToList.rb +23 -0
- data/samples/sample-SendTriggeredSends.rb +30 -0
- data/samples/sample-bounceevent.rb +70 -0
- data/samples/sample-campaign.rb +211 -0
- data/samples/sample-clickevent.rb +71 -0
- data/samples/sample-contentarea.rb +122 -0
- data/samples/sample-dataextension.rb +209 -0
- data/samples/sample-directverb.rb +54 -0
- data/samples/sample-email.rb +122 -0
- data/samples/sample-email.senddefinition.rb +134 -0
- data/samples/sample-folder.rb +143 -0
- data/samples/sample-import.rb +103 -0
- data/samples/sample-list.rb +105 -0
- data/samples/sample-list.subscriber.rb +97 -0
- data/samples/sample-openevent.rb +70 -0
- data/samples/sample-profileattribute.rb +56 -0
- data/samples/sample-sentevent.rb +70 -0
- data/samples/sample-subscriber.rb +135 -0
- data/samples/sample-triggeredsend.rb +129 -0
- data/samples/sample-unsubevent.rb +72 -0
- data/samples/sample_helper.rb.template +10 -0
- data/spec/client_spec.rb +218 -0
- data/spec/default_values_fallback_spec.rb +30 -0
- data/spec/helper_funcs_spec.rb +11 -0
- data/spec/http_request_spec.rb +61 -0
- data/spec/objects_helper_spec.rb +32 -0
- data/spec/objects_spec.rb +484 -0
- data/spec/rest_spec.rb +48 -0
- data/spec/soap_spec.rb +140 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/targeting_spec.rb +44 -0
- metadata +262 -0
@@ -0,0 +1,211 @@
|
|
1
|
+
require 'marketingcloudsdk'
|
2
|
+
require_relative 'sample_helper'
|
3
|
+
|
4
|
+
begin
|
5
|
+
stubObj = MarketingCloudSDK::Client.new auth
|
6
|
+
|
7
|
+
# Create List
|
8
|
+
p '>>> Create List'
|
9
|
+
postList = MarketingCloudSDK::List.new
|
10
|
+
postList.authStub = stubObj
|
11
|
+
postList.props = {"ListName" => 'RubyAssetList', "Description" => "This list was created with the RubySDK", "Type" => "Private" }
|
12
|
+
postResponse = postList.post
|
13
|
+
p 'Post Status: ' + postResponse.status.to_s
|
14
|
+
p 'Code: ' + postResponse.code.to_s
|
15
|
+
p 'Message: ' + postResponse.message.to_s
|
16
|
+
p 'Result Count: ' + postResponse.results.length.to_s
|
17
|
+
p 'Results: ' + postResponse.results.inspect
|
18
|
+
|
19
|
+
raise 'Failure creating list for asset' unless postResponse.success?
|
20
|
+
|
21
|
+
# In order for this sample to run, it needs to have an asset that it can associate the campaign to
|
22
|
+
ExampleAssetType = "LIST"
|
23
|
+
ExampleAssetItemID = postResponse.results[0][:new_id]
|
24
|
+
|
25
|
+
# Retrieve all Campaigns
|
26
|
+
p '>>> Retrieve all Campaigns'
|
27
|
+
getCamp = MarketingCloudSDK::Campaign.new
|
28
|
+
getCamp.authStub = stubObj
|
29
|
+
getResponse = getCamp.get
|
30
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
31
|
+
p 'Code: ' + getResponse.code.to_s
|
32
|
+
p 'Message: ' + getResponse.message.to_s
|
33
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
34
|
+
p "Results: #{getResponse.results}"
|
35
|
+
p 'Results(Items) Length: ' + getResponse.results['items'].length.to_s
|
36
|
+
p '-----------------------------'
|
37
|
+
|
38
|
+
raise 'Failure retrieving campaigns' unless getResponse.success?
|
39
|
+
|
40
|
+
while getResponse.more? do
|
41
|
+
p '>>> Continue Retrieve all Campaigns with GetMoreResults'
|
42
|
+
getResponse = getCamp.continue
|
43
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
44
|
+
p 'Code: ' + getResponse.code.to_s
|
45
|
+
p 'Message: ' + getResponse.message.to_s
|
46
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
47
|
+
p 'Results(Items) Length: ' + getResponse.results['items'].length.to_s
|
48
|
+
end
|
49
|
+
|
50
|
+
# Create a new Campaign
|
51
|
+
p '>>> Create a new Campaign'
|
52
|
+
postCamp = MarketingCloudSDK::Campaign.new
|
53
|
+
postCamp.authStub = stubObj
|
54
|
+
postCamp.props = {"name" => "RubySDKCreatedForTest1", "description"=> "RubySDKCreatedForTest", "color"=>"FF9933", "favorite"=>"false"}
|
55
|
+
postResponse = postCamp.post
|
56
|
+
p 'Post Status: ' + postResponse.status.to_s
|
57
|
+
p 'Code: ' + postResponse.code.to_s
|
58
|
+
p 'Message: ' + postResponse.message.to_s
|
59
|
+
p 'Results: ' + postResponse.results.to_json
|
60
|
+
p '-----------------------------'
|
61
|
+
|
62
|
+
raise 'Failure creating campaign' unless postResponse.success?
|
63
|
+
|
64
|
+
IDOfpostCampaign = postResponse.results['id']
|
65
|
+
|
66
|
+
# Retrieve the new Campaign
|
67
|
+
p '>>> Retrieve the new Campaign'
|
68
|
+
getCamp = MarketingCloudSDK::Campaign.new
|
69
|
+
getCamp.authStub = stubObj
|
70
|
+
getCamp.props = {"id" => IDOfpostCampaign}
|
71
|
+
getResponse = getCamp.get
|
72
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
73
|
+
p 'Code: ' + getResponse.code.to_s
|
74
|
+
p 'Message: ' + getResponse.message.to_s
|
75
|
+
p 'Results: ' + getResponse.results.to_json
|
76
|
+
p '-----------------------------'
|
77
|
+
|
78
|
+
raise 'Failure retrieving campaign' unless getResponse.success?
|
79
|
+
|
80
|
+
# Update the new Campaign
|
81
|
+
p '>>> Update the new Campaign'
|
82
|
+
patchCamp = MarketingCloudSDK::Campaign.new
|
83
|
+
patchCamp.authStub = stubObj
|
84
|
+
patchCamp.props = {"id"=> IDOfpostCampaign, "name" => "RubySDKCreated-Updated!"}
|
85
|
+
patchResponse = patchCamp.patch
|
86
|
+
p 'Patch Status: ' + patchResponse.status.to_s
|
87
|
+
p 'Code: ' + patchResponse.code.to_s
|
88
|
+
p 'Message: ' + patchResponse.message.to_s
|
89
|
+
p 'Results: ' + patchResponse.results.to_json
|
90
|
+
p '-----------------------------'
|
91
|
+
|
92
|
+
raise 'Failure updating campaign' unless patchResponse.success?
|
93
|
+
|
94
|
+
# Retrieve the updated Campaign
|
95
|
+
p '>>> Retrieve the updated Campaign'
|
96
|
+
getCamp = MarketingCloudSDK::Campaign.new
|
97
|
+
getCamp.authStub = stubObj
|
98
|
+
getCamp.props = {"id" => IDOfpostCampaign}
|
99
|
+
getResponse = getCamp.get
|
100
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
101
|
+
p 'Code: ' + getResponse.code.to_s
|
102
|
+
p 'Message: ' + getResponse.message.to_s
|
103
|
+
p 'Results: ' + getResponse.results.to_json
|
104
|
+
p '-----------------------------'
|
105
|
+
|
106
|
+
raise 'Failure retrieving campaign' unless getResponse.success?
|
107
|
+
|
108
|
+
# Create a new Campaign Asset
|
109
|
+
p '>>> Create a new Campaign Asset'
|
110
|
+
postCampAsset = MarketingCloudSDK::Campaign::Asset.new
|
111
|
+
postCampAsset.authStub = stubObj
|
112
|
+
postCampAsset.props = {"id" => IDOfpostCampaign, "ids"=> [ExampleAssetItemID], "type"=> ExampleAssetType}
|
113
|
+
postResponse = postCampAsset.post
|
114
|
+
p 'Post Status: ' + postResponse.status.to_s
|
115
|
+
p 'Code: ' + postResponse.code.to_s
|
116
|
+
p 'Message: ' + postResponse.message.to_s
|
117
|
+
p 'Results: ' + postResponse.results.to_json
|
118
|
+
p '-----------------------------'
|
119
|
+
|
120
|
+
raise 'Failure creating campaign assets' unless postResponse.success?
|
121
|
+
|
122
|
+
IDOfpostCampaignAsset = postResponse.results[0]['id']
|
123
|
+
|
124
|
+
# Retrieve all Campaign Asset for a campaign
|
125
|
+
p '>>> Retrieve all Campaign Asset for a Campaign'
|
126
|
+
getCampAsset = MarketingCloudSDK::Campaign::Asset.new
|
127
|
+
getCampAsset.authStub = stubObj
|
128
|
+
getCampAsset.props = {"id" => IDOfpostCampaign}
|
129
|
+
getResponse = getCampAsset.get
|
130
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
131
|
+
p 'Code: ' + getResponse.code.to_s
|
132
|
+
p 'Message: ' + getResponse.message.to_s
|
133
|
+
p 'Results: ' + getResponse.results.inspect
|
134
|
+
p '-----------------------------'
|
135
|
+
|
136
|
+
raise 'Failure retrieving campaign assets' unless getResponse.success?
|
137
|
+
|
138
|
+
# Retrieve a single new Campaign Asset
|
139
|
+
p '>>> Retrieve a single new Campaign Asset'
|
140
|
+
getCampAsset = MarketingCloudSDK::Campaign::Asset.new
|
141
|
+
getCampAsset.authStub = stubObj
|
142
|
+
getCampAsset.props = {"id" => IDOfpostCampaign, "assetId" => IDOfpostCampaignAsset}
|
143
|
+
getResponse = getCampAsset.get
|
144
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
145
|
+
p 'Code: ' + getResponse.code.to_s
|
146
|
+
p 'Message: ' + getResponse.message.to_s
|
147
|
+
p 'Results: ' + getResponse.results.inspect
|
148
|
+
p '-----------------------------'
|
149
|
+
|
150
|
+
raise 'Failure retrieving campaign asset' unless getResponse.success?
|
151
|
+
|
152
|
+
# Delete the new Campaign Asset
|
153
|
+
p '>>> Delete the new Campaign Asset'
|
154
|
+
deleteCampAsset = MarketingCloudSDK::Campaign::Asset.new
|
155
|
+
deleteCampAsset.authStub = stubObj
|
156
|
+
deleteCampAsset.props = {"id" => IDOfpostCampaign, "assetId"=> IDOfpostCampaignAsset}
|
157
|
+
deleteResponse = deleteCampAsset.delete
|
158
|
+
p 'Delete Status: ' + deleteResponse.status.to_s
|
159
|
+
p 'Code: ' + deleteResponse.code.to_s
|
160
|
+
p 'Message: ' + deleteResponse.message.to_s
|
161
|
+
p 'Results: ' + deleteResponse.results.to_json
|
162
|
+
p '-----------------------------'
|
163
|
+
|
164
|
+
raise 'Failure deleting campaign asset' unless deleteResponse.success?
|
165
|
+
|
166
|
+
# Get a single a new Campaign Asset to confirm deletion
|
167
|
+
p '>>> Get a single a new Campaign Asset to confirm deletion'
|
168
|
+
getCampAsset = MarketingCloudSDK::Campaign::Asset.new
|
169
|
+
getCampAsset.authStub = stubObj
|
170
|
+
getCampAsset.props = {"id" => IDOfpostCampaign}
|
171
|
+
getResponse = getCampAsset.get
|
172
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
173
|
+
p 'Code: ' + getResponse.code.to_s
|
174
|
+
p 'Message: ' + getResponse.message.to_s
|
175
|
+
p 'Results: ' + getResponse.results.inspect
|
176
|
+
p '-----------------------------'
|
177
|
+
|
178
|
+
raise 'Failure retrieving campaign asset' unless getResponse.success?
|
179
|
+
raise 'Failure retrieving campaign asset' unless getResponse.results['totalCount'] == 0
|
180
|
+
|
181
|
+
rescue => e
|
182
|
+
p "Caught exception: #{e.message}"
|
183
|
+
p e.backtrace
|
184
|
+
|
185
|
+
ensure
|
186
|
+
|
187
|
+
# Delete the new Campaign
|
188
|
+
p '>>> Delete the new Campaign'
|
189
|
+
deleteCamp = MarketingCloudSDK::Campaign.new
|
190
|
+
deleteCamp.authStub = stubObj
|
191
|
+
deleteCamp.props = {"id"=> IDOfpostCampaign}
|
192
|
+
deleteResponse = deleteCamp.delete
|
193
|
+
p 'Delete Status: ' + deleteResponse.status.to_s
|
194
|
+
p 'Code: ' + deleteResponse.code.to_s
|
195
|
+
p 'Message: ' + deleteResponse.message.to_s
|
196
|
+
p 'Results: ' + deleteResponse.results.to_json
|
197
|
+
p '-----------------------------'
|
198
|
+
|
199
|
+
raise 'Failure deleting campaign asset' unless deleteResponse.success?
|
200
|
+
|
201
|
+
p '>>> Delete List'
|
202
|
+
deleteSub = MarketingCloudSDK::List.new()
|
203
|
+
deleteSub.authStub = stubObj
|
204
|
+
deleteSub.props = {"ID" => ExampleAssetItemID}
|
205
|
+
deleteResponse = deleteSub.delete
|
206
|
+
p 'Delete Status: ' + deleteResponse.status.to_s
|
207
|
+
p 'Code: ' + deleteResponse.code.to_s
|
208
|
+
p 'Message: ' + deleteResponse.message.to_s
|
209
|
+
p 'Results Length: ' + deleteResponse.results.length.to_s
|
210
|
+
p 'Results: ' + deleteResponse.results.to_s
|
211
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'marketingcloudsdk'
|
2
|
+
require_relative 'sample_helper'
|
3
|
+
|
4
|
+
begin
|
5
|
+
stubObj = MarketingCloudSDK::Client.new auth
|
6
|
+
|
7
|
+
## Modify the date below to reduce the number of results returned from the request
|
8
|
+
## Setting this too far in the past could result in a very large response size
|
9
|
+
retrieveDate = '2013-01-15T13:00:00.000'
|
10
|
+
|
11
|
+
p '>>> Retrieve Filtered ClickEvents with GetMoreResults'
|
12
|
+
getClickEvent = MarketingCloudSDK::ClickEvent.new()
|
13
|
+
getClickEvent.authStub = stubObj
|
14
|
+
getClickEvent.props = ["SendID","SubscriberKey","EventDate","Client.ID","EventType","BatchID","TriggeredSendDefinitionObjectID","PartnerKey"]
|
15
|
+
getClickEvent.filter = {'Property' => 'EventDate','SimpleOperator' => 'greaterThan','DateValue' => retrieveDate}
|
16
|
+
getResponse = getClickEvent.get
|
17
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
18
|
+
p 'Code: ' + getResponse.code.to_s
|
19
|
+
p 'Message: ' + getResponse.message.to_s
|
20
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
21
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
22
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
23
|
+
# Since this could potentially return a large number of results, we do not want to print the results
|
24
|
+
#p 'Results: ' + getResponse.results.to_s
|
25
|
+
#
|
26
|
+
raise 'Failure retrieving click events' unless getResponse.success?
|
27
|
+
|
28
|
+
while getResponse.more? do
|
29
|
+
p '>>> Continue Retrieve Filtered ClickEvents with GetMoreResults'
|
30
|
+
getResponse = getClickEvent.continue
|
31
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
32
|
+
p 'Code: ' + getResponse.code.to_s
|
33
|
+
p 'Message: ' + getResponse.message.to_s
|
34
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
35
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
36
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
37
|
+
end
|
38
|
+
|
39
|
+
# The following request could potentially bring back large amounts of data if run against a production account
|
40
|
+
=begin
|
41
|
+
p '>>> Retrieve All ClickEvents with GetMoreResults'
|
42
|
+
getClickEvent = MarketingCloudSDK::ClickEvent.new()
|
43
|
+
getClickEvent.authStub = stubObj
|
44
|
+
getClickEvent.props = ["SendID","SubscriberKey","EventDate","Client.ID","EventType","BatchID","TriggeredSendDefinitionObjectID","PartnerKey"]
|
45
|
+
getResponse = getClickEvent.get
|
46
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
47
|
+
p 'Code: ' + getResponse.code.to_s
|
48
|
+
p 'Message: ' + getResponse.message.to_s
|
49
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
50
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
51
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
52
|
+
# Since this could potentially return a large number of results, we do not want to print the results
|
53
|
+
#p 'Results: ' + getResponse.results.to_s
|
54
|
+
|
55
|
+
while getResponse.more? do
|
56
|
+
p '>>> Continue Retrieve All ClickEvents with GetMoreResults'
|
57
|
+
getResponse = getClickEvent.continue
|
58
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
59
|
+
p 'Code: ' + getResponse.code.to_s
|
60
|
+
p 'Message: ' + getResponse.message.to_s
|
61
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
62
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
63
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
64
|
+
end
|
65
|
+
=end
|
66
|
+
|
67
|
+
rescue => e
|
68
|
+
p "Caught exception: #{e.message}"
|
69
|
+
p e.backtrace
|
70
|
+
end
|
71
|
+
|
@@ -0,0 +1,122 @@
|
|
1
|
+
require 'marketingcloudsdk'
|
2
|
+
require_relative 'sample_helper'
|
3
|
+
|
4
|
+
begin
|
5
|
+
stubObj = MarketingCloudSDK::Client.new auth
|
6
|
+
|
7
|
+
# Retrieve All ContentArea with GetMoreResults
|
8
|
+
p '>>> Retrieve All ContentArea with GetMoreResults'
|
9
|
+
getContent = MarketingCloudSDK::ContentArea.new()
|
10
|
+
getContent.authStub = stubObj
|
11
|
+
getContent.props = ["RowObjectID","ObjectID","ID","CustomerKey","Client.ID","ModifiedDate","CreatedDate","CategoryID","Name","Layout","IsDynamicContent","Content","IsSurvey","IsBlank","Key"]
|
12
|
+
getResponse = getContent.get
|
13
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
14
|
+
p 'Code: ' + getResponse.code.to_s
|
15
|
+
p 'Message: ' + getResponse.message.to_s
|
16
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
17
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
18
|
+
#p 'Results: ' + getResponse.results.to_s
|
19
|
+
raise 'Failure retrieving contentarea' unless getResponse.success?
|
20
|
+
|
21
|
+
while getResponse.more? do
|
22
|
+
p '>>> Continue Retrieve All ContentArea with GetMoreResults'
|
23
|
+
getResponse = getContent.continue
|
24
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
25
|
+
p 'Code: ' + getResponse.code.to_s
|
26
|
+
p 'Message: ' + getResponse.message.to_s
|
27
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
28
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
29
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
30
|
+
end
|
31
|
+
|
32
|
+
NameOfTestContentArea = "RubySDKContentArea"
|
33
|
+
|
34
|
+
# Create ContentArea
|
35
|
+
p '>>> Create ContentArea'
|
36
|
+
postContent = MarketingCloudSDK::ContentArea.new
|
37
|
+
postContent.authStub = stubObj
|
38
|
+
postContent.props = {"CustomerKey" => NameOfTestContentArea, "Name"=>NameOfTestContentArea, "Content"=> "<b>Some HTML Content Goes here</b>"}
|
39
|
+
postResponse = postContent.post
|
40
|
+
p 'Post Status: ' + postResponse.status.to_s
|
41
|
+
p 'Code: ' + postResponse.code.to_s
|
42
|
+
p 'Message: ' + postResponse.message.to_s
|
43
|
+
p 'Result Count: ' + postResponse.results.length.to_s
|
44
|
+
p 'Results: ' + postResponse.results.inspect
|
45
|
+
raise 'Failure creating contentarea' unless postResponse.success?
|
46
|
+
|
47
|
+
# Retrieve newly created ContentArea
|
48
|
+
p '>>> Retrieve newly created ContentArea'
|
49
|
+
getContent = MarketingCloudSDK::ContentArea.new()
|
50
|
+
getContent.authStub = stubObj
|
51
|
+
getContent.props = ["RowObjectID","ObjectID","ID","CustomerKey","Client.ID","ModifiedDate","CreatedDate","CategoryID","Name","Layout","IsDynamicContent","Content","IsSurvey","IsBlank","Key"]
|
52
|
+
getContent.filter = {'Property' => 'CustomerKey','SimpleOperator' => 'equals','Value' => NameOfTestContentArea}
|
53
|
+
getResponse = getContent.get
|
54
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
55
|
+
p 'Code: ' + getResponse.code.to_s
|
56
|
+
p 'Message: ' + getResponse.message.to_s
|
57
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
58
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
59
|
+
p 'Results: ' + getResponse.results.to_s
|
60
|
+
raise 'Failure retrieving contentarea' unless getResponse.success?
|
61
|
+
|
62
|
+
# Update ContentArea
|
63
|
+
p '>>> Update ContentArea'
|
64
|
+
patchContent = MarketingCloudSDK::ContentArea.new
|
65
|
+
patchContent.authStub = stubObj
|
66
|
+
patchContent.props = {"CustomerKey" => NameOfTestContentArea, "Name"=>NameOfTestContentArea, "Content"=> "<b>Some HTML Content Goes here. NOW WITH NEW CONTENT</b>"}
|
67
|
+
patchResponse = patchContent.patch
|
68
|
+
p 'Patch Status: ' + patchResponse.status.to_s
|
69
|
+
p 'Code: ' + patchResponse.code.to_s
|
70
|
+
p 'Message: ' + patchResponse.message.to_s
|
71
|
+
p 'Result Count: ' + patchResponse.results.length.to_s
|
72
|
+
p 'Results: ' + patchResponse.results.inspect
|
73
|
+
raise 'Failure updating contentarea' unless patchResponse.success?
|
74
|
+
|
75
|
+
# Retrieve updated ContentArea
|
76
|
+
p '>>> Retrieve updated ContentArea'
|
77
|
+
getContent = MarketingCloudSDK::ContentArea.new()
|
78
|
+
getContent.authStub = stubObj
|
79
|
+
getContent.props = ["RowObjectID","ObjectID","ID","CustomerKey","Client.ID","ModifiedDate","CreatedDate","CategoryID","Name","Layout","IsDynamicContent","Content","IsSurvey","IsBlank","Key"]
|
80
|
+
getContent.filter = {'Property' => 'CustomerKey','SimpleOperator' => 'equals','Value' => NameOfTestContentArea}
|
81
|
+
getResponse = getContent.get
|
82
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
83
|
+
p 'Code: ' + getResponse.code.to_s
|
84
|
+
p 'Message: ' + getResponse.message.to_s
|
85
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
86
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
87
|
+
p 'Results: ' + getResponse.results.to_s
|
88
|
+
raise 'Failure retrieving contentarea' unless getResponse.success?
|
89
|
+
|
90
|
+
# Delete ContentArea
|
91
|
+
p '>>> Delete ContentArea'
|
92
|
+
deleteContent = MarketingCloudSDK::ContentArea.new
|
93
|
+
deleteContent.authStub = stubObj
|
94
|
+
deleteContent.props = {"CustomerKey" => NameOfTestContentArea, "Name"=>NameOfTestContentArea, "Content"=> "<b>Some HTML Content Goes here. NOW WITH NEW CONTENT</b>"}
|
95
|
+
deleteResponse = deleteContent.delete
|
96
|
+
p 'Delete Status: ' + deleteResponse.status.to_s
|
97
|
+
p 'Code: ' + deleteResponse.code.to_s
|
98
|
+
p 'Message: ' + deleteResponse.message.to_s
|
99
|
+
p 'Result Count: ' + deleteResponse.results.length.to_s
|
100
|
+
p 'Results: ' + deleteResponse.results.inspect
|
101
|
+
raise 'Failure deleting contentarea' unless deleteResponse.success?
|
102
|
+
|
103
|
+
# Retrieve ContentArea to confirm deletion
|
104
|
+
p '>>> Retrieve ContentArea to confirm deletion'
|
105
|
+
getContent = MarketingCloudSDK::ContentArea.new()
|
106
|
+
getContent.authStub = stubObj
|
107
|
+
getContent.props = ["RowObjectID","ObjectID","ID","CustomerKey","Client.ID","ModifiedDate","CreatedDate","CategoryID","Name","Layout","IsDynamicContent","Content","IsSurvey","IsBlank","Key"]
|
108
|
+
getContent.filter = {'Property' => 'CustomerKey','SimpleOperator' => 'equals','Value' => NameOfTestContentArea}
|
109
|
+
getResponse = getContent.get
|
110
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
111
|
+
p 'Code: ' + getResponse.code.to_s
|
112
|
+
p 'Message: ' + getResponse.message.to_s
|
113
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
114
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
115
|
+
p 'Results: ' + getResponse.results.to_s
|
116
|
+
raise 'Failure retrieving contentarea' unless getResponse.success?
|
117
|
+
|
118
|
+
rescue => e
|
119
|
+
p "Caught exception: #{e.message}"
|
120
|
+
p e.backtrace
|
121
|
+
end
|
122
|
+
|
@@ -0,0 +1,209 @@
|
|
1
|
+
require 'marketingcloudsdk'
|
2
|
+
require_relative 'sample_helper'
|
3
|
+
require 'pry'
|
4
|
+
|
5
|
+
begin
|
6
|
+
stubObj = ET_Client.new auth
|
7
|
+
|
8
|
+
# Specify a name for the data extension that will be used for testing
|
9
|
+
# Note: Name and CustomerKey will be the same value
|
10
|
+
# WARNING: Data Extension will be deleted so don't use the name of a
|
11
|
+
# production data extension
|
12
|
+
NameOfDE = "ThisWillBeDeleted-Testz"
|
13
|
+
|
14
|
+
# Get all of the DataExtensions in an Account
|
15
|
+
p '>>> Get all of the DataExtensions in an Account'
|
16
|
+
de = ET_DataExtension.new
|
17
|
+
de.authStub = stubObj
|
18
|
+
de.props = ["CustomerKey", "Name"]
|
19
|
+
getResponse = de.get
|
20
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
21
|
+
p 'Code: ' + getResponse.code.to_s
|
22
|
+
p 'Message: ' + getResponse.message.to_s
|
23
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
24
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
25
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
26
|
+
#p 'Results: ' + getResponse.results.to_s
|
27
|
+
raise 'Failure retrieving data extensions' unless getResponse.success?
|
28
|
+
|
29
|
+
# Create Data Extension
|
30
|
+
p '>>> Create Data Extension'
|
31
|
+
de2 = ET_DataExtension.new
|
32
|
+
de2.authStub = stubObj
|
33
|
+
de2.props = {"Name" => NameOfDE,"CustomerKey" => NameOfDE}
|
34
|
+
de2.columns = [{"Name" => "Name", "FieldType" => "Text", "IsPrimaryKey" => "true", "MaxLength" => "100", "IsRequired" => "true"},
|
35
|
+
{"Name" => "OtherField", "FieldType" => "Text"}]
|
36
|
+
postResponse = de2.post
|
37
|
+
p 'Post Status: ' + postResponse.status.to_s
|
38
|
+
p 'Code: ' + postResponse.code.to_s
|
39
|
+
p 'Message: ' + postResponse.message.to_s
|
40
|
+
p 'Results: ' + postResponse.results.inspect
|
41
|
+
raise 'Failure creating data extension' unless postResponse.success?
|
42
|
+
|
43
|
+
# Update DE to add new field
|
44
|
+
p '>>> Update DE to add new field'
|
45
|
+
de3 = ET_DataExtension.new
|
46
|
+
de3.authStub = stubObj
|
47
|
+
de3.props = {"Name" => NameOfDE,"CustomerKey" => NameOfDE}
|
48
|
+
de3.columns = [{"Name" => "AddedField", "FieldType" => "Text"}]
|
49
|
+
patchResponse = de3.patch
|
50
|
+
p 'Patch Status: ' + patchResponse.status.to_s
|
51
|
+
p 'Code: ' + patchResponse.code.to_s
|
52
|
+
p 'Message: ' + patchResponse.message.to_s
|
53
|
+
p 'Results: ' + patchResponse.results.inspect
|
54
|
+
raise 'Failure updating data extension' unless patchResponse.success?
|
55
|
+
|
56
|
+
# Retrieve all columns for data extension
|
57
|
+
p '>>> Retrieve all columns for data extension '
|
58
|
+
myDEColumn = ET_DataExtension::Column.new
|
59
|
+
myDEColumn.authStub = stubObj
|
60
|
+
myDEColumn.props = ["Name"]
|
61
|
+
myDEColumn.filter = {'Property' => 'CustomerKey','SimpleOperator' => 'equals','Value' => NameOfDE}
|
62
|
+
getResponse = myDEColumn.get
|
63
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
64
|
+
p 'Code: ' + getResponse.code.to_s
|
65
|
+
p 'Message: ' + getResponse.message.to_s
|
66
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
67
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
68
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
69
|
+
p 'Results: ' + getResponse.results.to_s
|
70
|
+
raise 'Failure retrieving data extension columns' unless getResponse.success?
|
71
|
+
raise 'Failure retrieving correct number of data extension columns' unless getResponse.results.count == 3
|
72
|
+
|
73
|
+
# Add a row to a data extension (using CustomerKey)
|
74
|
+
p '>>> Add a row to a data extension'
|
75
|
+
de4 = ET_DataExtension::Row.new
|
76
|
+
de4.CustomerKey = NameOfDE;
|
77
|
+
de4.authStub = stubObj
|
78
|
+
de4.props = {"Name" => "MAC3", "OtherField" => "Text3"}
|
79
|
+
postResponse = de4.post
|
80
|
+
p 'Post Status: ' + postResponse.status.to_s
|
81
|
+
p 'Code: ' + postResponse.code.to_s
|
82
|
+
p 'Message: ' + postResponse.message.to_s
|
83
|
+
p 'Results: ' + postResponse.results.inspect
|
84
|
+
raise 'Failure creating data extension row' unless postResponse.success?
|
85
|
+
|
86
|
+
# Add a row to a data extension (Using Name)
|
87
|
+
p '>>> Add a row to a data extension'
|
88
|
+
de4 = ET_DataExtension::Row.new
|
89
|
+
de4.authStub = stubObj
|
90
|
+
de4.Name = NameOfDE
|
91
|
+
de4.props = {"Name" => "MAC4", "OtherField" => "Text3"}
|
92
|
+
postResponse = de4.post
|
93
|
+
p 'Post Status: ' + postResponse.status.to_s
|
94
|
+
p 'Code: ' + postResponse.code.to_s
|
95
|
+
p 'Message: ' + postResponse.message.to_s
|
96
|
+
p 'Results: ' + postResponse.results.inspect
|
97
|
+
raise 'Failure creating data extension row' unless postResponse.success?
|
98
|
+
|
99
|
+
# Retrieve all rows
|
100
|
+
p '>>> Retrieve all rows'
|
101
|
+
row = ET_DataExtension::Row.new()
|
102
|
+
row.authStub = stubObj
|
103
|
+
row.CustomerKey = NameOfDE
|
104
|
+
row.props = ["Name","OtherField"]
|
105
|
+
getResponse = row.get
|
106
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
107
|
+
p 'Code: ' + getResponse.code.to_s
|
108
|
+
p 'Message: ' + getResponse.message.to_s
|
109
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
110
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
111
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
112
|
+
p 'Results: ' + getResponse.results.to_s
|
113
|
+
raise 'Failure retrieving data extension rows' unless getResponse.success?
|
114
|
+
raise 'Failure retrieving correct number of data extension rows' unless getResponse.results.count == 2
|
115
|
+
|
116
|
+
# Update a row in a data extension
|
117
|
+
p '>>> Update a row in a data extension'
|
118
|
+
de4 = ET_DataExtension::Row.new
|
119
|
+
de4.authStub = stubObj
|
120
|
+
de4.CustomerKey = NameOfDE
|
121
|
+
de4.props = {"Name" => "MAC3", "OtherField" => "UPDATED!"}
|
122
|
+
patchResponse = de4.patch
|
123
|
+
p 'Patch Status: ' + patchResponse.status.to_s
|
124
|
+
p 'Code: ' + patchResponse.code.to_s
|
125
|
+
p 'Message: ' + patchResponse.message.to_s
|
126
|
+
p 'Results: ' + patchResponse.results.inspect
|
127
|
+
raise 'Failure updating data extension row' unless patchResponse.success?
|
128
|
+
|
129
|
+
# Retrieve only updated row
|
130
|
+
p '>>> Retrieve only updated row'
|
131
|
+
row = ET_DataExtension::Row.new()
|
132
|
+
row.authStub = stubObj
|
133
|
+
row.CustomerKey = NameOfDE
|
134
|
+
row.props = ["Name","OtherField"]
|
135
|
+
row.filter = {'Property' => 'Name','SimpleOperator' => 'equals','Value' => 'MAC3'}
|
136
|
+
getResponse = row.get
|
137
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
138
|
+
p 'Code: ' + getResponse.code.to_s
|
139
|
+
p 'Message: ' + getResponse.message.to_s
|
140
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
141
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
142
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
143
|
+
p 'Results: ' + getResponse.results.to_s
|
144
|
+
raise 'Failure retrieving data extension rows' unless getResponse.success?
|
145
|
+
|
146
|
+
# Delete a row from a data extension
|
147
|
+
p '>>> Delete a row from a data extension'
|
148
|
+
de4 = ET_DataExtension::Row.new
|
149
|
+
de4.authStub = stubObj
|
150
|
+
de4.CustomerKey = NameOfDE
|
151
|
+
de4.props = {"Name" => "MAC3"}
|
152
|
+
deleteResponse = de4.delete
|
153
|
+
p 'Delete Status: ' + deleteResponse.status.to_s
|
154
|
+
p 'Code: ' + deleteResponse.code.to_s
|
155
|
+
p 'Message: ' + deleteResponse.message.to_s
|
156
|
+
p 'Results: ' + deleteResponse.results.inspect
|
157
|
+
raise 'Failure deleting data extension row' unless deleteResponse.success?
|
158
|
+
|
159
|
+
# Delete a Data Extension
|
160
|
+
p '>>> Delete a Data Extension'
|
161
|
+
de5 = ET_DataExtension.new
|
162
|
+
de5.authStub = stubObj
|
163
|
+
de5.props = {"Name" => NameOfDE,"CustomerKey" => NameOfDE}
|
164
|
+
delResponse = de5.delete
|
165
|
+
p 'Post Status: ' + delResponse.status.to_s
|
166
|
+
p 'Code: ' + delResponse.code.to_s
|
167
|
+
p 'Message: ' + delResponse.message.to_s
|
168
|
+
p 'Results: ' + delResponse.results.inspect
|
169
|
+
raise 'Failure deleting data extension' unless deleteResponse.success?
|
170
|
+
|
171
|
+
=begin
|
172
|
+
# Retrieve lots of rows with more?
|
173
|
+
p '>>> Retrieve lots of rows with more?'
|
174
|
+
row = ET_DataExtension::Row.new()
|
175
|
+
row.authStub = stubObj
|
176
|
+
row.Name = "zipstolong"
|
177
|
+
row.props = ["zip","latitude","longitude"]
|
178
|
+
getResponse = row.get
|
179
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
180
|
+
p 'Code: ' + getResponse.code.to_s
|
181
|
+
p 'Message: ' + getResponse.message.to_s
|
182
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
183
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
184
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
185
|
+
#p 'Results: ' + getResponse.results.to_s
|
186
|
+
raise 'Failure retrieving data extension rows' unless getResponse.success?
|
187
|
+
|
188
|
+
while getResponse.more? do
|
189
|
+
p '>>> Continue Retrieve lots of rows with more?'
|
190
|
+
getResponse = row.getMoreResults
|
191
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
192
|
+
p 'Code: ' + getResponse.code.to_s
|
193
|
+
p 'Message: ' + getResponse.message.to_s
|
194
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
195
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
196
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
197
|
+
end
|
198
|
+
=end
|
199
|
+
|
200
|
+
rescue => e
|
201
|
+
p "Caught exception: #{e.message}"
|
202
|
+
p e.backtrace
|
203
|
+
|
204
|
+
de5 = ET_DataExtension.new
|
205
|
+
de5.authStub = stubObj
|
206
|
+
de5.props = {"Name" => NameOfDE,"CustomerKey" => NameOfDE}
|
207
|
+
de5.delete
|
208
|
+
|
209
|
+
end
|