Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
23 changes: 23 additions & 0 deletions .project
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>pardot-java-client</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
6 changes: 6 additions & 0 deletions .settings/org.eclipse.core.resources.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
encoding//src/test/resources=UTF-8
encoding/<project>=UTF-8
8 changes: 8 additions & 0 deletions .settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
17 changes: 17 additions & 0 deletions src/main/java/com/darksci/pardot/api/PardotClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import com.darksci.pardot.api.parser.opportunity.OpportunityReadResponseParser;
import com.darksci.pardot.api.parser.prospect.ProspectQueryResponseParser;
import com.darksci.pardot.api.parser.prospect.ProspectReadResponseParser;
import com.darksci.pardot.api.parser.prospectaccount.ProspectAccountQueryResponseParser;
import com.darksci.pardot.api.parser.tag.TagQueryResponseParser;
import com.darksci.pardot.api.parser.tag.TagReadResponseParser;
import com.darksci.pardot.api.parser.tagobject.TagObjectQueryResponseParser;
Expand Down Expand Up @@ -117,6 +118,7 @@
import com.darksci.pardot.api.request.prospect.ProspectUnassignRequest;
import com.darksci.pardot.api.request.prospect.ProspectUpdateRequest;
import com.darksci.pardot.api.request.prospect.ProspectUpsertRequest;
import com.darksci.pardot.api.request.prospectaccount.ProspectAccountQueryRequest;
import com.darksci.pardot.api.request.tag.TagQueryRequest;
import com.darksci.pardot.api.request.tag.TagReadRequest;
import com.darksci.pardot.api.request.tagobject.TagObjectQueryRequest;
Expand Down Expand Up @@ -163,6 +165,7 @@
import com.darksci.pardot.api.response.opportunity.OpportunityQueryResponse;
import com.darksci.pardot.api.response.prospect.Prospect;
import com.darksci.pardot.api.response.prospect.ProspectQueryResponse;
import com.darksci.pardot.api.response.prospectaccount.ProspectAccountQueryResponse;
import com.darksci.pardot.api.response.tag.Tag;
import com.darksci.pardot.api.response.tag.TagQueryResponse;
import com.darksci.pardot.api.response.tagobject.TagObject;
Expand Down Expand Up @@ -1095,6 +1098,18 @@ public VisitorActivityQueryResponse.Result visitorActivityQuery(final VisitorAct
.orElseThrowInvalidRequestException();
}


/**
* Make API request to query prospectAccounts.
* @param request Request definition.
* @return Parsed api response.
*/
public ProspectAccountQueryResponse.Result prospectAccountQuery(final ProspectAccountQueryRequest request) {
return submitRequest (request, new ProspectAccountQueryResponseParser())
.orElseThrowInvalidRequestException();
}


