sfmc-fuelsdk-ruby 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.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +28 -0
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +90 -0
  5. data/Guardfile +8 -0
  6. data/LICENSE.md +13 -0
  7. data/README.md +143 -0
  8. data/Rakefile +1 -0
  9. data/lib/marketingcloudsdk/client.rb +296 -0
  10. data/lib/marketingcloudsdk/http_request.rb +118 -0
  11. data/lib/marketingcloudsdk/objects.rb +757 -0
  12. data/lib/marketingcloudsdk/rest.rb +118 -0
  13. data/lib/marketingcloudsdk/soap.rb +282 -0
  14. data/lib/marketingcloudsdk/targeting.rb +99 -0
  15. data/lib/marketingcloudsdk/utils.rb +47 -0
  16. data/lib/marketingcloudsdk/version.rb +39 -0
  17. data/lib/marketingcloudsdk.rb +74 -0
  18. data/lib/new.rb +1240 -0
  19. data/marketingcloudsdk.gemspec +30 -0
  20. data/samples/sample-AddSubscriberToList.rb +56 -0
  21. data/samples/sample-CreateAndStartDataExtensionImport.rb +29 -0
  22. data/samples/sample-CreateAndStartListImport.rb +27 -0
  23. data/samples/sample-CreateContentAreas.rb +48 -0
  24. data/samples/sample-CreateDataExtensions.rb +54 -0
  25. data/samples/sample-CreateProfileAttributes.rb +48 -0
  26. data/samples/sample-SendEmailToDataExtension.rb +23 -0
  27. data/samples/sample-SendEmailToList.rb +23 -0
  28. data/samples/sample-SendTriggeredSends.rb +30 -0
  29. data/samples/sample-bounceevent.rb +70 -0
  30. data/samples/sample-campaign.rb +211 -0
  31. data/samples/sample-clickevent.rb +71 -0
  32. data/samples/sample-contentarea.rb +122 -0
  33. data/samples/sample-dataextension.rb +209 -0
  34. data/samples/sample-directverb.rb +54 -0
  35. data/samples/sample-email.rb +122 -0
  36. data/samples/sample-email.senddefinition.rb +134 -0
  37. data/samples/sample-folder.rb +143 -0
  38. data/samples/sample-import.rb +103 -0
  39. data/samples/sample-list.rb +105 -0
  40. data/samples/sample-list.subscriber.rb +97 -0
  41. data/samples/sample-openevent.rb +70 -0
  42. data/samples/sample-profileattribute.rb +56 -0
  43. data/samples/sample-sentevent.rb +70 -0
  44. data/samples/sample-subscriber.rb +135 -0
  45. data/samples/sample-triggeredsend.rb +129 -0
  46. data/samples/sample-unsubevent.rb +72 -0
  47. data/samples/sample_helper.rb.template +10 -0
  48. data/spec/client_spec.rb +218 -0
  49. data/spec/default_values_fallback_spec.rb +30 -0
  50. data/spec/helper_funcs_spec.rb +11 -0
  51. data/spec/http_request_spec.rb +61 -0
  52. data/spec/objects_helper_spec.rb +32 -0
  53. data/spec/objects_spec.rb +484 -0
  54. data/spec/rest_spec.rb +48 -0
  55. data/spec/soap_spec.rb +140 -0
  56. data/spec/spec_helper.rb +14 -0
  57. data/spec/targeting_spec.rb +44 -0
  58. metadata +262 -0
