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..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 @@ -13,6 +13,10 @@ @EqualsAndHashCode(callSuper = true) public class TemplateAttributes extends Base { + public TemplateAttributes() { + + } + /** * 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..f2b4007 --- /dev/null +++ b/libs/sparkpost-lib/src/main/java/com/sparkpost/model/responses/TemplateRetrieveResponse.java @@ -0,0 +1,16 @@ + +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 { + + @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 {