summaryrefslogtreecommitdiff
path: root/src/main/java/com/p4square/ccbapi/CCBAPIClient.java
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2016-03-27 08:02:14 -0700
committerJesse Morgan <jesse@jesterpm.net>2016-03-27 08:02:14 -0700
commit6d987e0dd18ef830484641166a816661f4b16074 (patch)
treeeffaccb0a85cebca64e39ea8aa4545d59306cfc6 /src/main/java/com/p4square/ccbapi/CCBAPIClient.java
parentf4cb9e6a44c016c0200a9291f25003c72e2551cd (diff)
Adding the update_individual API
Diffstat (limited to 'src/main/java/com/p4square/ccbapi/CCBAPIClient.java')
-rw-r--r--src/main/java/com/p4square/ccbapi/CCBAPIClient.java34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/main/java/com/p4square/ccbapi/CCBAPIClient.java b/src/main/java/com/p4square/ccbapi/CCBAPIClient.java
index ee309c6..404253a 100644
--- a/src/main/java/com/p4square/ccbapi/CCBAPIClient.java
+++ b/src/main/java/com/p4square/ccbapi/CCBAPIClient.java
@@ -2,11 +2,15 @@ package com.p4square.ccbapi;
import com.p4square.ccbapi.exception.CCBErrorResponseException;
import com.p4square.ccbapi.model.*;
+import com.p4square.ccbapi.serializer.AddressFormSerializer;
+import com.p4square.ccbapi.serializer.IndividualProfileSerializer;
+import com.p4square.ccbapi.serializer.PhoneFormSerializer;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -23,6 +27,8 @@ public class CCBAPIClient implements CCBAPI {
private static final Map<String, String> EMPTY_MAP = Collections.emptyMap();
+ private static final IndividualProfileSerializer INDIVIDUAL_PROFILE_SERIALIZER = new IndividualProfileSerializer();
+
private final URI apiBaseUri;
private final HTTPInterface httpClient;
private final CCBXmlBinder xmlBinder;
@@ -119,12 +125,27 @@ public class CCBAPIClient implements CCBAPI {
}
// Send the request and parse the response.
- return makeRequest(serviceName, params, EMPTY_MAP, GetIndividualProfilesResponse.class);
+ return makeRequest(serviceName, params, null, GetIndividualProfilesResponse.class);
}
@Override
public GetCustomFieldLabelsResponse getCustomFieldLabels() throws IOException {
- return makeRequest("custom_field_labels", EMPTY_MAP, EMPTY_MAP, GetCustomFieldLabelsResponse.class);
+ return makeRequest("custom_field_labels", EMPTY_MAP, null, GetCustomFieldLabelsResponse.class);
+ }
+
+ @Override
+ public UpdateIndividualProfileResponse updateIndividualProfile(UpdateIndividualProfileRequest request)
+ throws IOException {
+
+ if (request.getIndividualId() == 0) {
+ throw new IllegalArgumentException("individualId must be set on the request.");
+ }
+
+ final Map<String, String> params = Collections.singletonMap("individual_id",
+ String.valueOf(request.getIndividualId()));
+ final String form = INDIVIDUAL_PROFILE_SERIALIZER.encode(request);
+
+ return makeRequest("update_individual", params, form, UpdateIndividualProfileResponse.class);
}
/**
@@ -164,10 +185,15 @@ public class CCBAPIClient implements CCBAPI {
* @throws IOException if an error occurs.
*/
private <T extends CCBAPIResponse> T makeRequest(final String api, final Map<String, String> params,
- final Map<String, String> form, final Class<T> clazz)
+ final String form, final Class<T> clazz)
throws IOException {
- final InputStream entity = httpClient.sendPostRequest(makeURI(api, params), form);
+ byte[] payload = null;
+ if (form != null) {
+ payload = form.getBytes(StandardCharsets.UTF_8);
+ }
+
+ final InputStream entity = httpClient.sendPostRequest(makeURI(api, params), payload);
try {
T response = xmlBinder.bindResponseXML(entity, clazz);
if (response.getErrors() != null && response.getErrors().size() > 0) {