From 893c11746b8bfb108c56239b762c8a5581e0a176 Mon Sep 17 00:00:00 2001 From: pryrnjn Date: Fri, 13 May 2022 08:11:00 +0530 Subject: [PATCH 1/6] triggercampaign API support --- pom.xml | 7 ++++ .../marketo/sdk/MarketoClientManager.java | 4 ++ .../marketo/sdk/domain/campaign/LeadId.java | 11 +++++ .../campaign/TriggerCampaignResult.java | 10 +++++ .../sdk/rest/MarketoRestClientManager.java | 5 +++ .../rest/MarketoTriggerCampaignClient.java | 24 +++++++++++ .../RequestTriggerCampaign.java | 40 +++++++++++++++++++ 7 files changed, 101 insertions(+) create mode 100644 src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java create mode 100644 src/main/java/com/smartling/marketo/sdk/domain/campaign/TriggerCampaignResult.java create mode 100644 src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java create mode 100644 src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java diff --git a/pom.xml b/pom.xml index c1aa8a4..39a1c7c 100644 --- a/pom.xml +++ b/pom.xml @@ -184,6 +184,13 @@ guava 18.0 + + + org.projectlombok + lombok + 1.18.24 + provided + junit diff --git a/src/main/java/com/smartling/marketo/sdk/MarketoClientManager.java b/src/main/java/com/smartling/marketo/sdk/MarketoClientManager.java index a9bcfcb..37c8a44 100644 --- a/src/main/java/com/smartling/marketo/sdk/MarketoClientManager.java +++ b/src/main/java/com/smartling/marketo/sdk/MarketoClientManager.java @@ -1,5 +1,7 @@ package com.smartling.marketo.sdk; +import com.smartling.marketo.sdk.rest.MarketoTriggerCampaignClient; + public interface MarketoClientManager { MarketoFolderClient getMarketoFolderClient(); @@ -18,4 +20,6 @@ public interface MarketoClientManager { MarketoProgramClient getMarketoProgramClient(); MarketoTokenClient getMarketoTokenClient(); + + MarketoTriggerCampaignClient getMarketoTriggerCampaignClient(); } diff --git a/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java b/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java new file mode 100644 index 0000000..b7a4ba0 --- /dev/null +++ b/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java @@ -0,0 +1,11 @@ +package com.smartling.marketo.sdk.domain.campaign; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter @Setter @ToString +public class LeadId { + private int id; + +} diff --git a/src/main/java/com/smartling/marketo/sdk/domain/campaign/TriggerCampaignResult.java b/src/main/java/com/smartling/marketo/sdk/domain/campaign/TriggerCampaignResult.java new file mode 100644 index 0000000..50804ea --- /dev/null +++ b/src/main/java/com/smartling/marketo/sdk/domain/campaign/TriggerCampaignResult.java @@ -0,0 +1,10 @@ +package com.smartling.marketo.sdk.domain.campaign; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter @Setter @ToString +public class TriggerCampaignResult { + private int id; +} diff --git a/src/main/java/com/smartling/marketo/sdk/rest/MarketoRestClientManager.java b/src/main/java/com/smartling/marketo/sdk/rest/MarketoRestClientManager.java index de4ed31..87e3589 100644 --- a/src/main/java/com/smartling/marketo/sdk/rest/MarketoRestClientManager.java +++ b/src/main/java/com/smartling/marketo/sdk/rest/MarketoRestClientManager.java @@ -74,6 +74,11 @@ public MarketoTokenClient getMarketoTokenClient() { return new MarketoTokenRestClient(httpCommandExecutor); } + @Override + public MarketoTriggerCampaignClient getMarketoTriggerCampaignClient() { + return new MarketoTriggerCampaignClient(httpCommandExecutor); + } + public final static class Builder { private final String identityUrl; private final String restUrl; diff --git a/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java b/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java new file mode 100644 index 0000000..83182dd --- /dev/null +++ b/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java @@ -0,0 +1,24 @@ +package com.smartling.marketo.sdk.rest; + +import com.smartling.marketo.sdk.MarketoApiException; +import com.smartling.marketo.sdk.domain.campaign.LeadId; +import com.smartling.marketo.sdk.domain.campaign.TriggerCampaignResult; +import com.smartling.marketo.sdk.rest.command.triggercampaign.RequestTriggerCampaign; + +import java.util.List; + +public class MarketoTriggerCampaignClient { + + private final HttpCommandExecutor httpCommandExecutor; + + MarketoTriggerCampaignClient(HttpCommandExecutor httpCommandExecutor) { + this.httpCommandExecutor = httpCommandExecutor; + } + + public TriggerCampaignResult requestTriggerCampaign(int campaignId, List leadIds) + throws MarketoApiException { + List triggerCampaignResults = httpCommandExecutor.execute( + new RequestTriggerCampaign(campaignId, leadIds)); + return triggerCampaignResults.get(0); + } +} diff --git a/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java new file mode 100644 index 0000000..dc173bd --- /dev/null +++ b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java @@ -0,0 +1,40 @@ +package com.smartling.marketo.sdk.rest.command.triggercampaign; + +import com.google.common.collect.ImmutableMap; +import com.smartling.marketo.sdk.domain.campaign.LeadId; +import com.smartling.marketo.sdk.domain.campaign.TriggerCampaignResult; +import com.smartling.marketo.sdk.rest.command.BaseMarketoCommand; + +import java.util.List; +import java.util.Map; + +public class RequestTriggerCampaign extends BaseMarketoCommand { + + private final int campaignId; + private final List leadIds; + + public RequestTriggerCampaign(int campaignId, List leadIds) { + super(TriggerCampaignResult.class); + this.campaignId = campaignId; + this.leadIds = leadIds; + } + + @Override + public String getPath() { + return "/rest/v1/campaigns/{id}" + campaignId + "/trigger.json"; + } + + @Override + public String getMethod() { + return "POST"; + } + + @Override + public Map getParameters() { + ImmutableMap.Builder builder = ImmutableMap.builder() + .put("leads", this.leadIds.toArray()) + .put("tokens", new Object[]{}); + + return builder.build(); + } +} From 7f072791f5b3588a8b666e8a7eb253e12d89a9e8 Mon Sep 17 00:00:00 2001 From: pryrnjn Date: Fri, 13 May 2022 08:31:07 +0530 Subject: [PATCH 2/6] List to array --- .../triggercampaign/RequestTriggerCampaign.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java index dc173bd..eab064a 100644 --- a/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java +++ b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java @@ -11,9 +11,15 @@ public class RequestTriggerCampaign extends BaseMarketoCommand { private final int campaignId; - private final List leadIds; + private final LeadId[] leadIds; public RequestTriggerCampaign(int campaignId, List leadIds) { + super(TriggerCampaignResult.class); + this.campaignId = campaignId; + this.leadIds = (LeadId[]) leadIds.toArray(); + } + + public RequestTriggerCampaign(int campaignId, LeadId[] leadIds) { super(TriggerCampaignResult.class); this.campaignId = campaignId; this.leadIds = leadIds; @@ -32,7 +38,7 @@ public String getMethod() { @Override public Map getParameters() { ImmutableMap.Builder builder = ImmutableMap.builder() - .put("leads", this.leadIds.toArray()) + .put("leads", this.leadIds) .put("tokens", new Object[]{}); return builder.build(); From 1afc03a4a7dfd38da6937a7932d53cb9ecd11243 Mon Sep 17 00:00:00 2001 From: pryrnjn Date: Fri, 13 May 2022 08:34:00 +0530 Subject: [PATCH 3/6] constructor --- .../com/smartling/marketo/sdk/domain/campaign/LeadId.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java b/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java index b7a4ba0..fad8792 100644 --- a/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java +++ b/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java @@ -1,11 +1,11 @@ package com.smartling.marketo.sdk.domain.campaign; +import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import lombok.ToString; -@Getter @Setter @ToString +@Getter @Setter @ToString @AllArgsConstructor public class LeadId { private int id; - } From 7956ca21ea45a718d64b91a13ec76d9d70c9b2bf Mon Sep 17 00:00:00 2001 From: pryrnjn Date: Fri, 13 May 2022 15:38:28 +0530 Subject: [PATCH 4/6] path param fix --- .../rest/command/triggercampaign/RequestTriggerCampaign.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java index eab064a..be5eead 100644 --- a/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java +++ b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java @@ -27,7 +27,7 @@ public RequestTriggerCampaign(int campaignId, LeadId[] leadIds) { @Override public String getPath() { - return "/rest/v1/campaigns/{id}" + campaignId + "/trigger.json"; + return "/rest/v1/campaigns/" + campaignId + "/trigger.json"; } @Override From a24f918d6d89b44ccfc1a97a85b260b024b08163 Mon Sep 17 00:00:00 2001 From: pryrnjn Date: Fri, 13 May 2022 17:31:39 +0530 Subject: [PATCH 5/6] changes to support POST_BODY --- .../marketo/sdk/domain/campaign/LeadId.java | 11 ------ .../campaign/TriggerCampaignRequest.java | 36 +++++++++++++++++++ .../rest/MarketoTriggerCampaignClient.java | 14 ++++++-- .../RequestTriggerCampaign.java | 24 +++++-------- .../transport/JaxRsHttpCommandExecutor.java | 7 +++- 5 files changed, 61 insertions(+), 31 deletions(-) delete mode 100644 src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java create mode 100644 src/main/java/com/smartling/marketo/sdk/domain/campaign/TriggerCampaignRequest.java diff --git a/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java b/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java deleted file mode 100644 index fad8792..0000000 --- a/src/main/java/com/smartling/marketo/sdk/domain/campaign/LeadId.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.smartling.marketo.sdk.domain.campaign; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -@Getter @Setter @ToString @AllArgsConstructor -public class LeadId { - private int id; -} diff --git a/src/main/java/com/smartling/marketo/sdk/domain/campaign/TriggerCampaignRequest.java b/src/main/java/com/smartling/marketo/sdk/domain/campaign/TriggerCampaignRequest.java new file mode 100644 index 0000000..a881895 --- /dev/null +++ b/src/main/java/com/smartling/marketo/sdk/domain/campaign/TriggerCampaignRequest.java @@ -0,0 +1,36 @@ +package com.smartling.marketo.sdk.domain.campaign; + + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +@AllArgsConstructor +public class TriggerCampaignRequest { + + private LeadId[] leads; + private Token[] tokens; + + @Getter + @Setter + @ToString + @AllArgsConstructor + public static class LeadId { + + private int id; + } + + @Getter + @Setter + @ToString + @AllArgsConstructor + public static class Token { + + private String name; + private String value; + } +} diff --git a/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java b/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java index 83182dd..e5d7a4e 100644 --- a/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java +++ b/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java @@ -1,7 +1,7 @@ package com.smartling.marketo.sdk.rest; import com.smartling.marketo.sdk.MarketoApiException; -import com.smartling.marketo.sdk.domain.campaign.LeadId; +import com.smartling.marketo.sdk.domain.campaign.TriggerCampaignRequest; import com.smartling.marketo.sdk.domain.campaign.TriggerCampaignResult; import com.smartling.marketo.sdk.rest.command.triggercampaign.RequestTriggerCampaign; @@ -15,10 +15,18 @@ public class MarketoTriggerCampaignClient { this.httpCommandExecutor = httpCommandExecutor; } - public TriggerCampaignResult requestTriggerCampaign(int campaignId, List leadIds) + public TriggerCampaignResult requestTriggerCampaign(int campaignId, + TriggerCampaignRequest.LeadId[] leadIds) + throws MarketoApiException { + return this.requestTriggerCampaign(campaignId, leadIds, + new TriggerCampaignRequest.Token[]{}); + } + + public TriggerCampaignResult requestTriggerCampaign(int campaignId, + TriggerCampaignRequest.LeadId[] leadIds, TriggerCampaignRequest.Token[] tokens) throws MarketoApiException { List triggerCampaignResults = httpCommandExecutor.execute( - new RequestTriggerCampaign(campaignId, leadIds)); + new RequestTriggerCampaign(campaignId, leadIds, tokens)); return triggerCampaignResults.get(0); } } diff --git a/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java index be5eead..ed7dede 100644 --- a/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java +++ b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/RequestTriggerCampaign.java @@ -1,46 +1,38 @@ package com.smartling.marketo.sdk.rest.command.triggercampaign; import com.google.common.collect.ImmutableMap; -import com.smartling.marketo.sdk.domain.campaign.LeadId; +import com.smartling.marketo.sdk.domain.campaign.TriggerCampaignRequest; import com.smartling.marketo.sdk.domain.campaign.TriggerCampaignResult; import com.smartling.marketo.sdk.rest.command.BaseMarketoCommand; -import java.util.List; import java.util.Map; public class RequestTriggerCampaign extends BaseMarketoCommand { private final int campaignId; - private final LeadId[] leadIds; + private final TriggerCampaignRequest triggerCampaignRequest; - public RequestTriggerCampaign(int campaignId, List leadIds) { + public RequestTriggerCampaign(int campaignId, TriggerCampaignRequest.LeadId[] leadIds, + TriggerCampaignRequest.Token[] tokens) { super(TriggerCampaignResult.class); this.campaignId = campaignId; - this.leadIds = (LeadId[]) leadIds.toArray(); - } - - public RequestTriggerCampaign(int campaignId, LeadId[] leadIds) { - super(TriggerCampaignResult.class); - this.campaignId = campaignId; - this.leadIds = leadIds; + this.triggerCampaignRequest = new TriggerCampaignRequest(leadIds, tokens); } @Override public String getPath() { - return "/rest/v1/campaigns/" + campaignId + "/trigger.json"; + return "/v1/campaigns/" + campaignId + "/trigger.json"; } @Override public String getMethod() { - return "POST"; + return "POST_BODY"; } @Override public Map getParameters() { ImmutableMap.Builder builder = ImmutableMap.builder() - .put("leads", this.leadIds) - .put("tokens", new Object[]{}); - + .put("input", this.triggerCampaignRequest); return builder.build(); } } diff --git a/src/main/java/com/smartling/marketo/sdk/rest/transport/JaxRsHttpCommandExecutor.java b/src/main/java/com/smartling/marketo/sdk/rest/transport/JaxRsHttpCommandExecutor.java index 51a278b..827242f 100644 --- a/src/main/java/com/smartling/marketo/sdk/rest/transport/JaxRsHttpCommandExecutor.java +++ b/src/main/java/com/smartling/marketo/sdk/rest/transport/JaxRsHttpCommandExecutor.java @@ -121,7 +121,12 @@ private MarketoResponse execute(Invocation.Builder invocationBuilder, Com MultiPart multiPartEntity = toMultipart(processParameters(command.getParameters(), false)); Entity entity = Entity.entity(multiPartEntity, multiPartEntity.getMediaType()); marketoResponse = invocationBuilder.post(entity, typeToken); - } else { + } else if ("POST_BODY".equalsIgnoreCase(command.getMethod())) { + Map body = processParameters(command.getParameters(), false); + Entity entity = Entity.entity(body, MediaType.APPLICATION_JSON_TYPE.withCharset("UTF-8")); + marketoResponse = invocationBuilder.post(entity, typeToken); + } + else { marketoResponse = invocationBuilder.method(command.getMethod(), typeToken); } From fc385add8486c80c2b5d7f13df3c78aaf5b35663 Mon Sep 17 00:00:00 2001 From: pryrnjn Date: Fri, 13 May 2022 17:46:06 +0530 Subject: [PATCH 6/6] ActivateSmartCampaign --- .../rest/MarketoTriggerCampaignClient.java | 10 ++++++++ .../ActivateSmartCampaign.java | 23 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/ActivateSmartCampaign.java diff --git a/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java b/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java index e5d7a4e..ddc6f75 100644 --- a/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java +++ b/src/main/java/com/smartling/marketo/sdk/rest/MarketoTriggerCampaignClient.java @@ -3,6 +3,7 @@ import com.smartling.marketo.sdk.MarketoApiException; import com.smartling.marketo.sdk.domain.campaign.TriggerCampaignRequest; import com.smartling.marketo.sdk.domain.campaign.TriggerCampaignResult; +import com.smartling.marketo.sdk.rest.command.triggercampaign.ActivateSmartCampaign; import com.smartling.marketo.sdk.rest.command.triggercampaign.RequestTriggerCampaign; import java.util.List; @@ -29,4 +30,13 @@ public TriggerCampaignResult requestTriggerCampaign(int campaignId, new RequestTriggerCampaign(campaignId, leadIds, tokens)); return triggerCampaignResults.get(0); } + + public TriggerCampaignResult activateSmartCampaign(int campaignId) + throws MarketoApiException { + List triggerCampaignResults = httpCommandExecutor.execute( + new ActivateSmartCampaign(campaignId)); + return triggerCampaignResults.get(0); + } + + } diff --git a/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/ActivateSmartCampaign.java b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/ActivateSmartCampaign.java new file mode 100644 index 0000000..9797528 --- /dev/null +++ b/src/main/java/com/smartling/marketo/sdk/rest/command/triggercampaign/ActivateSmartCampaign.java @@ -0,0 +1,23 @@ +package com.smartling.marketo.sdk.rest.command.triggercampaign; + +import com.smartling.marketo.sdk.domain.campaign.TriggerCampaignResult; +import com.smartling.marketo.sdk.rest.command.BaseMarketoCommand; + +public class ActivateSmartCampaign extends BaseMarketoCommand { + private final int campaignId; + + public ActivateSmartCampaign(int campaignId) { + super(TriggerCampaignResult.class); + this.campaignId = campaignId; + } + + @Override + public String getPath() { + return "/asset/v1/smartCampaign/" + campaignId + "/activate.json"; + } + + @Override + public String getMethod() { + return "POST_BODY"; + } +}