/**
* Make API request to read a visitor activity.
* @param request Request definition.
Expand Down Expand Up @@ -1146,4 +1161,6 @@ private <T> Optional<T> optionalUnlessErrorCode(final Result<T> result, final Er
})
);
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.darksci.pardot.api.parser.prospectaccount;

import com.darksci.pardot.api.response.customfield.ProspectAccountCustomFieldValue;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
* Custom deserializer to be able to support Record Multiple custom fields.
*/
public class ProspectAccountCustomFieldDeserializer extends StdDeserializer<ProspectAccountCustomFieldValue> {

/**
* Constructor.
*/
public ProspectAccountCustomFieldDeserializer() {
this(null);
}

/**
* Constructor.
* @param vc the type of the class this handles.
*/
public ProspectAccountCustomFieldDeserializer(final Class<?> vc) {
super(vc);
}

@Override
public ProspectAccountCustomFieldValue deserialize(final JsonParser parser, final DeserializationContext context) throws IOException {
// Get the current custom field name.
final String fieldName = parser.getCurrentName();

// Keep track of all the values associated with the field.
final List<String> fieldValues = new ArrayList<>();

// If we have multiple values
if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
// Loop until we hit end object
while (parser.nextToken() != JsonToken.END_OBJECT) {
// Pull out each value
if (parser.getCurrentToken() == JsonToken.VALUE_STRING) {
fieldValues.add(parser.getValueAsString());
}
}
} else if (parser.getCurrentToken() == JsonToken.VALUE_STRING) {
// If we have a single value, we just record the value as is.
fieldValues.add(parser.getValueAsString());
}

// Return our deserialized instance.
return new ProspectAccountCustomFieldValue(fieldName, fieldValues);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.darksci.pardot.api.parser.prospectaccount;

import java.io.IOException;

import com.darksci.pardot.api.parser.JacksonFactory;
import com.darksci.pardot.api.parser.ResponseParser;
import com.darksci.pardot.api.response.prospectaccount.ProspectAccountQueryResponse;


/**
* Handles parsing ProspectQuery API responses into POJOs.
*/
public class ProspectAccountQueryResponseParser implements ResponseParser<ProspectAccountQueryResponse.Result> {

@Override
public ProspectAccountQueryResponse.Result parseResponse(final String responseStr) throws IOException {
return JacksonFactory.newInstance().readValue(responseStr, ProspectAccountQueryResponse.class).getResult();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.darksci.pardot.api.parser.prospectaccount;

import java.io.IOException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.darksci.pardot.api.parser.JacksonFactory;
import com.darksci.pardot.api.parser.ResponseParser;
import com.darksci.pardot.api.parser.prospectaccount.ProspectAccountReadResponseParser;
import com.darksci.pardot.api.response.prospectaccount.ProspectAccount;
import com.darksci.pardot.api.response.prospectaccount.ProspectAccountReadResponse;


/**
* Parses Prospect Read API response.
*/
public class ProspectAccountReadResponseParser implements ResponseParser<ProspectAccount> {
private static final Logger logger = LoggerFactory.getLogger(ProspectAccountReadResponseParser.class);

@Override
public ProspectAccount parseResponse(final String responseStr) throws IOException {
logger.info("{}", responseStr);
return JacksonFactory
.newInstance()
.readValue(responseStr, ProspectAccountReadResponse.class).getProspectAccount();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package com.darksci.pardot.api.request.prospectaccount;


import com.darksci.pardot.api.request.BaseQueryRequest;
import com.darksci.pardot.api.request.DateParameter;
import com.darksci.pardot.api.request.prospect.ProspectQueryRequest;

import java.util.Collection;
import java.util.stream.Collectors;



public class ProspectAccountQueryRequest extends BaseQueryRequest<ProspectAccountQueryRequest>
{

@Override
public String getApiEndpoint() {
return "prospectAccount/do/query";
}


/**
* Specifies the fields to be returned. Note: If this parameter isn't present, all default fields and custom fields
* for which the prospect has a value will be returned;
* id field will always be returned.
*
* Each call will append the field argument to the list of previously passed fields.
*
* @param fields Collection of fields to be selected by the request.
* @return RequestBuilder
*/
public ProspectAccountQueryRequest withFields(final Collection<String> fields) {
final String fieldsStr = fields.stream().collect(Collectors.joining( "," ));
final String currentValue = getParam("fields");
if (currentValue == null) {
// set
return setParam("fields", fieldsStr);
} else {
// Append
return setParam("fields", currentValue + "," + fieldsStr);
}
}

/**
* Specifies the fields to be returned. Note: If this parameter isn't present, all default fields and custom fields
* for which the prospect has a value will be returned;
* id field will always be returned.
*
* Each call will append the field argument to the list of previously passed fields.
*
* @param field Field to be selected by request.
* @return RequestBuilder
*/
public ProspectAccountQueryRequest withField(final String field) {
final String currentValue = getParam("fields");
if (currentValue == null) {
// set
return setParam("fields", field);
} else {
// Append
return setParam("fields", currentValue + "," + field);
}
}


public ProspectAccountQueryRequest withUpdatedAfter(final DateParameter dateParameter) {
return super.withUpdatedAfter(dateParameter);
}

public ProspectAccountQueryRequest withUpdatedBefore(final DateParameter dateParameter) {
return super.withUpdatedBefore(dateParameter);
}

public ProspectAccountQueryRequest withCreatedBefore(final DateParameter dateParameter) {
return super.withCreatedBefore(dateParameter);
}
public ProspectAccountQueryRequest withCreatedAfter(final DateParameter dateParameter) {
return super.withCreatedAfter(dateParameter);
}
// Filter Options
public ProspectAccountQueryRequest withName(final String name) {
return setParam("name", name);
}
/**
* Sort by CreatedAt.
* @return BaseQueryRequest
*/
public ProspectAccountQueryRequest withSortByCreatedAt() {
return super.withSortByCreatedAt();
}

/**
* Sort results by Id.
* @return BaseQueryRequest
*/
public ProspectAccountQueryRequest withSortById() {
return super.withSortById();
}
@Override
public ProspectAccountQueryRequest withSortByName() {
return super.withSortByName();
}

public ProspectAccountQueryRequest withSortByUpdatedAt() {
return super.withSortByUpdatedAt();
}


}
Loading