Skip to content

Commit 043a793

Browse files
committed
Adds concrete response for retrieving templates
1 parent 5bf9cd9 commit 043a793

File tree

5 files changed

+168
-4
lines changed

5 files changed

+168
-4
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
2+
package com.sparkpost.samples;
3+
4+
import java.io.IOException;
5+
import java.util.List;
6+
7+
import org.apache.log4j.Level;
8+
import org.apache.log4j.Logger;
9+
10+
import com.sparkpost.Client;
11+
import com.sparkpost.exception.SparkPostException;
12+
import com.sparkpost.model.TemplateItem;
13+
import com.sparkpost.model.responses.TemplateListResponse;
14+
import com.sparkpost.model.responses.TemplateRetrieveResponse;
15+
import com.sparkpost.resources.ResourceTemplates;
16+
import com.sparkpost.sdk.samples.helpers.SparkPostBaseApp;
17+
import com.sparkpost.transport.RestConnection;
18+
19+
/**
20+
* List all templates stored in a SparkPost account
21+
*/
22+
public class RetrieveAllTemplatesSample extends SparkPostBaseApp {
23+
24+
static final Logger logger = Logger.getLogger(CreateTemplateSimple.class);
25+
26+
private Client client;
27+
28+
public static void main(String[] args) throws SparkPostException, IOException {
29+
Logger.getRootLogger().setLevel(Level.DEBUG);
30+
31+
RetrieveAllTemplatesSample sample = new RetrieveAllTemplatesSample();
32+
sample.runApp();
33+
}
34+
35+
private void runApp() throws SparkPostException, IOException {
36+
this.client = this.newConfiguredClient();
37+
RestConnection connection = new RestConnection(this.client, getEndPoint());
38+
TemplateListResponse listResponse = ResourceTemplates.listAll(connection);
39+
40+
List<TemplateItem> results = listResponse.getResults();
41+
42+
// Print out the templates
43+
System.out.println("Found " + results.size() + " tempaltes");
44+
for (TemplateItem item : results) {
45+
System.out.println("\tName \"" + item.getName() + "\" updated " + item.getLastUpdateTime());
46+
TemplateRetrieveResponse templateResponse = ResourceTemplates.retrieve(connection, item.getId(), !item.getPublished());
47+
System.out.println("Content: " + templateResponse.getResponseBody());
48+
49+
}
50+
}
51+
}

libs/sparkpost-lib/src/main/java/com/sparkpost/model/TemplateAttributes.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11

22
package com.sparkpost.model;
33

4+
import com.sparkpost.model.responses.TemplateItemResponse;
5+
import com.sparkpost.model.responses.TemplateItemResponse.TemplateOptionsData;
6+
import com.sparkpost.model.responses.TemplateRetrieveResponse;
47
import com.yepher.jsondoc.annotations.Description;
58