@@ -0,0 +1,134 @@
1
+ require 'marketingcloudsdk'
2
+ require_relative 'sample_helper'
3
+
4
+ begin
5
+ stubObj = MarketingCloudSDK::Client.new auth
6
+
7
+ NewSendDefinitionName = "PHPSDKSendDefinition";
8
+ SendableDataExtensionCustomerKey = "F6F3871A-D124-499B-BBF5-3EFC0E827A51";
9
+ EmailIDForSendDefinition = "3113962";
10
+ ListIDForSendDefinition = "1729515";
11
+ SendClassificationCustomerKey = "2239";
12
+
13
+ # Retrieve All Email::SendDefinition with GetMoreResults
14
+ p '>>> Retrieve All Email.SendDefinition with GetMoreResults'
15
+ sendDef = MarketingCloudSDK::Email::SendDefinition.new()
16
+ sendDef.authStub = stubObj
17
+ sendDef.props = ["Client.ID", "CreatedDate","ModifiedDate","ObjectID","CustomerKey","Name","CategoryID","Description","SendClassification.CustomerKey","SenderProfile.CustomerKey","SenderProfile.FromName","SenderProfile.FromAddress","DeliveryProfile.CustomerKey","DeliveryProfile.SourceAddressType","DeliveryProfile.PrivateIP","DeliveryProfile.DomainType","DeliveryProfile.PrivateDomain","DeliveryProfile.HeaderSalutationSource","DeliveryProfile.FooterSalutationSource","SuppressTracking","IsSendLogging","Email.ID","BccEmail","AutoBccEmail","TestEmailAddr","EmailSubject","DynamicEmailSubject","IsMultipart","IsWrapped","SendLimit","SendWindowOpen","SendWindowClose","DeduplicateByEmail","ExclusionFilter","Additional"]
18
+ getResponse = sendDef.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 'Results Length: ' + getResponse.results.length.to_s
24
+ #p 'Results: ' + getResponse.results.to_s
25
+ raise 'Failure retrieving SendDefinition' unless getResponse.success?
26
+
27
+
28
+ while getResponse.more? do
29
+ p '>>> Continue Retrieve All Email with GetMoreResults'
30
+ getResponse = getHTMLBody.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
+ p '>>> Create New Email.SendDefinition to DataExtension'
40
+ postSendDefinition = MarketingCloudSDK::Email::SendDefinition.new()
41
+ postSendDefinition.authStub = stubObj
42
+ postSendDefinition.props = {}
43
+ postSendDefinition.props["Name"] = NewSendDefinitionName
44
+ postSendDefinition.props["CustomerKey"] = NewSendDefinitionName
45
+ postSendDefinition.props["Description"] = "Created with RubySDK"
46
+ postSendDefinition.props["SendClassification"] = {"CustomerKey"=>SendClassificationCustomerKey}
47
+ postSendDefinition.props["SendDefinitionList"] = {"CustomerKey"=> SendableDataExtensionCustomerKey, "DataSourceTypeID"=>"CustomObject"}
48
+ postSendDefinition.props["Email"] = {"ID"=>EmailIDForSendDefinition}
49
+ postResponse = postSendDefinition.post
50
+ p 'Post Status: ' + postResponse.status.to_s
51
+ p 'Code: ' + postResponse.code.to_s
52
+ p 'Message: ' + postResponse.message.to_s
53
+ p 'MoreResults: ' + postResponse.more?.to_s
54
+ p 'Results Length: ' + postResponse.results.length.to_s
55
+ p 'Results: ' + postResponse.results.to_s
56
+ #raise 'Failure Creating SendDefinition' unless postResponse.success?
57
+
58
+ p '>>> Delete SendDefinition to DataExtension'
59
+ deleteSendDefinition = MarketingCloudSDK::Email::SendDefinition.new()
60
+ deleteSendDefinition.authStub = stubObj
61
+ deleteSendDefinition.props = {"CustomerKey"=> NewSendDefinitionName}
62
+ deleteResponse = deleteSendDefinition.delete
63
+ p 'Delete Status: ' + deleteResponse.status.to_s
64
+ p 'Code: ' + deleteResponse.code.to_s
65
+ p 'Message: ' + deleteResponse.message.to_s
66
+ p 'MoreResults: ' + deleteResponse.more?.to_s
67
+ p 'Results Length: ' + deleteResponse.results.length.to_s
68
+ p 'Results: ' + deleteResponse.results.to_s
69
+ #raise 'Failure Deleting SendDefinition' unless deleteResponse.success?
70
+
71
+
72
+ p '>>> Create New Email.SendDefinition to List'
73
+ postSendDefinition = MarketingCloudSDK::Email::SendDefinition.new()
74
+ postSendDefinition.authStub = stubObj
75
+ postSendDefinition.props = {"Name"=>NewSendDefinitionName}
76
+ postSendDefinition.props["CustomerKey"] = NewSendDefinitionName
77
+ postSendDefinition.props["Description"] = "Created with PHPSDK"
78
+ postSendDefinition.props["SendClassification"] = {"CustomerKey"=>SendClassificationCustomerKey}
79
+ postSendDefinition.props["SendDefinitionList"] = {"List"=> {"ID"=>ListIDForSendDefinition}, "DataSourceTypeID"=>"List"}
80
+ postSendDefinition.props["Email"] = {"ID"=>EmailIDForSendDefinition}
81
+ postResponse = postSendDefinition.post
82
+ p 'Post Status: ' + postResponse.status.to_s
83
+ p 'Code: ' + postResponse.code.to_s
84
+ p 'Message: ' + postResponse.message.to_s
85
+ p 'MoreResults: ' + postResponse.more?.to_s
86
+ p 'Results Length: ' + postResponse.results.length.to_s
87
+ p 'Results: ' + postResponse.results.to_s
88
+ raise 'Failure Creating SendDefinition' unless postResponse.success?
89
+
90
+ p '>>> Send SendDefinition to List'
91
+ sendSendDefinition = MarketingCloudSDK::Email::SendDefinition.new()
92
+ sendSendDefinition.authStub = stubObj
93
+ sendSendDefinition.props = {"CustomerKey"=> NewSendDefinitionName}
94
+ sendResponse = sendSendDefinition.send
95
+ p 'Send Status: ' + sendResponse.status.to_s
96
+ p 'Code: ' + sendResponse.code.to_s
97
+ p 'Message: ' + sendResponse.message.to_s
98
+ p 'MoreResults: ' + sendResponse.more?.to_s
99
+ p 'Results Length: ' + sendResponse.results.length.to_s
100
+ p 'Results: ' + sendResponse.results.to_s
101
+ raise 'Failure Sending SendDefinition' unless sendResponse.success?
102
+
103
+ emailStatus = ""
104
+ while emailStatus != "Canceled" && emailStatus != "Complete" do
105
+ p '>>> Checking status in loop'
106
+ # Wait a bit before checking the status to give it time to process
107
+ sleep 10
108
+ statusResponse = sendSendDefinition.status
109
+ p 'Status Status: ' + statusResponse.status.to_s
110
+ p 'Code: ' + statusResponse.code.to_s
111
+ p 'Message: ' + statusResponse.message.to_s
112
+ p 'Result Count: ' + statusResponse.results.length.to_s
113
+ p 'Results: ' + statusResponse.results.inspect
114
+ emailStatus = statusResponse.results[0][:status]
115
+ end
116
+
117
+ p '>>> Delete SendDefinition to List'
118
+ deleteSendDefinition = MarketingCloudSDK::Email::SendDefinition.new()
119
+ deleteSendDefinition.authStub = stubObj
120
+ deleteSendDefinition.props = {"CustomerKey"=> NewSendDefinitionName}
121
+ deleteResponse = deleteSendDefinition.delete
122
+ p 'Delete Status: ' + deleteResponse.status.to_s
123
+ p 'Code: ' + deleteResponse.code.to_s
124
+ p 'Message: ' + deleteResponse.message.to_s
125
+ p 'MoreResults: ' + deleteResponse.more?.to_s
126
+ p 'Results Length: ' + deleteResponse.results.length.to_s
127
+ p 'Results: ' + deleteResponse.results.to_s
128
+ raise 'Failure Deleting SendDefinition' unless deleteResponse.success?
129
+
130
+ rescue => e
131
+ p "Caught exception: #{e.message}"
132
+ p e.backtrace
133
+ end
134
+
@@ -0,0 +1,143 @@
1
+ require 'marketingcloudsdk'
2
+ require_relative 'sample_helper'
3
+
4
+ begin
5
+ stubObj = MarketingCloudSDK::Client.new auth
6
+
7
+ # Retrieve All Folder with GetMoreResults
8
+ p '>>> Retrieve All Folder with GetMoreResults'
9
+ getFolder = MarketingCloudSDK::Folder.new()
10
+ getFolder.authStub = stubObj
11
+ getFolder.props = ["ID", "Client.ID", "ParentFolder.ID", "ParentFolder.CustomerKey", "ParentFolder.ObjectID", "ParentFolder.Name", "ParentFolder.Description", "ParentFolder.ContentType", "ParentFolder.IsActive", "ParentFolder.IsEditable", "ParentFolder.AllowChildren", "Name", "Description", "ContentType", "IsActive", "IsEditable", "AllowChildren", "CreatedDate", "ModifiedDate", "Client.ModifiedBy", "ObjectID", "CustomerKey", "Client.EnterpriseID", "Client.CreatedBy"]
12
+ getResponse = getFolder.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 Folders' unless getResponse.success?
20
+
21
+ while getResponse.more? do
22
+ p '>>> Continue Retrieve All Folder with GetMoreResults'
23
+ getResponse.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
+ NameOfTestFolder = "RubySDKFolder"
33
+
34
+ # Retrieve Specific Folder for Email Folder ParentID
35
+ p '>>> Retrieve Specific Folder for Email Folder ParentID'
36
+ getFolder = MarketingCloudSDK::Folder.new()
37
+ getFolder.authStub = stubObj
38
+ getFolder.props = ["ID"]
39
+ getFolder.filter = {'LeftOperand' => {'Property' => 'ParentFolder.ID','SimpleOperator' => 'equals','Value' => '0'}, 'LogicalOperator' => 'AND', 'RightOperand' => {'Property' => 'ContentType','SimpleOperator' => 'equals','Value' => 'EMAIL'}}
40
+ getResponse = getFolder.get
41
+ p 'Retrieve Status: ' + getResponse.status.to_s
42
+ p 'Code: ' + getResponse.code.to_s
43
+ p 'Message: ' + getResponse.message.to_s
44
+ p 'MoreResults: ' + getResponse.more?.to_s
45
+ p 'Results Length: ' + getResponse.results.length.to_s
46
+ p 'Results: ' + getResponse.results.to_s
47
+ raise 'Failure retrieving Folder' unless getResponse.success?
48
+
49
+ if getResponse.success? then
50
+ ParentIDForEmail = getResponse.results[0][:id]
51
+ p "Parent Folder for Email: #{ParentIDForEmail}"
52
+
53
+ # Create Folder
54
+ p '>>> Create Folder'
55
+ postFolder = MarketingCloudSDK::Folder.new
56
+ postFolder.authStub = stubObj
57
+ postFolder.props = {"CustomerKey" => NameOfTestFolder, "Name" => NameOfTestFolder, "Description" => NameOfTestFolder, "ContentType"=> "EMAIL", "ParentFolder" => {"ID" => ParentIDForEmail}}
58
+ postResponse = postFolder.post
59
+ p 'Post Status: ' + postResponse.status.to_s
60
+ p 'Code: ' + postResponse.code.to_s
61
+ p 'Message: ' + postResponse.message.to_s
62
+ p 'Result Count: ' + postResponse.results.length.to_s
63
+ p 'Results: ' + postResponse.results.inspect
64
+ raise 'Failure creating Folder' unless postResponse.success?
65
+
66
+ # Retrieve newly created Folder
67
+ p '>>> Retrieve newly created Folder'
68
+ getFolder = MarketingCloudSDK::Folder.new()
69
+ getFolder.authStub = stubObj
70
+ getFolder.props = ["ID", "Client.ID", "ParentFolder.ID", "ParentFolder.CustomerKey", "ParentFolder.ObjectID", "ParentFolder.Name", "ParentFolder.Description", "ParentFolder.ContentType", "ParentFolder.IsActive", "ParentFolder.IsEditable", "ParentFolder.AllowChildren", "Name", "Description", "ContentType", "IsActive", "IsEditable", "AllowChildren", "CreatedDate", "ModifiedDate", "Client.ModifiedBy", "ObjectID", "CustomerKey", "Client.EnterpriseID", "Client.CreatedBy"]
71
+ getFolder.filter = {'Property' => 'CustomerKey','SimpleOperator' => 'equals','Value' => NameOfTestFolder}
72
+ getResponse = getFolder.get
73
+ p 'Retrieve Status: ' + getResponse.status.to_s
74
+ p 'Code: ' + getResponse.code.to_s
75
+ p 'Message: ' + getResponse.message.to_s
76
+ p 'MoreResults: ' + getResponse.more?.to_s
77
+ p 'Results Length: ' + getResponse.results.length.to_s
78
+ p 'Results: ' + getResponse.results.to_s
79
+ raise 'Failure retrieving Folder' unless getResponse.success?
80
+ raise 'Failure verifying created Folder' if getResponse.results.empty?
81
+
82
+ # Update Folder
83
+ p '>>> Update Folder'
84
+ patchFolder = MarketingCloudSDK::Folder.new
85
+ patchFolder.authStub = stubObj
86
+ patchFolder.props = {"CustomerKey" => NameOfTestFolder, "Description" => "New Description"}
87
+ patchResponse = patchFolder.patch
88
+ p 'Patch Status: ' + patchResponse.status.to_s
89
+ p 'Code: ' + patchResponse.code.to_s
90
+ p 'Message: ' + patchResponse.message.to_s
91
+ p 'Result Count: ' + patchResponse.results.length.to_s
92
+ p 'Results: ' + patchResponse.results.inspect
93
+ raise 'Failure updating Folder' unless patchResponse.success?
94
+
95
+ # Retrieve updated Folder
96
+ p '>>> Retrieve updated Folder'
97
+ getFolder = MarketingCloudSDK::Folder.new()
98
+ getFolder.authStub = stubObj
99
+ getFolder.props = ["ID", "Client.ID", "ParentFolder.ID", "ParentFolder.CustomerKey", "ParentFolder.ObjectID", "ParentFolder.Name", "ParentFolder.Description", "ParentFolder.ContentType", "ParentFolder.IsActive", "ParentFolder.IsEditable", "ParentFolder.AllowChildren", "Name", "Description", "ContentType", "IsActive", "IsEditable", "AllowChildren", "CreatedDate", "ModifiedDate", "Client.ModifiedBy", "ObjectID", "CustomerKey", "Client.EnterpriseID", "Client.CreatedBy"]
100
+ getFolder.filter = {'Property' => 'CustomerKey','SimpleOperator' => 'equals','Value' => NameOfTestFolder}
101
+ getResponse = getFolder.get
102
+ p 'Retrieve Status: ' + getResponse.status.to_s
103
+ p 'Code: ' + getResponse.code.to_s
104
+ p 'Message: ' + getResponse.message.to_s
105
+ p 'MoreResults: ' + getResponse.more?.to_s
106
+ p 'Results Length: ' + getResponse.results.length.to_s
107
+ p 'Results: ' + getResponse.results.to_s
108
+ raise 'Failure retrieving Folder' unless getResponse.success?
109
+
110
+ # Delete Folder
111
+ p '>>> Delete Folder'
112
+ deleteFolder = MarketingCloudSDK::Folder.new
113
+ deleteFolder.authStub = stubObj
114
+ deleteFolder.props = {"CustomerKey" => NameOfTestFolder, "Name"=>NameOfTestFolder, "Content"=> "<b>Some HTML Content Goes here. NOW WITH NEW CONTENT</b>"}
115
+ deleteResponse = deleteFolder.delete
116
+ p 'Delete Status: ' + deleteResponse.status.to_s
117
+ p 'Code: ' + deleteResponse.code.to_s
118
+ p 'Message: ' + deleteResponse.message.to_s
119
+ p 'Result Count: ' + deleteResponse.results.length.to_s
120
+ p 'Results: ' + deleteResponse.results.inspect
121
+ raise 'Failure deleting Folder' unless deleteResponse.success?
122
+
123
+ # Retrieve Folder to confirm deletion
124
+ p '>>> Retrieve Folder to confirm deletion'
125
+ getFolder = MarketingCloudSDK::Folder.new()
126
+ getFolder.authStub = stubObj
127
+ getFolder.props = ["ID"]
128
+ getFolder.filter = {'Property' => 'CustomerKey','SimpleOperator' => 'equals','Value' => NameOfTestFolder}
129
+ getResponse = getFolder.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 'MoreResults: ' + getResponse.more?.to_s
134
+ p 'Results Length: ' + getResponse.results.length.to_s
135
+ p 'Results: ' + getResponse.results.to_s
136
+ raise 'Failure verifying deleted Folder' unless getResponse.success?
137
+ raise 'Failure verifying deleted Folder' unless getResponse.results.empty?
138
+ end
139
+ rescue => e
140
+ p "Caught exception: #{e.message}"
141
+ p e.backtrace
142
+ end
143
+
@@ -0,0 +1,103 @@
1
+ require 'marketingcloudsdk'
2
+ require_relative 'sample_helper'
3
+
4
+ begin
5
+ stubObj = MarketingCloudSDK::Client.new auth
6
+
7
+ NewImportName = "RubySDKImport"
8
+ SendableDataExtensionCustomerKey = "62476204-bfd3-de11-95ca-001e0bbae8cc"
9
+ ListIDForImport = "1956035"
10
+
11
+ p '>>> Create Import to DataExtension'
12
+ postImport = ET_Import.new
13
+ postImport.authStub = stubObj
14
+ postImport.props = {"Name"=>NewImportName}
15
+ postImport.props["CustomerKey"] = NewImportName
16
+ postImport.props["Description"] = "Created with RubySDK"
17
+ postImport.props["AllowErrors"] = "true"
18
+ postImport.props["DestinationObject"] = {"ObjectID"=>SendableDataExtensionCustomerKey}
19
+ postImport.props["FieldMappingType"] = "InferFromColumnHeadings"
20
+ postImport.props["FileSpec"] = "RubyExample.csv"
21
+ postImport.props["FileType"] = "CSV"
22
+ postImport.props["Notification"] = {"ResponseType"=>"email","ResponseAddress"=>"example@example.com"}
23
+ postImport.props["RetrieveFileTransferLocation"] = {"CustomerKey"=>"ExactTarget Enhanced FTP"}
24
+ postImport.props["UpdateType"] = "Overwrite"
25
+ postResponse = postImport.post
26
+ p 'Post Status: ' + postResponse.status.to_s
27
+ p 'Code: ' + postResponse.code.to_s
28
+ p 'Message: ' + postResponse.message.to_s
29
+ p 'Result Count: ' + postResponse.results.length.to_s
30
+ p 'Results: ' + postResponse.results.inspect
31
+
32
+ p '>>> Delete Import'
33
+ deleteImport = ET_Import.new()
34
+ deleteImport.authStub = stubObj
35
+ deleteImport.props = {"CustomerKey" => NewImportName}
36
+ deleteResponse = deleteImport.delete
37
+ p 'Delete Status: ' + deleteResponse.status.to_s
38
+ p 'Code: ' + deleteResponse.code.to_s
39
+ p 'Message: ' + deleteResponse.message.to_s
40
+ p 'Results Length: ' + deleteResponse.results.length.to_s
41
+ p 'Results: ' + deleteResponse.results.to_s
42
+
43
+ p '>>> Create Import to List'
44
+ postImport = ET_Import.new
45
+ postImport.authStub = stubObj
46
+ postImport.props = {"Name"=>NewImportName}
47
+ postImport.props["CustomerKey"] = NewImportName
48
+ postImport.props["Description"] = "Created with RubySDK"
49
+ postImport.props["AllowErrors"] = "true"
50
+ postImport.props["DestinationObject"] = {"ID"=>ListIDForImport}
51
+ postImport.props["FieldMappingType"] = "InferFromColumnHeadings"
52
+ postImport.props["FileSpec"] = "RubyExample.csv"
53
+ postImport.props["FileType"] = "CSV"
54
+ postImport.props["Notification"] = {"ResponseType"=>"email","ResponseAddress"=>"example@example.com"}
55
+ postImport.props["RetrieveFileTransferLocation"] = {"CustomerKey"=>"ExactTarget Enhanced FTP"}
56
+ postImport.props["UpdateType"] = "AddAndUpdate"
57
+ postResponse = postImport.post
58
+ p 'Post Status: ' + postResponse.status.to_s
59
+ p 'Code: ' + postResponse.code.to_s
60
+ p 'Message: ' + postResponse.message.to_s
61
+ p 'Result Count: ' + postResponse.results.length.to_s
62
+ p 'Results: ' + postResponse.results.inspect
63
+
64
+ p '>>> Start Import to List'
65
+ startImport = ET_Import.new
66
+ startImport.authStub = stubObj
67
+ startImport.props = {"CustomerKey"=>NewImportName}
68
+ postResponse = startImport.start
69
+ p 'Start Status: ' + postResponse.status.to_s
70
+ p 'Code: ' + postResponse.code.to_s
71
+ p 'Message: ' + postResponse.message.to_s
72
+ p 'Result Count: ' + postResponse.results.length.to_s
73
+ p 'Results: ' + postResponse.results.inspect
74
+
75
+ importStatus = ""
76
+ while postResponse.status && importStatus != "Error" && importStatus != "Completed" do
77
+ p '>>> Checking status in loop'
78
+ # Wait a bit before checking the status to give it time to process
79
+ sleep 30
80
+ statusResponse = startImport.status
81
+ p 'Status Status: ' + statusResponse.status.to_s
82
+ p 'Code: ' + statusResponse.code.to_s
83
+ p 'Message: ' + statusResponse.message.to_s
84
+ p 'Result Count: ' + statusResponse.results.length.to_s
85
+ p 'Results: ' + statusResponse.results.inspect
86
+ importStatus = statusResponse.results[0][:import_status]
87
+ end
88
+
89
+ p '>>> Delete Import'
90
+ deleteImport = ET_Import.new()
91
+ deleteImport.authStub = stubObj
92
+ deleteImport.props = {"CustomerKey" => NewImportName}
93
+ deleteResponse = deleteImport.delete
94
+ p 'Delete Status: ' + deleteResponse.status.to_s
95
+ p 'Code: ' + deleteResponse.code.to_s
96
+ p 'Message: ' + deleteResponse.message.to_s
97
+ p 'Results Length: ' + deleteResponse.results.length.to_s
98
+ p 'Results: ' + deleteResponse.results.to_s
99
+
100
+ rescue => e
101
+ p "Caught exception: #{e.message}"
102
+ p e.backtrace
103
+ end
@@ -0,0 +1,105 @@
1
+ require 'marketingcloudsdk'
2
+ require_relative 'sample_helper'
3
+
4
+ begin
5
+ stubObj = MarketingCloudSDK::Client.new auth
6
+
7
+ NewListName = "RubySDKList"
8
+
9
+ # Create List
10
+ p '>>> Create List'
11
+ postList = MarketingCloudSDK::List.new
12
+ postList.authStub = stubObj
13
+ postList.props = {"ListName" => NewListName, "Description" => "This list was created with the RubySDK", "Type" => "Private" }
14
+ #postList.folder_id = 1083760
15
+ postResponse = postList.post
16
+ p 'Post Status: ' + postResponse.status.to_s
17
+ p 'Code: ' + postResponse.code.to_s
18
+ p 'Message: ' + postResponse.message.to_s
19
+ p 'Result Count: ' + postResponse.results.length.to_s
20
+ p 'Results: ' + postResponse.results.inspect
21
+ raise 'Failure creating list' unless postResponse.success?
22
+
23
+ # Make sure the list created correctly before
24
+ if postResponse.success? then
25
+
26
+ newListID = postResponse.results[0][:new_id]
27
+
28
+ # Retrieve newly created List by ID
29
+ p '>>> Retrieve newly created List'
30
+ getList = MarketingCloudSDK::List.new()
31
+ getList.authStub = stubObj
32
+ getList.props = ["ID","PartnerKey","CreatedDate","ModifiedDate","Client.ID","Client.PartnerClientKey","ListName","Description","Category","Type","CustomerKey","ListClassification","AutomatedEmail.ID"]
33
+ getList.filter = {'Property' => 'ID','SimpleOperator' => 'equals','Value' => newListID}
34
+ getResponse = getList.get
35
+ p 'Retrieve Status: ' + getResponse.status.to_s
36
+ p 'Code: ' + getResponse.code.to_s
37
+ p 'Message: ' + getResponse.message.to_s
38
+ p 'MoreResults: ' + getResponse.more?.to_s
39
+ p 'Results Length: ' + getResponse.results.length.to_s
40
+ p 'Results: ' + getResponse.results.to_s
41
+ raise 'Failure retrieving list' unless getResponse.success?
42
+
43
+ # Update List
44
+ p '>>> Update List'
45
+ patchSub = MarketingCloudSDK::List.new
46
+ patchSub.authStub = stubObj
47
+ patchSub.props = {"ID" => newListID, "Description" => "I updated the description"}
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
+ raise 'Failure updating list' unless patchResponse.success?
55
+ raise 'Failure updating list' unless patchResponse.results.first[:object][:description] == "I updated the description"
56
+
57
+ # Retrieve List that should have description updated
58
+ p '>>> Retrieve List that should have description updated '
59
+ getList = MarketingCloudSDK::List.new()
60
+ getList.authStub = stubObj
61
+ getList.props = ["ID","PartnerKey","CreatedDate","ModifiedDate","Client.ID","Client.PartnerClientKey","ListName","Description","Category","Type","CustomerKey","ListClassification","AutomatedEmail.ID"]
62
+ getList.filter = {'Property' => 'ID','SimpleOperator' => 'equals','Value' => newListID}
63
+ getResponse = getList.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
+ raise 'Failure retrieving list' unless getResponse.success?
71
+
72
+ # Delete List
73
+ p '>>> Delete List'
74
+ deleteSub = MarketingCloudSDK::List.new()
75
+ deleteSub.authStub = stubObj
76
+ deleteSub.props = {"ID" => newListID}
77
+ deleteResponse = deleteSub.delete
78
+ p 'Delete Status: ' + deleteResponse.status.to_s
79
+ p 'Code: ' + deleteResponse.code.to_s
80
+ p 'Message: ' + deleteResponse.message.to_s
81
+ p 'Results Length: ' + deleteResponse.results.length.to_s
82
+ p 'Results: ' + deleteResponse.results.to_s
83
+ raise 'Failure deleting list' unless deleteResponse.success?
84
+
85
+ # Retrieve List to confirm deletion
86
+ p '>>> Retrieve List to confirm deletion'
87
+ getList = MarketingCloudSDK::List.new()
88
+ getList.authStub = stubObj
89
+ getList.props = ["ID","PartnerKey","CreatedDate","ModifiedDate","Client.ID","Client.PartnerClientKey","ListName","Description","Category","Type","CustomerKey","ListClassification","AutomatedEmail.ID"]
90
+ getList.filter = {'Property' => 'ID','SimpleOperator' => 'equals','Value' => newListID}
91
+ getResponse = getList.get
92
+ p 'Retrieve Status: ' + getResponse.status.to_s
93
+ p 'Code: ' + getResponse.code.to_s
94
+ p 'Message: ' + getResponse.message.to_s
95
+ p 'MoreResults: ' + getResponse.more?.to_s
96
+ p 'Results Length: ' + getResponse.results.length.to_s
97
+ p 'Results: ' + getResponse.results.to_s
98
+ raise 'Failure retrieving list' unless getResponse.success?
99
+ end
100
+
101
+ rescue => e
102
+ p "Caught exception: #{e.message}"
103
+ p e.backtrace
104
+ end
105
+
@@ -0,0 +1,97 @@
1
+ require 'marketingcloudsdk'
2
+ require_relative 'sample_helper'
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
+ NewListName = "RubySDKListSubscriber"
11
+ SubscriberTestEmail = "RubySDKListSubscriber@bh.exacttarget.com"
12
+
13
+ # Create List
14
+ p '>>> Create List'
15
+ postList = MarketingCloudSDK::List.new
16
+ postList.authStub = stubObj
17
+ postList.props = {"ListName" => NewListName, "Description" => "This list was created with the RubySDK", "Type" => "Private" }
18
+ postResponse = postList.post
19
+ p 'Post Status: ' + postResponse.status.to_s
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 posting list' unless postResponse.success?
26
+
27
+
28
+ # Make sure the list created correctly before
29
+ if postResponse.success? then
30
+
31
+ newListID = postResponse.results[0][:new_id]
32
+
33
+ # Create Subscriber On List
34
+ p '>>> Create Subscriber On List'
35
+ postSub = MarketingCloudSDK::Subscriber.new
36
+ postSub.authStub = stubObj
37
+ postSub.props = {"EmailAddress" => SubscriberTestEmail, "Lists" =>[{"ID" => newListID}]}
38
+ postResponse = postSub.post
39
+ p 'Post Status: ' + postResponse.status.to_s
40
+ p 'Code: ' + postResponse.code.to_s
41
+ p 'Message: ' + postResponse.message.to_s
42
+ p 'Result Count: ' + postResponse.results.length.to_s
43
+ p 'Results: ' + postResponse.results.inspect
44
+
45
+ if postResponse.success? == false then
46
+ # If the subscriber already exists in the account then we need to do an update.
47
+ # Update Subscriber On List
48
+ if postResponse.results[0][:error_code] == "12014" then
49
+ # Update Subscriber to add to List
50
+ p '>>> Update Subscriber to add to List'
51
+ patchSub = MarketingCloudSDK::Subscriber.new
52
+ patchSub.authStub = stubObj
53
+ patchSub.props = {"EmailAddress" => SubscriberTestEmail, "Lists" =>[{"ID" => newListID}]}
54
+ patchResponse = patchSub.patch
55
+ p 'Patch Status: ' + patchResponse.status.to_s
56
+ p 'Code: ' + patchResponse.code.to_s
57
+ p 'Message: ' + patchResponse.message.to_s
58
+ p 'Result Count: ' + patchResponse.results.length.to_s
59
+ p 'Results: ' + patchResponse.results.inspect
60
+ raise 'Failure updating subscriber' unless patchResponse.success?
61
+ end
62
+ end
63
+
64
+
65
+ # Retrieve all Subscribers on the List
66
+ p '>>> Retrieve all Subscribers on the List'
67
+ getListSubs = MarketingCloudSDK::List::Subscriber.new
68
+ getListSubs.authStub = stubObj
69
+ getListSubs.props = ["ObjectID","SubscriberKey","CreatedDate","Client.ID","Client.PartnerClientKey","ListID","Status"]
70
+ getListSubs.filter = {'Property' => 'ListID','SimpleOperator' => 'equals','Value' => newListID}
71
+ getResponse = getListSubs.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 'MoreResults: ' + getResponse.more?.to_s
76
+ p 'Results Length: ' + getResponse.results.length.to_s
77
+ p 'Results: ' + getResponse.results.to_s
78
+ raise 'Failure retrieving subscirbers on list' unless getResponse.success?
79
+
80
+ # Delete List
81
+ p '>>> Delete List'
82
+ deleteSub = MarketingCloudSDK::List.new()
83
+ deleteSub.authStub = stubObj
84
+ deleteSub.props = {"ID" => newListID}
85
+ deleteResponse = deleteSub.delete
86
+ p 'Delete Status: ' + deleteResponse.status.to_s
87
+ p 'Code: ' + deleteResponse.code.to_s
88
+ p 'Message: ' + deleteResponse.message.to_s
89
+ p 'Results Length: ' + deleteResponse.results.length.to_s
90
+ p 'Results: ' + deleteResponse.results.to_s
91
+ raise 'Failure deleting list' unless deleteResponse.success?
92
+ end
93
+ rescue => e
94
+ p "Caught exception: #{e.message}"
95
+ p e.backtrace
96
+ end
97
+
@@ -0,0 +1,70 @@
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 OpenEvents with GetMoreResults'
12
+ getOpenEvent = MarketingCloudSDK::OpenEvent.new()
13
+ getOpenEvent.authStub = stubObj
14
+ getOpenEvent.props = ["SendID","SubscriberKey","EventDate","Client.ID","EventType","BatchID","TriggeredSendDefinitionObjectID","PartnerKey"]
15
+ getOpenEvent.filter = {'Property' => 'EventDate','SimpleOperator' => 'greaterThan','DateValue' => retrieveDate}
16
+ getResponse = getOpenEvent.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
+ raise 'Failure retrieving open events' unless getResponse.success?
26
+
27
+ while getResponse.more? do
28
+ p '>>> Continue Retrieve Filtered OpenEvents with GetMoreResults'
29
+ getResponse = getOpenEvent.contine
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 'RequestID: ' + getResponse.request_id.to_s
35
+ p 'Results Length: ' + getResponse.results.length.to_s
36
+ end
37
+
38
+ # The following request could potentially bring back large amounts of data if run against a production account
39
+ =begin
40
+ p '>>> Retrieve All OpenEvents with GetMoreResults'
41
+ getOpenEvent = MarketingCloudSDK::OpenEvent.new()
42
+ getOpenEvent.authStub = stubObj
43
+ getOpenEvent.props = ["SendID","SubscriberKey","EventDate","Client.ID","EventType","BatchID","TriggeredSendDefinitionObjectID","PartnerKey"]
44
+ getResponse = getOpenEvent.get
45
+ p 'Retrieve Status: ' + getResponse.status.to_s
46
+ p 'Code: ' + getResponse.code.to_s
47
+ p 'Message: ' + getResponse.message.to_s
48
+ p 'MoreResults: ' + getResponse.more?.to_s
49
+ p 'RequestID: ' + getResponse.request_id.to_s
50
+ p 'Results Length: ' + getResponse.results.length.to_s
51
+ # Since this could potentially return a large number of results, we do not want to print the results
52
+ #p 'Results: ' + getResponse.results.to_s
53
+
54
+ while getResponse.more? do
55
+ p '>>> Continue Retrieve All OpenEvents with GetMoreResults'
56
+ getResponse = getOpenEvent.contine
57
+ p 'Retrieve Status: ' + getResponse.status.to_s
58
+ p 'Code: ' + getResponse.code.to_s
59
+ p 'Message: ' + getResponse.message.to_s
60
+ p 'MoreResults: ' + getResponse.more?.to_s
61
+ p 'RequestID: ' + getResponse.request_id.to_s
62
+ p 'Results Length: ' + getResponse.results.length.to_s
63
+ end
64
+ =end
65
+
66
+ rescue => e
67
+ p "Caught exception: #{e.message}"
68
+ p e.backtrace
69
+ end
70
+