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,135 @@
|
|
1
|
+
require 'marketingcloudsdk'
|
2
|
+
require_relative 'sample_helper' # contains auth with credentials
|
3
|
+
|
4
|
+
begin
|
5
|
+
stubObj = MarketingCloudSDK::Client.new auth
|
6
|
+
|
7
|
+
# NOTE: These examples only work in accounts where the SubscriberKey functionality is not enabled
|
8
|
+
# SubscriberKey will need to be included in the props if that feature is enabled
|
9
|
+
|
10
|
+
SubscriberTestEmail = "RubySDKExample@jb.kevy.com"
|
11
|
+
|
12
|
+
# Create Subscriber
|
13
|
+
p '>>> Create Subscriber'
|
14
|
+
postSub = MarketingCloudSDK::Subscriber.new
|
15
|
+
postSub.authStub = stubObj
|
16
|
+
postSub.props = {"EmailAddress" => SubscriberTestEmail}
|
17
|
+
p '>>> Posting'
|
18
|
+
postResponse = postSub.post
|
19
|
+
p "Post Status: #{postResponse.success? ? 'Success' : 'Failure'}"
|
20
|
+
p 'Code: ' + postResponse.code.to_s
|
21
|
+
p 'Message: ' + postResponse.message.to_s
|
22
|
+
p 'Result Count: ' + postResponse.results.length.to_s
|
23
|
+
p 'Results: ' + postResponse.results.inspect
|
24
|
+
|
25
|
+
raise 'Failure creating subscriber' unless postResponse.success?
|
26
|
+
|
27
|
+
# Retrieve newly created Subscriber
|
28
|
+
p '>>> Retrieve newly created Subscriber'
|
29
|
+
getSub = MarketingCloudSDK::Subscriber.new()
|
30
|
+
getSub.authStub = stubObj
|
31
|
+
getSub.props = ["SubscriberKey", "EmailAddress", "Status"]
|
32
|
+
getSub.filter = {'Property' => 'SubscriberKey', 'SimpleOperator' => 'equals', 'Value' => SubscriberTestEmail}
|
33
|
+
getResponse = getSub.get
|
34
|
+
p "Retrieve Status: #{getResponse.success? ? 'Success' : 'Failure'}"
|
35
|
+
p 'Code: ' + getResponse.code.to_s
|
36
|
+
p 'Message: ' + getResponse.message.to_s
|
37
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
38
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
39
|
+
p 'Results: ' + getResponse.results.to_s
|
40
|
+
|
41
|
+
raise 'Failure retrieving subscriber' unless getResponse.success?
|
42
|
+
|
43
|
+
# Update Subscriber
|
44
|
+
p '>>> Update Subscriber'
|
45
|
+
patchSub = MarketingCloudSDK::Subscriber.new
|
46
|
+
patchSub.authStub = stubObj
|
47
|
+
patchSub.props = {"EmailAddress" => SubscriberTestEmail, "Status" => "Unsubscribed"}
|
48
|
+
patchResponse = patchSub.patch
|
49
|
+
p 'Patch Status: ' + patchResponse.status.to_s
|
50
|
+
p 'Code: ' + patchResponse.code.to_s
|
51
|
+
p 'Message: ' + patchResponse.message.to_s
|
52
|
+
p 'Result Count: ' + patchResponse.results.length.to_s
|
53
|
+
p 'Results: ' + patchResponse.results.inspect
|
54
|
+
|
55
|
+
raise 'Failure updating subscriber' unless patchResponse.success?
|
56
|
+
|
57
|
+
# Retrieve Subscriber that should have status unsubscribed now
|
58
|
+
p '>>> Retrieve Subscriber that should have status unsubscribed now'
|
59
|
+
getSub = MarketingCloudSDK::Subscriber.new()
|
60
|
+
getSub.authStub = stubObj
|
61
|
+
getSub.props = ["SubscriberKey", "EmailAddress", "Status"]
|
62
|
+
getSub.filter = {'Property' => 'SubscriberKey','SimpleOperator' => 'equals','Value' => SubscriberTestEmail};
|
63
|
+
getResponse = getSub.get
|
64
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
65
|
+
p 'Code: ' + getResponse.code.to_s
|
66
|
+
p 'Message: ' + getResponse.message.to_s
|
67
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
68
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
69
|
+
p 'Results: ' + getResponse.results.to_s
|
70
|
+
|
71
|
+
raise 'Failure retrieving subscriber' unless getResponse.success?
|
72
|
+
|
73
|
+
# Delete Subscriber
|
74
|
+
p '>>> Delete Subscriber'
|
75
|
+
deleteSub = MarketingCloudSDK::Subscriber.new()
|
76
|
+
deleteSub.authStub = stubObj
|
77
|
+
deleteSub.props = {"EmailAddress" => SubscriberTestEmail}
|
78
|
+
deleteResponse = deleteSub.delete
|
79
|
+
p 'Delete Status: ' + deleteResponse.status.to_s
|
80
|
+
p 'Code: ' + deleteResponse.code.to_s
|
81
|
+
p 'Message: ' + deleteResponse.message.to_s
|
82
|
+
p 'Results Length: ' + deleteResponse.results.length.to_s
|
83
|
+
p 'Results: ' + deleteResponse.results.to_s
|
84
|
+
|
85
|
+
raise 'Failure deleting subscriber' unless deleteResponse.success?
|
86
|
+
|
87
|
+
# Retrieve Subscriber to confirm deletion
|
88
|
+
p '>>> Retrieve Subscriber to confirm deletion'
|
89
|
+
getSub = MarketingCloudSDK::Subscriber.new()
|
90
|
+
getSub.authStub = stubObj
|
91
|
+
getSub.props = ["SubscriberKey", "EmailAddress", "Status"]
|
92
|
+
getSub.filter = {'Property' => 'SubscriberKey','SimpleOperator' => 'equals','Value' => SubscriberTestEmail};
|
93
|
+
getResponse = getSub.get
|
94
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
95
|
+
p 'Code: ' + getResponse.code.to_s
|
96
|
+
p 'Message: ' + getResponse.message.to_s
|
97
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
98
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
99
|
+
p 'Results: ' + getResponse.results.to_s
|
100
|
+
|
101
|
+
raise 'Failure retrieving subscriber' unless getResponse.success?
|
102
|
+
|
103
|
+
=begin
|
104
|
+
# Do not run the "Retrieve All Subscribers" request for testing if you have more than 100,000 records in your account as it will take a long time to complete.
|
105
|
+
|
106
|
+
# Retrieve All Subcribers with GetMoreResults
|
107
|
+
p '>>> Retrieve All Subcribers with GetMoreResults'
|
108
|
+
getSub = MarketingCloudSDK::Subscriber.new()
|
109
|
+
getSub.authStub = stubObj
|
110
|
+
getSub.props = ["SubscriberKey", "EmailAddress", "Status"]
|
111
|
+
getResponse = getSub.get
|
112
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
113
|
+
p 'Code: ' + getResponse.code.to_s
|
114
|
+
p 'Message: ' + getResponse.message.to_s
|
115
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
116
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
117
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
118
|
+
#p 'Results: ' + getResponse.results.to_s
|
119
|
+
|
120
|
+
while getResponse.more? do
|
121
|
+
p '>>> Continue Retrieve All Subcribers with GetMoreResults'
|
122
|
+
getResponse.continue
|
123
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
124
|
+
p 'Code: ' + getResponse.code.to_s
|
125
|
+
p 'Message: ' + getResponse.message.to_s
|
126
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
127
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
128
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
129
|
+
end
|
130
|
+
=end
|
131
|
+
|
132
|
+
rescue => e
|
133
|
+
p "Caught exception: #{e.message}"
|
134
|
+
p e.backtrace
|
135
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'marketingcloudsdk'
|
2
|
+
require 'securerandom'
|
3
|
+
require_relative 'sample_helper'
|
4
|
+
|
5
|
+
begin
|
6
|
+
stubObj = MarketingCloudSDK::Client.new auth
|
7
|
+
|
8
|
+
# Get all TriggeredSendDefinitions
|
9
|
+
p '>>> Get all TriggeredSendDefinitions'
|
10
|
+
getTS = MarketingCloudSDK::TriggeredSend.new
|
11
|
+
getTS.authStub = stubObj
|
12
|
+
getTS.props = ["CustomerKey", "Name", "TriggeredSendStatus"]
|
13
|
+
getResponse = getTS.get
|
14
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
15
|
+
p 'Code: ' + getResponse.code.to_s
|
16
|
+
p 'Message: ' + getResponse.message.to_s
|
17
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
18
|
+
p 'Results Count: ' + getResponse.results.length.to_s
|
19
|
+
#p 'Results: ' + getResponse.results.to_s
|
20
|
+
raise 'Failure retrieving triggersend' unless getResponse.success?
|
21
|
+
|
22
|
+
# Generate a unique identifier for the TriggeredSend customer key since they cannot be re-used even after deleted
|
23
|
+
TSNameForCreateThenDelete = SecureRandom.uuid
|
24
|
+
|
25
|
+
# Create a TriggeredSend Definition
|
26
|
+
p '>>> Create a TriggeredSend Definition'
|
27
|
+
postTrig = MarketingCloudSDK::TriggeredSend.new
|
28
|
+
postTrig.authStub = stubObj
|
29
|
+
postTrig.props = {'CustomerKey' => TSNameForCreateThenDelete,'Name' => TSNameForCreateThenDelete, 'Email' => {"ID"=>"3113962"}, "SendClassification"=> {"CustomerKey"=> "2240"}}
|
30
|
+
postResponse = postTrig.post
|
31
|
+
p 'Post Status: ' + postResponse.status.to_s
|
32
|
+
p 'Code: ' + postResponse.code.to_s
|
33
|
+
p 'Message: ' + postResponse.message.to_s
|
34
|
+
p 'Result Count: ' + postResponse.results.length.to_s
|
35
|
+
p 'Results: ' + postResponse.results.inspect
|
36
|
+
raise 'Failure creating triggersend' unless postResponse.success?
|
37
|
+
|
38
|
+
# Specify the name of a TriggeredSend that was setup for testing
|
39
|
+
# Do not use a production Triggered Send Definition
|
40
|
+
|
41
|
+
NameOfTestTS = "TEXTEXT"
|
42
|
+
|
43
|
+
# Pause a TriggeredSend
|
44
|
+
p '>>> Pause a TriggeredSend'
|
45
|
+
patchTrig = MarketingCloudSDK::TriggeredSend.new
|
46
|
+
patchTrig.authStub = stubObj
|
47
|
+
patchTrig.props = {"CustomerKey" => NameOfTestTS, "TriggeredSendStatus" =>"Inactive"}
|
48
|
+
patchResponse = patchTrig.patch
|
49
|
+
p 'Patch Status: ' + patchResponse.status.to_s
|
50
|
+
p 'Code: ' + patchResponse.code.to_s
|
51
|
+
p 'Message: ' + patchResponse.message.to_s
|
52
|
+
p 'Result Count: ' + patchResponse.results.length.to_s
|
53
|
+
p 'Results: ' + patchResponse.results.inspect
|
54
|
+
raise 'Failure updating triggersend' unless patchResponse.success?
|
55
|
+
|
56
|
+
# Retrieve Single TriggeredSend
|
57
|
+
p '>>> Retrieve Single TriggeredSend'
|
58
|
+
getTS = MarketingCloudSDK::TriggeredSend.new
|
59
|
+
getTS.authStub = stubObj
|
60
|
+
getTS.props = ["CustomerKey", "Name", "TriggeredSendStatus"]
|
61
|
+
getTS.filter = {'Property' => 'CustomerKey','SimpleOperator' => 'equals','Value' => NameOfTestTS}
|
62
|
+
getResponse = getTS.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 'Results Count: ' + getResponse.results.length.to_s
|
68
|
+
p 'Results: ' + getResponse.results.to_s
|
69
|
+
raise 'Failure retrieving triggersend' unless getResponse.success?
|
70
|
+
|
71
|
+
# Start a TriggeredSend by setting to Active
|
72
|
+
p '>>> Start a TriggeredSend by setting to Active'
|
73
|
+
patchTrig = MarketingCloudSDK::TriggeredSend.new
|
74
|
+
patchTrig.authStub = stubObj
|
75
|
+
patchTrig.props = {"CustomerKey" => NameOfTestTS, "TriggeredSendStatus" =>"Active"}
|
76
|
+
patchResponse = patchTrig.patch
|
77
|
+
p 'Patch Status: ' + patchResponse.status.to_s
|
78
|
+
p 'Code: ' + patchResponse.code.to_s
|
79
|
+
p 'Message: ' + patchResponse.message.to_s
|
80
|
+
p 'Result Count: ' + patchResponse.results.length.to_s
|
81
|
+
p 'Results: ' + patchResponse.results.inspect
|
82
|
+
raise 'Failure updating triggersend' unless patchResponse.success?
|
83
|
+
|
84
|
+
# Retrieve Single TriggeredSend After setting back to active
|
85
|
+
p '>>> Retrieve Single TriggeredSend After setting back to active'
|
86
|
+
getTS = MarketingCloudSDK::TriggeredSend.new
|
87
|
+
getTS.authStub = stubObj
|
88
|
+
getTS.props = ["CustomerKey", "Name", "TriggeredSendStatus"]
|
89
|
+
getTS.filter = {'Property' => 'CustomerKey','SimpleOperator' => 'equals','Value' => NameOfTestTS}
|
90
|
+
getResponse = getTS.get
|
91
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
92
|
+
p 'Code: ' + getResponse.code.to_s
|
93
|
+
p 'Message: ' + getResponse.message.to_s
|
94
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
95
|
+
p 'Results Count: ' + getResponse.results.length.to_s
|
96
|
+
p 'Results: ' + getResponse.results.to_s
|
97
|
+
raise 'Failure retrieving triggersend' unless getResponse.success?
|
98
|
+
|
99
|
+
# Send an email with TriggeredSend
|
100
|
+
p '>>> Send an email with TriggeredSend'
|
101
|
+
sendTrig = MarketingCloudSDK::TriggeredSend.new
|
102
|
+
sendTrig.authStub = stubObj
|
103
|
+
sendTrig.props = [{"CustomerKey" => NameOfTestTS, "Subscribers" => {"EmailAddress"=>"testing@bh.exacttarget.com", "SubscriberKey" => "testing@bh.exacttarget.com"}}]
|
104
|
+
sendResponse = sendTrig.send
|
105
|
+
p 'Send Status: ' + sendResponse.status.to_s
|
106
|
+
p 'Code: ' + sendResponse.code.to_s
|
107
|
+
p 'Message: ' + sendResponse.message.to_s
|
108
|
+
p 'Result Count: ' + sendResponse.results.length.to_s
|
109
|
+
p 'Results: ' + sendResponse.results.inspect
|
110
|
+
raise 'Failure sending triggersend' unless sendResponse.success?
|
111
|
+
|
112
|
+
|
113
|
+
# Delete a TriggeredSend Definition
|
114
|
+
p '>>> Delete a TriggeredSend Definition '
|
115
|
+
deleteTrig = MarketingCloudSDK::TriggeredSend.new
|
116
|
+
deleteTrig.authStub = stubObj
|
117
|
+
deleteTrig.props = {'CustomerKey' => TSNameForCreateThenDelete}
|
118
|
+
deleteResponse = deleteTrig.delete
|
119
|
+
p 'Delete Status: ' + deleteResponse.status.to_s
|
120
|
+
p 'Code: ' + deleteResponse.code.to_s
|
121
|
+
p 'Message: ' + deleteResponse.message.to_s
|
122
|
+
p 'Result Count: ' + deleteResponse.results.length.to_s
|
123
|
+
p 'Results: ' + deleteResponse.results.inspect
|
124
|
+
raise 'Failure deleting triggersend' unless deleteResponse.success?
|
125
|
+
|
126
|
+
rescue => e
|
127
|
+
p "Caught exception: #{e.message}"
|
128
|
+
p e.backtrace
|
129
|
+
end
|
@@ -0,0 +1,72 @@
|
|
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 UnsubEvents with GetMoreResults'
|
12
|
+
getUnsubEvent = MarketingCloudSDK::UnsubEvent.new()
|
13
|
+
getUnsubEvent.authStub = stubObj
|
14
|
+
getUnsubEvent.props = ["SendID","SubscriberKey","EventDate",
|
15
|
+
"Client.ID","EventType","BatchID","TriggeredSendDefinitionObjectID","PartnerKey"]
|
16
|
+
getUnsubEvent.filter = {'Property' => 'EventDate',
|
17
|
+
'SimpleOperator' => 'greaterThan','DateValue' => retrieveDate}
|
18
|
+
getResponse = getUnsubEvent.get
|
19
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
20
|
+
p 'Code: ' + getResponse.code.to_s
|
21
|
+
p 'Message: ' + getResponse.message.to_s
|
22
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
23
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
24
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
25
|
+
# Since this could potentially return a large number of results, we do not want to print the results
|
26
|
+
#p 'Results: ' + getResponse.results.to_s
|
27
|
+
raise 'Failure retrieving unsub events' unless getResponse.success?
|
28
|
+
|
29
|
+
while getResponse.more? do
|
30
|
+
p '>>> Continue Retrieve Filtered UnsubEvents with GetMoreResults'
|
31
|
+
getResponse = getUnsubEvent.continue
|
32
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
33
|
+
p 'Code: ' + getResponse.code.to_s
|
34
|
+
p 'Message: ' + getResponse.message.to_s
|
35
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
36
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
37
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
38
|
+
end
|
39
|
+
|
40
|
+
# The following request could potentially bring back large amounts of data if run against a production account
|
41
|
+
=begin
|
42
|
+
p '>>> Retrieve All UnsubEvents with GetMoreResults'
|
43
|
+
getUnsubEvent = MarketingCloudSDK::UnsubEvent.new()
|
44
|
+
getUnsubEvent.authStub = stubObj
|
45
|
+
getUnsubEvent.props = ["SendID","SubscriberKey","EventDate","Client.ID","EventType","BatchID","TriggeredSendDefinitionObjectID","PartnerKey"]
|
46
|
+
getResponse = getUnsubEvent.get
|
47
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
48
|
+
p 'Code: ' + getResponse.code.to_s
|
49
|
+
p 'Message: ' + getResponse.message.to_s
|
50
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
51
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
52
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
53
|
+
# Since this could potentially return a large number of results, we do not want to print the results
|
54
|
+
#p 'Results: ' + getResponse.results.to_s
|
55
|
+
|
56
|
+
while getResponse.more? do
|
57
|
+
p '>>> Continue Retrieve All UnsubEvents with GetMoreResults'
|
58
|
+
getResponse = getUnsubEvent.continue
|
59
|
+
p 'Retrieve Status: ' + getResponse.status.to_s
|
60
|
+
p 'Code: ' + getResponse.code.to_s
|
61
|
+
p 'Message: ' + getResponse.message.to_s
|
62
|
+
p 'MoreResults: ' + getResponse.more?.to_s
|
63
|
+
p 'RequestID: ' + getResponse.request_id.to_s
|
64
|
+
p 'Results Length: ' + getResponse.results.length.to_s
|
65
|
+
end
|
66
|
+
=end
|
67
|
+
|
68
|
+
rescue => e
|
69
|
+
p "Caught exception: #{e.message}"
|
70
|
+
p e.backtrace
|
71
|
+
end
|
72
|
+
|
data/spec/client_spec.rb
ADDED
@@ -0,0 +1,218 @@
|
|
1
|
+
require 'spec_helper.rb'
|
2
|
+
|
3
|
+
describe MarketingCloudSDK::Client do
|
4
|
+
|
5
|
+
context 'initialized' do
|
6
|
+
|
7
|
+
it 'with client parameters' do
|
8
|
+
client = MarketingCloudSDK::Client.new 'client' => {'id' => '1234', 'secret' => 'ssssh', 'signature' => 'hancock',
|
9
|
+
'base_api_url' => 'http://getapis', 'request_token_url' => 'http://authapi'}
|
10
|
+
expect(client.secret).to eq 'ssssh'
|
11
|
+
expect(client.id).to eq '1234'
|
12
|
+
expect(client.signature).to eq 'hancock'
|
13
|
+
expect(client.base_api_url).to eq 'http://getapis'
|
14
|
+
expect(client.request_token_url).to eq 'http://authapi'
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'with debug=true' do
|
18
|
+
client = MarketingCloudSDK::Client.new({}, true)
|
19
|
+
expect(client.debug).to be true
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'with debug=false' do
|
23
|
+
client = MarketingCloudSDK::Client.new({}, false)
|
24
|
+
expect(client.debug).to be false
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'sets the request_token url to parameter if it exists' do
|
28
|
+
client = MarketingCloudSDK::Client.new({'request_token_url' => 'fake/url'}, false)
|
29
|
+
expect(client.request_token_url).to eq 'fake/url'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'sets the base_api_url url to a default if it does not exist' do
|
33
|
+
client = MarketingCloudSDK::Client.new({}, false)
|
34
|
+
expect(client.base_api_url).to eq 'https://www.exacttargetapis.com'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'sets the request_token url to a default if it does not exist' do
|
38
|
+
client = MarketingCloudSDK::Client.new({}, false)
|
39
|
+
expect(client.request_token_url).to eq 'https://auth.exacttargetapis.com/v1/requestToken'
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'creates SoapClient' do
|
43
|
+
client = MarketingCloudSDK::Client.new
|
44
|
+
expect(client).to be_kind_of MarketingCloudSDK::Soap
|
45
|
+
end
|
46
|
+
|
47
|
+
it '#wsdl defaults to https://webservice.exacttarget.com/etframework.wsdl' do
|
48
|
+
client = MarketingCloudSDK::Client.new
|
49
|
+
expect(client.wsdl).to eq 'https://webservice.exacttarget.com/etframework.wsdl'
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'creates RestClient' do
|
53
|
+
client = MarketingCloudSDK::Client.new
|
54
|
+
expect(client).to be_kind_of MarketingCloudSDK::Rest
|
55
|
+
end
|
56
|
+
|
57
|
+
describe 'with a wsdl' do
|
58
|
+
|
59
|
+
let(:client) { MarketingCloudSDK::Client.new 'defaultwsdl' => 'somewsdl' }
|
60
|
+
|
61
|
+
it'creates a SoapClient' do
|
62
|
+
expect(client).to be_kind_of MarketingCloudSDK::Soap
|
63
|
+
end
|
64
|
+
|
65
|
+
it'#wsdl returns default wsdl' do
|
66
|
+
expect(client.wsdl).to eq 'somewsdl'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'instance can set' do
|
72
|
+
|
73
|
+
let(:client) { MarketingCloudSDK::Client.new }
|
74
|
+
|
75
|
+
it 'client id' do
|
76
|
+
client.id = 123
|
77
|
+
expect(client.id).to eq 123
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'client secret' do
|
81
|
+
client.secret = 'sssh'
|
82
|
+
expect(client.secret).to eq 'sssh'
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'refresh token' do
|
86
|
+
client.refresh_token = 'refresh'
|
87
|
+
expect(client.refresh_token).to eq 'refresh'
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'debug' do
|
91
|
+
expect(client.debug).to be false
|
92
|
+
client.debug = true
|
93
|
+
expect(client.debug).to be true
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe '#jwt=' do
|
98
|
+
|
99
|
+
let(:payload) {
|
100
|
+
{
|
101
|
+
'request' => {
|
102
|
+
'user'=> {
|
103
|
+
'oauthToken' => 123456789,
|
104
|
+
'expiresIn' => 3600,
|
105
|
+
'internalOauthToken' => 987654321,
|
106
|
+
'refreshToken' => 101010101010
|
107
|
+
},
|
108
|
+
'application'=> {
|
109
|
+
'package' => 'JustTesting'
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
let(:sig){
|
116
|
+
sig = 'hanckock'
|
117
|
+
}
|
118
|
+
|
119
|
+
let(:encoded) {
|
120
|
+
JWT.encode(payload, sig)
|
121
|
+
}
|
122
|
+
|
123
|
+
it 'raises an exception when signature is missing' do
|
124
|
+
expect { MarketingCloudSDK::Client.new.jwt = encoded }.to raise_exception 'Require app signature to decode JWT'
|
125
|
+
end
|
126
|
+
|
127
|
+
describe 'decodes JWT' do
|
128
|
+
|
129
|
+
let(:sig){
|
130
|
+
sig = 'hanckock'
|
131
|
+
}
|
132
|
+
|
133
|
+
let(:encoded) {
|
134
|
+
JWT.encode(payload, sig)
|
135
|
+
}
|
136
|
+
|
137
|
+
let(:client) {
|
138
|
+
MarketingCloudSDK::Client.new 'client' => { 'id' => '1234', 'secret' => 'ssssh', 'signature' => sig }
|
139
|
+
}
|
140
|
+
|
141
|
+
it 'making auth token available to client' do
|
142
|
+
client.jwt = encoded
|
143
|
+
expect(client.auth_token).to eq 123456789
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'making internal token available to client' do
|
147
|
+
client.jwt = encoded
|
148
|
+
expect(client.internal_token).to eq 987654321
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'making refresh token available to client' do
|
152
|
+
client.jwt = encoded
|
153
|
+
expect(client.refresh_token).to eq 101010101010
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe '#refresh_token' do
|
159
|
+
let(:client) { MarketingCloudSDK::Client.new }
|
160
|
+
|
161
|
+
it 'defaults to nil' do
|
162
|
+
expect(client.refresh_token).to be_nil
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'can be accessed' do
|
166
|
+
client.refresh_token = '1234567890'
|
167
|
+
expect(client.refresh_token).to eq '1234567890'
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe '#refresh' do
|
172
|
+
|
173
|
+
let(:client) { MarketingCloudSDK::Client.new }
|
174
|
+
|
175
|
+
context 'raises an exception' do
|
176
|
+
|
177
|
+
it 'when client id and secret are missing' do
|
178
|
+
expect { client.refresh }.to raise_exception 'Require Client Id and Client Secret to refresh tokens'
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'when client id is missing' do
|
182
|
+
client.secret = 1234
|
183
|
+
expect { client.refresh }.to raise_exception 'Require Client Id and Client Secret to refresh tokens'
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'when client secret is missing' do
|
187
|
+
client.id = 1234
|
188
|
+
expect { client.refresh }.to raise_exception 'Require Client Id and Client Secret to refresh tokens'
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
#context 'posts' do
|
193
|
+
# let(:client) { MarketingCloudSDK::Client.new 'client' => { 'id' => 123, 'secret' => 'sssh'} }
|
194
|
+
# it 'accessType=offline' do
|
195
|
+
# client.stub(:post)
|
196
|
+
# .with({'clientId' => 123, 'secret' => 'ssh', 'accessType' => 'offline'})
|
197
|
+
# .and_return()
|
198
|
+
#end
|
199
|
+
|
200
|
+
#context 'updates' do
|
201
|
+
# let(:client) { MarketingCloudSDK::Client.new 'client' => { 'id' => 123, 'secret' => 'sssh'} }
|
202
|
+
|
203
|
+
# it 'access_token' do
|
204
|
+
# #client.stub(:post).
|
205
|
+
# end
|
206
|
+
#end
|
207
|
+
end
|
208
|
+
|
209
|
+
describe 'includes HTTPRequest' do
|
210
|
+
|
211
|
+
subject { MarketingCloudSDK::Client.new }
|
212
|
+
|
213
|
+
it { should respond_to(:get) }
|
214
|
+
it { should respond_to(:post) }
|
215
|
+
it { should respond_to(:patch) }
|
216
|
+
it { should respond_to(:delete) }
|
217
|
+
end
|
218
|
+
end
|