Skip to content

Commit c58c021

Browse files
committed
Added support for creating campaigns from templates.
1 parent 8f9b6c4 commit c58c021

File tree

8 files changed

+138
-5
lines changed

8 files changed

+138
-5
lines changed

samples/com/createsend/samples/AssertException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.createsend.workingsamples;
1+
package com.createsend.samples;
22

33
public class AssertException extends Exception {
44

samples/com/createsend/samples/SampleRunner.java

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@
3636
import com.createsend.Templates;
3737
import com.createsend.models.administrators.Administrator;
3838
import com.createsend.models.campaigns.CampaignForCreation;
39+
import com.createsend.models.campaigns.CampaignForCreationFromTemplate;
40+
import com.createsend.models.campaigns.EditableField;
3941
import com.createsend.models.campaigns.PreviewData;
42+
import com.createsend.models.campaigns.Repeater;
43+
import com.createsend.models.campaigns.RepeaterItem;
44+
import com.createsend.models.campaigns.TemplateContent;
4045
import com.createsend.models.clients.AllClientDetails;
4146
import com.createsend.models.clients.BillingDetails;
4247
import com.createsend.models.clients.Client;
@@ -57,15 +62,15 @@
5762
import com.createsend.models.templates.TemplateForCreate;
5863
import com.createsend.util.exceptions.BadRequestException;
5964
import com.createsend.util.exceptions.CreateSendException;
60-
import com.createsend.workingsamples.AssertException;
65+
import com.createsend.samples.AssertException;
6166

6267
public class SampleRunner {
6368

6469
/**
6570
* @param args
6671
*/
6772
public static void main(String[] args) {
68-
try {
73+
try {
6974
String clientID = "Client ID";
7075
runGeneralMethods();
7176
runClientMethods();
@@ -296,6 +301,79 @@ private static void runListMethods(String clientID) throws CreateSendException {
296301
listAPI.delete();
297302
}
298303

304+
private static void testCampaignCreationFromTemplate(
305+
String clientID) throws CreateSendException {
306+
Campaigns campaignAPI = new Campaigns();
307+
308+
// Prepare the template content
309+
TemplateContent templateContent = new TemplateContent();
310+
311+
EditableField singleline = new EditableField();
312+
singleline.Content = "This is a heading";
313+
singleline.Alt = "This is alt text";
314+
singleline.Href = "http://example.com/";
315+
EditableField[] singlelines = new EditableField[] { singleline };
316+
templateContent.Singlelines = singlelines;
317+
318+
EditableField multiline = new EditableField();
319+
multiline.Content = "<p>This is example</p><p>multiline <a href=\"http://example.com\">content</a>...</p>";
320+
EditableField[] multilines = new EditableField[] { multiline };
321+
templateContent.Multilines = multilines;
322+
323+
EditableField image = new EditableField();
324+
image.Content = "http://example.com/image.png";
325+
image.Alt = "This is alt text for an image";
326+
image.Href = "http://example.com/";
327+
EditableField[] images = new EditableField[] { image };
328+
templateContent.Images = images;
329+
330+
RepeaterItem item = new RepeaterItem();
331+
item.Layout = "My layout";
332+
// Just using the same data for Singlelines, Multilines,
333+
// and Images as above in this example.
334+
item.Singlelines = singlelines;
335+
item.Multilines = multilines;
336+
item.Images = images;
337+
RepeaterItem[] items = new RepeaterItem[] { item };
338+
Repeater repeater = new Repeater();
339+
repeater.Items = items;
340+
Repeater[] repeaters = new Repeater[] { repeater };
341+
templateContent.Repeaters = repeaters;
342+
343+
// templateContent as defined above would be used to fill the content of
344+
// a template with markup similar to the following:
345+
// <html>
346+
// <head><title>My Template</title></head>
347+
// <body>
348+
// <p><singleline>Enter heading...</singleline></p>
349+
// <div><multiline>Enter description...</multiline></div>
350+
// <img id="header-image" editable="true" width="500" />
351+
// <repeater>
352+
// <layout label="My layout">
353+
// <div class="repeater-item">
354+
// <p><singleline></singleline></p>
355+
// <div><multiline></multiline></div>
356+
// <img editable="true" width="500" />
357+
// </div>
358+
// </layout>
359+
// </repeater>
360+
// <p><unsubscribe>Unsubscribe</unsubscribe></p>
361+
// </body>
362+
// </html>
363+
364+
CampaignForCreationFromTemplate campaign = new CampaignForCreationFromTemplate();
365+
campaign.Name = "Campaign From Java Wrapper";
366+
campaign.Subject = "Campaign From Java Wrapper";
367+
campaign.FromName = "Example";
368+
campaign.FromEmail = "[email protected]";
369+
campaign.ReplyTo = "[email protected]";
370+
campaign.ListIDs = new String[] { "List ID One" };
371+
campaign.SegmentIDs = new String[0];
372+
campaign.TemplateID = "Template ID";
373+
campaign.TemplateContent = templateContent;
374+
375+
campaignAPI.createFromTemplate(clientID, campaign);
376+
}
299377

300378
private static void runCampaignMethods(String clientID) throws CreateSendException {
301379
Campaigns campaignAPI = new Campaigns();

src/com/createsend/Campaigns.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.createsend.models.PagedResult;
2929
import com.createsend.models.campaigns.CampaignClick;
3030
import com.createsend.models.campaigns.CampaignForCreation;
31+
import com.createsend.models.campaigns.CampaignForCreationFromTemplate;
3132
import com.createsend.models.campaigns.CampaignOpen;
3233
import com.createsend.models.campaigns.CampaignSummary;
3334
import com.createsend.models.campaigns.ListsAndSegments;
@@ -97,14 +98,29 @@ public void setCampaignID(String campaignID) {
9798
* @param campaign The campaign information used for the new campaign
9899
* @return The ID of the newly created campaign
99100
* @throws CreateSendException Thrown when the API responds with a HTTP Status >= 400
100-
* @see <a href="http://www.campaignmonitor.com/api/campaigns/#creating_a_campaign" target="_blank">
101+
* @see <a href="http://www.campaignmonitor.com/api/campaigns/#creating_a_draft_campaign" target="_blank">
101102
* Creating a campaign</a>
102103
*/
103104
public String create(String clientID, CampaignForCreation campaign) throws CreateSendException {
104105
campaignID = client.post(String.class, campaign, "campaigns", clientID + ".json");
105106
return campaignID;
106107
}
107-
108+
109+
/**
110+
* Creates a new campaign for the specified client, based on the template
111+
* and campaign data specified.
112+
* @param clientID The ID of the client to create the campaign for
113+
* @param campaign The campaign information used for the new campaign
114+
* @return The ID of the newly created campaign
115+
* @throws CreateSendException Thrown when the API responds with a HTTP Status >= 400
116+
* @see <a href="http://www.campaignmonitor.com/api/campaigns/#creating_a_campaign_from_template" target="_blank">
117+
* Creating a campaign</a>
118+
*/
119+
public String createFromTemplate(String clientID, CampaignForCreationFromTemplate campaign) throws CreateSendException {
120+
campaignID = client.post(String.class, campaign, "campaigns", clientID + "/fromtemplate.json");
121+
return campaignID;
122+
}
123+
108124
/**
109125
* Sends an existing draft campaign using the provided confirmation email and send date.
110126
* To schedule a campaign for immediate delivery use a <code>null</code> sendDate.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.createsend.models.campaigns;
2+
3+
public class CampaignForCreationFromTemplate extends Campaign {
4+
public String FromName;
5+
public String FromEmail;
6+
public String ReplyTo;
7+
public String[] ListIDs;
8+
public String[] SegmentIDs;
9+
public String TemplateID;
10+
public TemplateContent TemplateContent;
11+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.createsend.models.campaigns;
2+
3+
public class EditableField {
4+
public String Content;
5+
public String Alt;
6+
public String Href;
7+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.createsend.models.campaigns;
2+
3+
public class Repeater {
4+
public RepeaterItem[] Items;
5+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.createsend.models.campaigns;
2+
3+
public class RepeaterItem {
4+
public String Layout;
5+
public EditableField[] Singlelines;
6+
public EditableField[] Multilines;
7+
public EditableField[] Images;
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.createsend.models.campaigns;
2+
3+
public class TemplateContent {
4+
public EditableField[] Singlelines;
5+
public EditableField[] Multilines;
6+
public EditableField[] Images;
7+
public Repeater[] Repeaters;
8+
}

0 commit comments

Comments
 (0)