From 043a793bbb84f68b4aed32c8a7755b5386a7acc1 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 6 Apr 2016 15:59:13 -0500 Subject: [PATCH 1/3] Adds concrete response for retrieving templates --- .../samples/RetrieveAllTemplatesSample.java | 51 +++++++++++++++++ .../sparkpost/model/TemplateAttributes.java | 33 +++++++++++ .../model/responses/TemplateItemResponse.java | 56 +++++++++++++++++++ .../responses/TemplateRetrieveResponse.java | 22 ++++++++ .../resources/ResourceTemplates.java | 10 ++-- 5 files changed, 168 insertions(+), 4 deletions(-) create mode 100644 apps/sparkpost-samples-app/src/main/java/com/sparkpost/samples/RetrieveAllTemplatesSample.java create mode 100644 libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateItemResponse.java create mode 100644 libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateRetrieveResponse.java diff --git a/apps/sparkpost-samples-app/src/main/java/com/sparkpost/samples/RetrieveAllTemplatesSample.java b/apps/sparkpost-samples-app/src/main/java/com/sparkpost/samples/RetrieveAllTemplatesSample.java new file mode 100644 index 0000000..f45c2ac --- /dev/null +++ b/apps/sparkpost-samples-app/src/main/java/com/sparkpost/samples/RetrieveAllTemplatesSample.java @@ -0,0 +1,51 @@ + +package com.sparkpost.samples; + +import java.io.IOException; +import java.util.List; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import com.sparkpost.Client; +import com.sparkpost.exception.SparkPostException; +import com.sparkpost.model.TemplateItem; +import com.sparkpost.model.responses.TemplateListResponse; +import com.sparkpost.model.responses.TemplateRetrieveResponse; +import com.sparkpost.resources.ResourceTemplates; +import com.sparkpost.sdk.samples.helpers.SparkPostBaseApp; +import com.sparkpost.transport.RestConnection; + +/** + * List all templates stored in a SparkPost account + */ +public class RetrieveAllTemplatesSample extends SparkPostBaseApp { + + static final Logger logger = Logger.getLogger(CreateTemplateSimple.class); + + private Client client; + + public static void main(String[] args) throws SparkPostException, IOException { + Logger.getRootLogger().setLevel(Level.DEBUG); + + RetrieveAllTemplatesSample sample = new RetrieveAllTemplatesSample(); + sample.runApp(); + } + + private void runApp() throws SparkPostException, IOException { + this.client = this.newConfiguredClient(); + RestConnection connection = new RestConnection(this.client, getEndPoint()); + TemplateListResponse listResponse = ResourceTemplates.listAll(connection); + + List results = listResponse.getResults(); + + // Print out the templates + System.out.println("Found " + results.size() + " tempaltes"); + for (TemplateItem item : results) { + System.out.println("\tName \"" + item.getName() + "\" updated " + item.getLastUpdateTime()); + TemplateRetrieveResponse templateResponse = ResourceTemplates.retrieve(connection, item.getId(), !item.getPublished()); + System.out.println("Content: " + templateResponse.getResponseBody()); + + } + } +} diff --git a/libs/sparkpost-lib/src/main/java/com/sparkpost/model/TemplateAttributes.java b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/TemplateAttributes.java index 2e54f53..6c317c9 100644 --- a/libs/sparkpost-lib/src/main/java/com/sparkpost/model/TemplateAttributes.java +++ b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/TemplateAttributes.java @@ -1,6 +1,9 @@ package com.sparkpost.model; +import com.sparkpost.model.responses.TemplateItemResponse; +import com.sparkpost.model.responses.TemplateItemResponse.TemplateOptionsData; +import com.sparkpost.model.responses.TemplateRetrieveResponse; import com.yepher.jsondoc.annotations.Description; import lombok.Data; @@ -13,6 +16,36 @@ @EqualsAndHashCode(callSuper = true) public class TemplateAttributes extends Base { + public TemplateAttributes() { + + } + + public TemplateAttributes(TemplateRetrieveResponse response) { + TemplateItemResponse template = response.getResults(); + if (template == null) { + return; + } + + setName(template.getName()); + setId(template.getId()); + setPublished(template.getPublished()); + setDescription(template.getDescription()); + + TemplateContentAttributes content = new TemplateContentAttributes(); + TemplateContentAttributes otherContent = template.getContent(); + content.setSubject(otherContent.getSubject()); + content.setEmailRFC822(template.getContent().getEmailRFC822()); + content.setText(otherContent.getText()); + content.setHtml(otherContent.getHtml()); + template.setContent(content); + + OptionsAttributes options = new OptionsAttributes(); + TemplateOptionsData otherOptions = template.getOptions(); + options.setClickTracking(otherOptions.getClickTracking()); + options.setOpenTracking(otherOptions.getOpenTracking()); + //options.setInlineCss(otherOptions.getInlineCss()); + } + /** * Short, unique, alphanumeric ID used to reference the template * After a template has been created, this property cannot be changed. Maximum length - 64 bytes diff --git a/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateItemResponse.java b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateItemResponse.java new file mode 100644 index 0000000..3ac6d31 --- /dev/null +++ b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateItemResponse.java @@ -0,0 +1,56 @@ + +package com.sparkpost.model.responses; + +import com.google.gson.annotations.SerializedName; +import com.sparkpost.model.TemplateContentAttributes; +import com.yepher.jsondoc.annotations.Description; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class TemplateItemResponse extends Response { + + @Data + public static final class TemplateOptionsData { + + @Description(value = "Enable or disable open tracking", sample = {""}) + @SerializedName("open_tracking") + private Boolean openTracking; + + @Description(value = "Enable or disable click tracking", sample = {""}) + @SerializedName("click_tracking") + private Boolean clickTracking; + + @Description(value = "Distinguish between transactional and non-transactional messages for unsubscribe and suppression purposes", sample = {""}) + private Boolean transactional; + } + + @Description(value = "Short, unique, alphanumeric ID used to reference the template", sample = {""}) + private String id; + + @Description(value = "Whether the template is published or is a draft version", sample = {""}) + private Boolean published; + + @Description(value = "Editable display name", sample = {""}) + private String name; + + @Description(value = "Detailed description of the template", sample = {""}) + private String description; + + @Description(value = "Content for a template", sample = {""}) + @SerializedName("content") + private TemplateContentAttributes content; + + @Description(value = "object in which template options are defined", sample = {""}) + private TemplateOptionsData options; + + /** + * Whether or not to perform CSS inlining in HTML content + * Defaults to false + */ + @Description(value = "Whether or not to perform CSS inlining in HTML content.", sample = {""}) + @SerializedName("inline_css") + private Boolean inlineCss; +} diff --git a/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateRetrieveResponse.java b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateRetrieveResponse.java new file mode 100644 index 0000000..92d5292 --- /dev/null +++ b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateRetrieveResponse.java @@ -0,0 +1,22 @@ + +package com.sparkpost.model.responses; + +import com.yepher.jsondoc.annotations.Description; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class TemplateRetrieveResponse extends Response { + + @Data + public static final class Results { + + private TemplateItemResponse templateItem; + } + + @Description(value = "", sample = {""}) + private TemplateItemResponse results; + +} diff --git a/libs/sparkpost-lib/src/main/java/com/sparkpost/resources/ResourceTemplates.java b/libs/sparkpost-lib/src/main/java/com/sparkpost/resources/ResourceTemplates.java index a02cff1..c3c0b9e 100644 --- a/libs/sparkpost-lib/src/main/java/com/sparkpost/resources/ResourceTemplates.java +++ b/libs/sparkpost-lib/src/main/java/com/sparkpost/resources/ResourceTemplates.java @@ -6,8 +6,10 @@ import com.sparkpost.model.TemplateSubstitutionData; import com.sparkpost.model.responses.Response; import com.sparkpost.model.responses.TemplateCreateResponse; +import com.sparkpost.model.responses.TemplateItemResponse; import com.sparkpost.model.responses.TemplateListResponse; import com.sparkpost.model.responses.TemplatePreviewResponse; +import com.sparkpost.model.responses.TemplateRetrieveResponse; import com.sparkpost.transport.RestConnection; /** @@ -16,8 +18,6 @@ *
* See Templates * API - * - * @author grava */ public class ResourceTemplates { @@ -29,12 +29,14 @@ public static TemplateCreateResponse create(RestConnection conn, TemplateAttribu return createResponse; } - public static Response retrieve(RestConnection conn, String id, Boolean draft) throws SparkPostException { + public static TemplateRetrieveResponse retrieve(RestConnection conn, String id, Boolean draft) throws SparkPostException { Endpoint ep = new Endpoint("templates/" + id); ep.addParam("draft", draft); Response response = conn.get(ep.toString()); - return response; + + TemplateRetrieveResponse templateResponse = (TemplateRetrieveResponse) TemplateItemResponse.decode(response, TemplateRetrieveResponse.class); + return templateResponse; } public static TemplateListResponse listAll(RestConnection conn) throws SparkPostException { From d5841a14f7e43dfcca6412816a98ee3776384068 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 6 Apr 2016 16:12:48 -0500 Subject: [PATCH 2/3] removes extra CTOR --- .../sparkpost/model/TemplateAttributes.java | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/libs/sparkpost-lib/src/main/java/com/sparkpost/model/TemplateAttributes.java b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/TemplateAttributes.java index 6c317c9..ef3c7eb 100644 --- a/libs/sparkpost-lib/src/main/java/com/sparkpost/model/TemplateAttributes.java +++ b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/TemplateAttributes.java @@ -1,9 +1,6 @@ package com.sparkpost.model; -import com.sparkpost.model.responses.TemplateItemResponse; -import com.sparkpost.model.responses.TemplateItemResponse.TemplateOptionsData; -import com.sparkpost.model.responses.TemplateRetrieveResponse; import com.yepher.jsondoc.annotations.Description; import lombok.Data; @@ -20,32 +17,6 @@ public TemplateAttributes() { } - public TemplateAttributes(TemplateRetrieveResponse response) { - TemplateItemResponse template = response.getResults(); - if (template == null) { - return; - } - - setName(template.getName()); - setId(template.getId()); - setPublished(template.getPublished()); - setDescription(template.getDescription()); - - TemplateContentAttributes content = new TemplateContentAttributes(); - TemplateContentAttributes otherContent = template.getContent(); - content.setSubject(otherContent.getSubject()); - content.setEmailRFC822(template.getContent().getEmailRFC822()); - content.setText(otherContent.getText()); - content.setHtml(otherContent.getHtml()); - template.setContent(content); - - OptionsAttributes options = new OptionsAttributes(); - TemplateOptionsData otherOptions = template.getOptions(); - options.setClickTracking(otherOptions.getClickTracking()); - options.setOpenTracking(otherOptions.getOpenTracking()); - //options.setInlineCss(otherOptions.getInlineCss()); - } - /** * Short, unique, alphanumeric ID used to reference the template * After a template has been created, this property cannot be changed. Maximum length - 64 bytes From 91828629c190328e7366f4d0e002d6ba0afa5e7d Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 7 Apr 2016 13:46:53 -0500 Subject: [PATCH 3/3] Removes dead class. --- .../sparkpost/model/responses/TemplateRetrieveResponse.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateRetrieveResponse.java b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateRetrieveResponse.java index 92d5292..f2b4007 100644 --- a/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateRetrieveResponse.java +++ b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateRetrieveResponse.java @@ -10,12 +10,6 @@ @EqualsAndHashCode(callSuper = true) public class TemplateRetrieveResponse extends Response { - @Data - public static final class Results { - - private TemplateItemResponse templateItem; - } - @Description(value = "", sample = {""}) private TemplateItemResponse results;