diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2016-03-27 08:02:14 -0700 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2016-03-27 08:02:14 -0700 |
commit | 6d987e0dd18ef830484641166a816661f4b16074 (patch) | |
tree | effaccb0a85cebca64e39ea8aa4545d59306cfc6 /src/main/java/com/p4square/ccbapi/CCBAPIClient.java | |
parent | f4cb9e6a44c016c0200a9291f25003c72e2551cd (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.java | 34 |
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) { |