69
import lombok.Data;
@@ -13,6 +16,36 @@
1316
@EqualsAndHashCode(callSuper = true)
1417
public class TemplateAttributes extends Base {
1518

19+
public TemplateAttributes() {
20+
21+
}
22+
23+
public TemplateAttributes(TemplateRetrieveResponse response) {
24+
TemplateItemResponse template = response.getResults();
25+
if (template == null) {
26+
return;
27+
}
28+
29+
setName(template.getName());
30+
setId(template.getId());
31+
setPublished(template.getPublished());
32+
setDescription(template.getDescription());
33+
34+
TemplateContentAttributes content = new TemplateContentAttributes();
35+
TemplateContentAttributes otherContent = template.getContent();
36+
content.setSubject(otherContent.getSubject());
37+
content.setEmailRFC822(template.getContent().getEmailRFC822());
38+
content.setText(otherContent.getText());
39+
content.setHtml(otherContent.getHtml());
40+
template.setContent(content);
41+
42+
OptionsAttributes options = new OptionsAttributes();
43+
TemplateOptionsData otherOptions = template.getOptions();
44+
options.setClickTracking(otherOptions.getClickTracking());
45+
options.setOpenTracking(otherOptions.getOpenTracking());
46+
//options.setInlineCss(otherOptions.getInlineCss());
47+
}
48+
1649
/**
1750
* Short, unique, alphanumeric ID used to reference the template
1851
* After a template has been created, this property cannot be changed. Maximum length - 64 bytes
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
2+
package com.sparkpost.model.responses;
3+
4+
import com.google.gson.annotations.SerializedName;
5+
import com.sparkpost.model.TemplateContentAttributes;
6+
import com.yepher.jsondoc.annotations.Description;
7+
8+
import lombok.Data;
9+
import lombok.EqualsAndHashCode;
10+
11+
@Data
12+
@EqualsAndHashCode(callSuper = true)
13+
public class TemplateItemResponse extends Response {
14+
15+
@Data
16+
public static final class TemplateOptionsData {
17+
18+
@Description(value = "Enable or disable open tracking", sample = {""})
19+
@SerializedName("open_tracking")
20+
private Boolean openTracking;
21+
22+
@Description(value = "Enable or disable click tracking", sample = {""})
23+
@SerializedName("click_tracking")
24+
private Boolean clickTracking;
25+
26+
@Description(value = "Distinguish between transactional and non-transactional messages for unsubscribe and suppression purposes", sample = {""})
27+
private Boolean transactional;
28+
}
29+
30+
@Description(value = "Short, unique, alphanumeric ID used to reference the template", sample = {""})
31+
private String id;
32+
33+
@Description(value = "Whether the template is published or is a draft version", sample = {""})
34+
private Boolean published;
35+
36+
@Description(value = "Editable display name", sample = {""})
37+
private String name;
38+
39+
@Description(value = "Detailed description of the template", sample = {""})
40+
private String description;
41+
42+
@Description(value = "Content for a template", sample = {""})
43+
@SerializedName("content")
44+
private TemplateContentAttributes content;
45+
46+
@Description(value = "object in which template options are defined", sample = {""})
47+
private TemplateOptionsData options;
48+
49+
/**
50+
* Whether or not to perform CSS inlining in HTML content
51+
* Defaults to false
52+
*/
53+
@Description(value = "Whether or not to perform CSS inlining in HTML content.", sample = {""})
54+
@SerializedName("inline_css")
55+
private Boolean inlineCss;
56+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
package com.sparkpost.model.responses;
3+
4+
import com.yepher.jsondoc.annotations.Description;
5+
6+
import lombok.Data;
7+
import lombok.EqualsAndHashCode;
8+
9+
@Data
10+
@EqualsAndHashCode(callSuper = true)
11+
public class TemplateRetrieveResponse extends Response {
12+
13+
@Data
14+
public static final class Results {
15+
16+
private TemplateItemResponse templateItem;
17+
}
18+
19+
@Description(value = "", sample = {""})
20+
private TemplateItemResponse results;
21+
22+
}

libs/sparkpost-lib/src/main/java/com/sparkpost/resources/ResourceTemplates.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import com.sparkpost.model.TemplateSubstitutionData;
77
import com.sparkpost.model.responses.Response;
88
import com.sparkpost.model.responses.TemplateCreateResponse;
9+
import com.sparkpost.model.responses.TemplateItemResponse;
910
import com.sparkpost.model.responses.TemplateListResponse;
1011
import com.sparkpost.model.responses.TemplatePreviewResponse;
12+
import com.sparkpost.model.responses.TemplateRetrieveResponse;
1113
import com.sparkpost.transport.RestConnection;
1214

1315
/**
@@ -16,8 +18,6 @@
1618
* <br>
1719
* See <a href="https://www.sparkpost.com/api#/reference/templates/">Templates
1820
* API</a>
19-
*
20-
* @author grava
2121
*/
2222
public class ResourceTemplates {
2323

@@ -29,12 +29,14 @@ public static TemplateCreateResponse create(RestConnection conn, TemplateAttribu
2929
return createResponse;
3030
}
3131

32-
public static Response retrieve(RestConnection conn, String id, Boolean draft) throws SparkPostException {
32+
public static TemplateRetrieveResponse retrieve(RestConnection conn, String id, Boolean draft) throws SparkPostException {
3333

3434
Endpoint ep = new Endpoint("templates/" + id);
3535
ep.addParam("draft", draft);
3636
Response response = conn.get(ep.toString());
37-
return response;
37+
38+
TemplateRetrieveResponse templateResponse = (TemplateRetrieveResponse) TemplateItemResponse.decode(response, TemplateRetrieveResponse.class);
39+
return templateResponse;
3840
}
3941

4042
public static TemplateListResponse listAll(RestConnection conn) throws SparkPostException {

0 commit comments

Comments
 (0)