You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by dg...@apache.org on 2018/01/24 14:50:53 UTC
[1/3] incubator-unomi git commit: Change mandatory properties,
refactor the isMemberOfMailChimpList function,
using the email hash of the visitor instead email
Repository: incubator-unomi
Updated Branches:
refs/heads/master 19f5f7ad2 -> 775337269
Change mandatory properties, refactor the isMemberOfMailChimpList function, using the email hash of the visitor instead email
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/e7b09794
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/e7b09794
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/e7b09794
Branch: refs/heads/master
Commit: e7b09794cb11e95e79f06e854761bbce1a45870c
Parents: 19f5f7a
Author: Dinesh <di...@ynov.com>
Authored: Wed Jan 24 10:44:06 2018 +0100
Committer: Dinesh <di...@ynov.com>
Committed: Wed Jan 24 10:44:06 2018 +0100
----------------------------------------------------------------------
extensions/unomi-mailchimp/README.md | 15 +-
.../unomi/mailchimp/services/HttpUtils.java | 36 +++--
.../services/internal/MailChimpServiceImpl.java | 142 ++++++++++---------
3 files changed, 103 insertions(+), 90 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/e7b09794/extensions/unomi-mailchimp/README.md
----------------------------------------------------------------------
diff --git a/extensions/unomi-mailchimp/README.md b/extensions/unomi-mailchimp/README.md
index dc43c4d..0d6f525 100644
--- a/extensions/unomi-mailchimp/README.md
+++ b/extensions/unomi-mailchimp/README.md
@@ -65,27 +65,30 @@ This extension has 3 actions.
```
MailChimp type supported are:
- 1. Date
+ * Date
```
The format is (DD/MM/YYYY) or (MM/DD/YYYY)
```
- 2. Birthday
+ * Birthday
```
The format is (DD/MM) or (MM/DD)
```
- 3. Website or Text
+ * Website or Text
```
They are text
```
- 4. Number
+ * Number
```
The number will be parse into a Integer
```
- 6. Phone
+ * Phone
```
The North American format is not supported, use international
```
- 7. Address
+ * Address
+
+ NOTE : Street, City, Country and Zip are mandatory properties, otherwise the address property will be skipped
+
Example:
```
address<=>ADDRESS<=>addr1,
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/e7b09794/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/HttpUtils.java
----------------------------------------------------------------------
diff --git a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/HttpUtils.java b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/HttpUtils.java
index d87fa5f..70290a4 100644
--- a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/HttpUtils.java
+++ b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/HttpUtils.java
@@ -60,12 +60,12 @@ public class HttpUtils {
return addBodyAndExecuteRequest(httpClient, body, httpPost);
}
- public static JsonNode executeGetRequest(CloseableHttpClient httpClient, String url, Map<String, String> headers) {
+ public static JsonNode executeGetRequest(CloseableHttpClient httpClient, String url, Map<String, String> headers, boolean allow404Response) {
HttpGet httpGet = new HttpGet(url);
addHeaders(headers, httpGet);
- return executeRequest(httpClient, httpGet);
+ return executeRequest(httpClient, httpGet, allow404Response);
}
public static JsonNode executeDeleteRequest(CloseableHttpClient httpClient, String url, Map<String, String> headers) {
@@ -73,7 +73,7 @@ public class HttpUtils {
addHeaders(headers, httpDelete);
- return executeRequest(httpClient, httpDelete);
+ return executeRequest(httpClient, httpDelete, false);
}
private static JsonNode addBodyAndExecuteRequest(CloseableHttpClient httpClient, String body, HttpEntityEnclosingRequestBase request) {
@@ -82,38 +82,43 @@ public class HttpUtils {
stringEntity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
request.setEntity(stringEntity);
- return executeRequest(httpClient, request);
+ return executeRequest(httpClient, request, false);
} catch (UnsupportedEncodingException e) {
logger.error("Error when executing request", e);
return null;
}
}
- private static JsonNode executeRequest(CloseableHttpClient httpClient, HttpRequestBase request) {
+ private static JsonNode executeRequest(CloseableHttpClient httpClient, HttpRequestBase request, boolean allow404Response) {
try {
CloseableHttpResponse response = httpClient.execute(request);
- return extractResponse(response);
+ return extractResponse(response, allow404Response);
} catch (IOException e) {
logger.error("Error when executing request", e);
return null;
}
}
- private static JsonNode extractResponse(CloseableHttpResponse response) {
+ private static JsonNode extractResponse(CloseableHttpResponse response, boolean allow404Response) {
if (response != null) {
- if (response.getStatusLine().getStatusCode() >= 400) {
- logger.error("Error when communicating with MailChimp server, response code was {} and response message was {}", response.getStatusLine().getStatusCode(), response.getStatusLine().getReasonPhrase());
+ int statusCode = response.getStatusLine().getStatusCode();
+ if (((statusCode >= 400) && !allow404Response) || (allow404Response && (statusCode >= 400 && statusCode != 404 ))) {
+ EntityUtils.consumeQuietly(response.getEntity());
+ logger.error("Error when communicating with MailChimp server, response code was {} and response message was {}", statusCode, response.getStatusLine().getReasonPhrase());
return null;
}
String responseString;
- if (response.getStatusLine().getStatusCode() == 204) {
+ if (statusCode == 204) {
+ // The response is build for the delete member, because the Api return no content
responseString = ("{ \"response\": \" " + response.getStatusLine().toString() + "\" }");
} else {
+ // Other request
try {
responseString = EntityUtils.toString(response.getEntity());
} catch (IOException e) {
+ EntityUtils.consumeQuietly(response.getEntity());
logger.error("Error when parsing entity response", e);
return null;
}
@@ -123,18 +128,11 @@ public class HttpUtils {
try {
JsonNode jsonNode = objectMapper.readTree(responseString);
- if (response.getStatusLine().getStatusCode() != 204) {
- EntityUtils.consumeQuietly(response.getEntity());
- } else {
- try {
- response.close();
- } catch (IOException e) {
- logger.error("Error when trying to close response", e);
- }
- }
+ EntityUtils.consumeQuietly(response.getEntity());
return jsonNode;
} catch (IOException e) {
+ EntityUtils.consumeQuietly(response.getEntity());
logger.error("Error when parsing response with ObjectMapper", e);
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/e7b09794/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
----------------------------------------------------------------------
diff --git a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
index 23fcfcc..d493455 100644
--- a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
+++ b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
@@ -18,6 +18,7 @@
package org.apache.unomi.mailchimp.services.internal;
import com.fasterxml.jackson.databind.JsonNode;
+import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.unomi.api.Profile;
@@ -32,7 +33,10 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
public class MailChimpServiceImpl implements MailChimpService {
private static final String LISTS = "lists";
@@ -43,9 +47,6 @@ public class MailChimpServiceImpl implements MailChimpService {
private static final String EMAIL_ADDRESS = "email_address";
private static final String EMAIL = "email";
private static final String ERRORS = "errors";
- private static final String FIRST_NAME = "firstName";
- private static final String LAST_NAME = "lastName";
- private static final String MEMBERS = "members";
private static final String LIST_IDENTIFIER = "listIdentifier";
private static final String STATUS = "status";
private static final String SUBSCRIBED = "subscribed";
@@ -56,6 +57,25 @@ public class MailChimpServiceImpl implements MailChimpService {
private static final String DATE_FORMAT = "date_format";
private static final String UNOMI_ID = "unomiId";
private static final String MC_SUB_TAG_NAME = "mcSubTagName";
+ private static final String ADDR_1 = "addr1";
+ private static final String ADDR_2 = "addr2";
+ private static final String CITY = "city";
+ private static final String COUNTRY = "country";
+ private static final String STATE = "state";
+ private static final String ZIP = "zip";
+ private static final String ADDRESS = "address";
+ private static final String DATE = "date";
+ private static final String MM_DD_YYYY = "MM/DD/YYYY";
+ private static final String MM_DD_YYYY1 = "MM/dd/yyyy";
+ private static final String DD_MM_YYYY = "dd/MM/yyyy";
+ private static final String BIRTHDAY = "birthday";
+ private static final String MM_DD = "MM/DD";
+ private static final String MM_DD_LOWERCASE = "MM/dd";
+ private static final String DD_MM = "dd/MM";
+ private static final String ACCEPT = "Accept";
+ private static final String AUTHORIZATION = "Authorization";
+ private static final String SEPARATOR_CHARS_PROPERTIES = ",";
+ private static final String SEPARATOR_CHARS_PROPERTY = "<=>";
private static Logger logger = LoggerFactory.getLogger(MailChimpServiceImpl.class);
private String apiKey;
private String urlSubDomain;
@@ -68,7 +88,7 @@ public class MailChimpServiceImpl implements MailChimpService {
public List<HashMap<String, String>> getAllLists() {
List<HashMap<String, String>> mcLists = new ArrayList<>();
if (isMailChimpConnectorConfigured()) {
- JsonNode response = HttpUtils.executeGetRequest(httpClient, getBaseUrl() + "/lists", getHeaders());
+ JsonNode response = HttpUtils.executeGetRequest(httpClient, getBaseUrl() + "/lists", getHeaders(), false);
if (response != null) {
if (response.has(LISTS) && response.get(LISTS).size() > 0) {
for (JsonNode list : response.get(LISTS)) {
@@ -82,7 +102,7 @@ public class MailChimpServiceImpl implements MailChimpService {
}
}
} else {
- logger.info("No list to return, response was {}", response.asText());
+ logger.debug("No list to return, response was {}", response.asText());
}
}
}
@@ -91,7 +111,8 @@ public class MailChimpServiceImpl implements MailChimpService {
@Override
public MailChimpResult addToMCList(Profile profile, Action action) {
- if (!isMailChimpConnectorConfigured() || !visitorHasMandatoryProperties(profile)) {
+ if (!isMailChimpConnectorConfigured() || profile.getProperty(EMAIL) == null) {
+ logger.error("The visitor hasn't email address");
return MailChimpResult.ERROR;
}
@@ -102,7 +123,7 @@ public class MailChimpServiceImpl implements MailChimpService {
if (currentMember != null && currentMember.has(STATUS)) {
JSONObject body = new JSONObject();
if (currentMember.get(STATUS).asText().equals(UNSUBSCRIBED)) {
- logger.info("The visitor is already in the MailChimp list, his status is unsubscribed");
+ logger.debug("The visitor is already in the MailChimp list, his status is unsubscribed");
body.put(STATUS, SUBSCRIBED);
}
@@ -133,7 +154,7 @@ public class MailChimpServiceImpl implements MailChimpService {
@Override
public MailChimpResult removeFromMCList(Profile profile, Action action) {
- if (!isMailChimpConnectorConfigured() || !visitorHasMandatoryProperties(profile)) {
+ if (!isMailChimpConnectorConfigured() || profile.getProperty(EMAIL) == null) {
return MailChimpResult.ERROR;
}
@@ -159,7 +180,7 @@ public class MailChimpServiceImpl implements MailChimpService {
@Override
public MailChimpResult unsubscribeFromMCList(Profile profile, Action action) {
- if (!isMailChimpConnectorConfigured() || !visitorHasMandatoryProperties(profile)) {
+ if (!isMailChimpConnectorConfigured() || profile.getProperty(EMAIL) == null) {
return MailChimpResult.ERROR;
}
@@ -185,7 +206,7 @@ public class MailChimpServiceImpl implements MailChimpService {
@Override
public MailChimpResult updateMCProfileProperties(Profile profile, Action action) {
- if (!isMailChimpConnectorConfigured() || !visitorHasMandatoryProperties(profile)) {
+ if (!isMailChimpConnectorConfigured() || profile.getProperty(EMAIL) == null) {
return MailChimpResult.ERROR;
}
@@ -241,46 +262,26 @@ public class MailChimpServiceImpl implements MailChimpService {
String unomiId = fieldInfo.get(UNOMI_ID);
if (profile.getProperty(unomiId) != null) {
switch (mergeFieldDefinition.get(TYPE).asText()) {
- case "address":
+ case ADDRESS:
if (mergeFields.has(mcTagName)) {
mergeFields.getJSONObject(mcTagName).put(fieldInfo.get(MC_SUB_TAG_NAME), profile.getProperty(unomiId));
} else {
JSONObject address = new JSONObject();
- address.put("addr1", "");
- address.put("addr2", "");
- address.put("city", "");
- address.put("country", "");
- address.put("state", "");
- address.put("zip", "");
+ address.put(ADDR_1, "");
+ address.put(ADDR_2, "");
+ address.put(CITY, "");
+ address.put(COUNTRY, "");
+ address.put(STATE, "");
+ address.put(ZIP, "");
address.put(fieldInfo.get(MC_SUB_TAG_NAME), profile.getProperty(unomiId));
mergeFields.put(mcTagName, address);
}
break;
- case "date":
- if (mergeFieldDefinition.has(OPTIONS) && mergeFieldDefinition.get(OPTIONS).has(DATE_FORMAT)) {
- String mcDateFormat = mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText();
- DateTime dateTime = new DateTime(profile.getProperty(unomiId));
- DateTimeFormatter dateTimeFormatter;
- if (mcDateFormat.equals("MM/DD/YYYY")) {
- dateTimeFormatter = DateTimeFormat.forPattern("MM/dd/yyyy");
- } else {
- dateTimeFormatter = DateTimeFormat.forPattern("dd/MM/yyyy");
- }
- mergeFields.put(mcTagName, dateTimeFormatter.print(dateTime));
- }
+ case DATE:
+ formatDate(profile, mergeFields, mergeFieldDefinition, mcTagName, unomiId, MM_DD_YYYY, MM_DD_YYYY1, DD_MM_YYYY);
break;
- case "birthday":
- if (mergeFieldDefinition.has(OPTIONS) && mergeFieldDefinition.get(OPTIONS).has(DATE_FORMAT)) {
- String mcDateFormat = mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText();
- DateTime dateTime = new DateTime(profile.getProperty(unomiId));
- DateTimeFormatter dateTimeFormatter;
- if (mcDateFormat.equals("MM/DD")) {
- dateTimeFormatter = DateTimeFormat.forPattern("MM/dd");
- } else {
- dateTimeFormatter = DateTimeFormat.forPattern("dd/MM");
- }
- mergeFields.put(mcTagName, dateTimeFormatter.print(dateTime));
- }
+ case BIRTHDAY:
+ formatDate(profile, mergeFields, mergeFieldDefinition, mcTagName, unomiId, MM_DD, MM_DD_LOWERCASE, DD_MM);
break;
default:
mergeFields.put(mcTagName, profile.getProperty(unomiId));
@@ -288,8 +289,16 @@ public class MailChimpServiceImpl implements MailChimpService {
}
}
}
+ if (mergeFieldDefinition.get(TYPE).asText().equals(ADDRESS) && mergeFields.has(mcTagName)
+ && (StringUtils.isBlank(mergeFields.getJSONObject(mcTagName).get(ADDR_1).toString())
+ || StringUtils.isBlank(mergeFields.getJSONObject(mcTagName).get(ZIP).toString())
+ || StringUtils.isBlank(mergeFields.getJSONObject(mcTagName).get(CITY).toString())
+ || StringUtils.isBlank(mergeFields.getJSONObject(mcTagName).get(COUNTRY).toString()))) {
+ mergeFields.remove(mcTagName);
+ logger.debug("Can't map the address property {}, one of the mandatory field is missing (addr1, zip, city, country)", mcTagName);
+ }
} else {
- logger.warn("Found property {} in MC list, if you need this property please update mapping or add the property to your MC list", mcTagName);
+ logger.debug("Found property {} in MC list, if you need this property please update mapping or add the property to your MC list", mcTagName);
}
}
}
@@ -297,8 +306,22 @@ public class MailChimpServiceImpl implements MailChimpService {
return MailChimpResult.SUCCESS;
}
+ private void formatDate(Profile profile, JSONObject mergeFields, JsonNode mergeFieldDefinition, String mcTagName, String unomiId, String mmDdYyyy, String mmDdYyyy1, String ddMmYyyy) {
+ if (mergeFieldDefinition.has(OPTIONS) && mergeFieldDefinition.get(OPTIONS).has(DATE_FORMAT)) {
+ String mcDateFormat = mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText();
+ DateTime dateTime = new DateTime(profile.getProperty(unomiId));
+ DateTimeFormatter dateTimeFormatter;
+ if (mcDateFormat.equals(mmDdYyyy)) {
+ dateTimeFormatter = DateTimeFormat.forPattern(mmDdYyyy1);
+ } else {
+ dateTimeFormatter = DateTimeFormat.forPattern(ddMmYyyy);
+ }
+ mergeFields.put(mcTagName, dateTimeFormatter.print(dateTime));
+ }
+ }
+
private JsonNode getMCListProperties(String listIdentifier) {
- JsonNode currentMergeFields = HttpUtils.executeGetRequest(httpClient, getBaseUrl() + "/lists/" + listIdentifier + "/merge-fields", getHeaders());
+ JsonNode currentMergeFields = HttpUtils.executeGetRequest(httpClient, getBaseUrl() + "/lists/" + listIdentifier + "/merge-fields", getHeaders(), false);
if (currentMergeFields == null || !currentMergeFields.has(MERGE_FIELDS)) {
logger.error("Can't find merge_fields from the response, the response was {}", currentMergeFields);
return null;
@@ -323,26 +346,15 @@ public class MailChimpServiceImpl implements MailChimpService {
return false;
}
- private boolean visitorHasMandatoryProperties(Profile profile) {
- if (profile.getProperty(FIRST_NAME) == null
- || profile.getProperty(LAST_NAME) == null
- || profile.getProperty(EMAIL) == null) {
- logger.warn("Visitor mandatory properties are missing");
- return false;
- }
- return true;
- }
-
private JsonNode isMemberOfMailChimpList(Profile profile, String listIdentifier) {
-
String email = profile.getProperty(EMAIL).toString().toLowerCase();
- JsonNode response = HttpUtils.executeGetRequest(httpClient, getBaseUrl() + "/lists/" + listIdentifier + "/members/", getHeaders());
+ String md5Hex = DigestUtils.md5Hex(email);
+
+ JsonNode response = HttpUtils.executeGetRequest(httpClient, getBaseUrl() + "/lists/" + listIdentifier + "/members/" + md5Hex, getHeaders(), true);
if (response != null) {
- if (response.has(MEMBERS)) {
- for (JsonNode member : response.get(MEMBERS)) {
- if (member.get(EMAIL_ADDRESS).asText().toLowerCase().equals(email)) {
- return member;
- }
+ if (response.has(EMAIL_ADDRESS)) {
+ if (response.get(EMAIL_ADDRESS).asText().toLowerCase().equals(email)) {
+ return response;
}
}
}
@@ -371,8 +383,8 @@ public class MailChimpServiceImpl implements MailChimpService {
private HashMap<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<>();
- headers.put("Accept", "application/json");
- headers.put("Authorization", "apikey " + apiKey);
+ headers.put(ACCEPT, "application/json");
+ headers.put(AUTHORIZATION, "apikey " + apiKey);
return headers;
}
@@ -387,11 +399,11 @@ public class MailChimpServiceImpl implements MailChimpService {
public void setListMergeFieldMapping(String listMergeFields) {
this.listMergeFieldMapping = new HashMap<>();
if (StringUtils.isNotBlank(listMergeFields)) {
- String mergeFields[] = StringUtils.split(listMergeFields, ",");
+ String mergeFields[] = StringUtils.split(listMergeFields, SEPARATOR_CHARS_PROPERTIES);
if (mergeFields.length > 0) {
for (String mergeField : mergeFields) {
if (StringUtils.isNotBlank(mergeField)) {
- String mergeFieldInfo[] = StringUtils.split(mergeField, "<=>");
+ String mergeFieldInfo[] = StringUtils.split(mergeField, SEPARATOR_CHARS_PROPERTY);
if (mergeFieldInfo.length > 0) {
Map<String, String> fieldInfo = new HashMap<>();
fieldInfo.put(UNOMI_ID, mergeFieldInfo[0]);
[2/3] incubator-unomi git commit: Change consents name and formatDate
functions
Posted by dg...@apache.org.
Change consents name and formatDate functions
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/68e291ad
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/68e291ad
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/68e291ad
Branch: refs/heads/master
Commit: 68e291ad4503cc2892a67ffc03516f6b05cc37de
Parents: e7b0979
Author: dinesh1996 <di...@ynov.com>
Authored: Wed Jan 24 15:17:02 2018 +0100
Committer: dinesh1996 <di...@ynov.com>
Committed: Wed Jan 24 15:17:02 2018 +0100
----------------------------------------------------------------------
.../services/internal/MailChimpServiceImpl.java | 56 +++++++++++---------
1 file changed, 31 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/68e291ad/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
----------------------------------------------------------------------
diff --git a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
index d493455..bc4b76b 100644
--- a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
+++ b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
@@ -28,7 +28,6 @@ import org.apache.unomi.mailchimp.services.MailChimpResult;
import org.apache.unomi.mailchimp.services.MailChimpService;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
-import org.joda.time.format.DateTimeFormatter;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,6 +38,11 @@ import java.util.List;
import java.util.Map;
public class MailChimpServiceImpl implements MailChimpService {
+
+ private static Logger logger = LoggerFactory.getLogger(MailChimpServiceImpl.class);
+
+ private static final String ACCEPT = "Accept";
+ private static final String AUTHORIZATION = "Authorization";
private static final String LISTS = "lists";
private static final String ID = "id";
private static final String NAME = "name";
@@ -53,8 +57,6 @@ public class MailChimpServiceImpl implements MailChimpService {
private static final String UNSUBSCRIBED = "unsubscribed";
private static final String TAG = "tag";
private static final String TYPE = "type";
- private static final String OPTIONS = "options";
- private static final String DATE_FORMAT = "date_format";
private static final String UNOMI_ID = "unomiId";
private static final String MC_SUB_TAG_NAME = "mcSubTagName";
private static final String ADDR_1 = "addr1";
@@ -64,19 +66,19 @@ public class MailChimpServiceImpl implements MailChimpService {
private static final String STATE = "state";
private static final String ZIP = "zip";
private static final String ADDRESS = "address";
+ private static final String DATE_FORMAT = "date_format";
+ private static final String OPTIONS = "options";
private static final String DATE = "date";
private static final String MM_DD_YYYY = "MM/DD/YYYY";
- private static final String MM_DD_YYYY1 = "MM/dd/yyyy";
- private static final String DD_MM_YYYY = "dd/MM/yyyy";
+ private static final String MC_BIRTDATE_MM_DD_YYYY = "MM/dd/yyyy";
+ private static final String MC_BIRTDATE_DD_MM_YYYY = "dd/MM/yyyy";
private static final String BIRTHDAY = "birthday";
private static final String MM_DD = "MM/DD";
- private static final String MM_DD_LOWERCASE = "MM/dd";
- private static final String DD_MM = "dd/MM";
- private static final String ACCEPT = "Accept";
- private static final String AUTHORIZATION = "Authorization";
+ private static final String MC_BIRTDAY_MM_DD = "MM/dd";
+ private static final String MC_BIRTDAY_DD_MM = "dd/MM";
private static final String SEPARATOR_CHARS_PROPERTIES = ",";
private static final String SEPARATOR_CHARS_PROPERTY = "<=>";
- private static Logger logger = LoggerFactory.getLogger(MailChimpServiceImpl.class);
+
private String apiKey;
private String urlSubDomain;
private Map<String, List<Map<String, String>>> listMergeFieldMapping;
@@ -112,7 +114,7 @@ public class MailChimpServiceImpl implements MailChimpService {
@Override
public MailChimpResult addToMCList(Profile profile, Action action) {
if (!isMailChimpConnectorConfigured() || profile.getProperty(EMAIL) == null) {
- logger.error("The visitor hasn't email address");
+ logger.error("The visitor does not have an email address");
return MailChimpResult.ERROR;
}
@@ -278,10 +280,19 @@ public class MailChimpServiceImpl implements MailChimpService {
}
break;
case DATE:
- formatDate(profile, mergeFields, mergeFieldDefinition, mcTagName, unomiId, MM_DD_YYYY, MM_DD_YYYY1, DD_MM_YYYY);
+ if (mergeFieldDefinition.has(OPTIONS) && mergeFieldDefinition.get(OPTIONS).has(DATE_FORMAT)) {
+ DateTime unomiDate = new DateTime(profile.getProperty(unomiId));
+ String mcDateFormat = mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText();
+ mergeFields.put(mcTagName, formatDate(MM_DD_YYYY, MC_BIRTDATE_MM_DD_YYYY, MC_BIRTDATE_DD_MM_YYYY, mcDateFormat, unomiDate));
+ }
break;
case BIRTHDAY:
- formatDate(profile, mergeFields, mergeFieldDefinition, mcTagName, unomiId, MM_DD, MM_DD_LOWERCASE, DD_MM);
+ if (mergeFieldDefinition.has(OPTIONS) && mergeFieldDefinition.get(OPTIONS).has(DATE_FORMAT)) {
+ DateTime unomiDate = new DateTime(profile.getProperty(unomiId));
+ String mcDateFormat = mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText();
+ mergeFields.put(mcTagName, formatDate(MM_DD_YYYY, MC_BIRTDATE_MM_DD_YYYY, MC_BIRTDATE_DD_MM_YYYY, mcDateFormat,unomiDate));
+ }
+
break;
default:
mergeFields.put(mcTagName, profile.getProperty(unomiId));
@@ -294,7 +305,7 @@ public class MailChimpServiceImpl implements MailChimpService {
|| StringUtils.isBlank(mergeFields.getJSONObject(mcTagName).get(ZIP).toString())
|| StringUtils.isBlank(mergeFields.getJSONObject(mcTagName).get(CITY).toString())
|| StringUtils.isBlank(mergeFields.getJSONObject(mcTagName).get(COUNTRY).toString()))) {
- mergeFields.remove(mcTagName);
+ mergeFields.remove(mcTagName);
logger.debug("Can't map the address property {}, one of the mandatory field is missing (addr1, zip, city, country)", mcTagName);
}
} else {
@@ -306,20 +317,15 @@ public class MailChimpServiceImpl implements MailChimpService {
return MailChimpResult.SUCCESS;
}
- private void formatDate(Profile profile, JSONObject mergeFields, JsonNode mergeFieldDefinition, String mcTagName, String unomiId, String mmDdYyyy, String mmDdYyyy1, String ddMmYyyy) {
- if (mergeFieldDefinition.has(OPTIONS) && mergeFieldDefinition.get(OPTIONS).has(DATE_FORMAT)) {
- String mcDateFormat = mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText();
- DateTime dateTime = new DateTime(profile.getProperty(unomiId));
- DateTimeFormatter dateTimeFormatter;
- if (mcDateFormat.equals(mmDdYyyy)) {
- dateTimeFormatter = DateTimeFormat.forPattern(mmDdYyyy1);
- } else {
- dateTimeFormatter = DateTimeFormat.forPattern(ddMmYyyy);
- }
- mergeFields.put(mcTagName, dateTimeFormatter.print(dateTime));
+ private String formatDate(String mcDateFormatOption, String FranceLocalDateFormat, String UnitedStatesOfAmericaLocalDateFormat, String mcDateFormat, DateTime unomiDate) {
+ if (mcDateFormat.equals(mcDateFormatOption)) {
+ return DateTimeFormat.forPattern(FranceLocalDateFormat).print(unomiDate);
+ } else {
+ return DateTimeFormat.forPattern(UnitedStatesOfAmericaLocalDateFormat).print(unomiDate);
}
}
+
private JsonNode getMCListProperties(String listIdentifier) {
JsonNode currentMergeFields = HttpUtils.executeGetRequest(httpClient, getBaseUrl() + "/lists/" + listIdentifier + "/merge-fields", getHeaders(), false);
if (currentMergeFields == null || !currentMergeFields.has(MERGE_FIELDS)) {
[3/3] incubator-unomi git commit: Change consents name and formatDate
function
Posted by dg...@apache.org.
Change consents name and formatDate function
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/77533726
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/77533726
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/77533726
Branch: refs/heads/master
Commit: 775337269c11cf477d719da03cb08cb2855b67bf
Parents: 68e291a
Author: dinesh1996 <di...@ynov.com>
Authored: Wed Jan 24 15:48:28 2018 +0100
Committer: dinesh1996 <di...@ynov.com>
Committed: Wed Jan 24 15:48:28 2018 +0100
----------------------------------------------------------------------
.../services/internal/MailChimpServiceImpl.java | 34 +++++++++-----------
1 file changed, 15 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/77533726/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
----------------------------------------------------------------------
diff --git a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
index bc4b76b..a704f99 100644
--- a/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
+++ b/extensions/unomi-mailchimp/services/src/main/java/org/apache/unomi/mailchimp/services/internal/MailChimpServiceImpl.java
@@ -40,7 +40,7 @@ import java.util.Map;
public class MailChimpServiceImpl implements MailChimpService {
private static Logger logger = LoggerFactory.getLogger(MailChimpServiceImpl.class);
-
+
private static final String ACCEPT = "Accept";
private static final String AUTHORIZATION = "Authorization";
private static final String LISTS = "lists";
@@ -69,16 +69,16 @@ public class MailChimpServiceImpl implements MailChimpService {
private static final String DATE_FORMAT = "date_format";
private static final String OPTIONS = "options";
private static final String DATE = "date";
- private static final String MM_DD_YYYY = "MM/DD/YYYY";
- private static final String MC_BIRTDATE_MM_DD_YYYY = "MM/dd/yyyy";
- private static final String MC_BIRTDATE_DD_MM_YYYY = "dd/MM/yyyy";
+ private static final String MC_MM_DD_YYYY = "MM/DD/YYYY";
+ private static final String MM_DD_YYYY = "MM/dd/yyyy";
+ private static final String DD_MM_YYYY = "dd/MM/yyyy";
private static final String BIRTHDAY = "birthday";
- private static final String MM_DD = "MM/DD";
- private static final String MC_BIRTDAY_MM_DD = "MM/dd";
- private static final String MC_BIRTDAY_DD_MM = "dd/MM";
+ private static final String MC_MM_DD = "MM/DD";
+ private static final String MM_DD = "MM/dd";
+ private static final String DD_MM = "dd/MM";
private static final String SEPARATOR_CHARS_PROPERTIES = ",";
private static final String SEPARATOR_CHARS_PROPERTY = "<=>";
-
+
private String apiKey;
private String urlSubDomain;
private Map<String, List<Map<String, String>>> listMergeFieldMapping;
@@ -281,18 +281,13 @@ public class MailChimpServiceImpl implements MailChimpService {
break;
case DATE:
if (mergeFieldDefinition.has(OPTIONS) && mergeFieldDefinition.get(OPTIONS).has(DATE_FORMAT)) {
- DateTime unomiDate = new DateTime(profile.getProperty(unomiId));
- String mcDateFormat = mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText();
- mergeFields.put(mcTagName, formatDate(MM_DD_YYYY, MC_BIRTDATE_MM_DD_YYYY, MC_BIRTDATE_DD_MM_YYYY, mcDateFormat, unomiDate));
+ mergeFields.put(mcTagName, formatDate(mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText(), profile.getProperty(unomiId)));
}
break;
case BIRTHDAY:
if (mergeFieldDefinition.has(OPTIONS) && mergeFieldDefinition.get(OPTIONS).has(DATE_FORMAT)) {
- DateTime unomiDate = new DateTime(profile.getProperty(unomiId));
- String mcDateFormat = mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText();
- mergeFields.put(mcTagName, formatDate(MM_DD_YYYY, MC_BIRTDATE_MM_DD_YYYY, MC_BIRTDATE_DD_MM_YYYY, mcDateFormat,unomiDate));
+ mergeFields.put(mcTagName, formatDate(mergeFieldDefinition.get(OPTIONS).get(DATE_FORMAT).asText(), profile.getProperty(unomiId)));
}
-
break;
default:
mergeFields.put(mcTagName, profile.getProperty(unomiId));
@@ -317,11 +312,12 @@ public class MailChimpServiceImpl implements MailChimpService {
return MailChimpResult.SUCCESS;
}
- private String formatDate(String mcDateFormatOption, String FranceLocalDateFormat, String UnitedStatesOfAmericaLocalDateFormat, String mcDateFormat, DateTime unomiDate) {
- if (mcDateFormat.equals(mcDateFormatOption)) {
- return DateTimeFormat.forPattern(FranceLocalDateFormat).print(unomiDate);
+ private String formatDate(String mcDateFormat, Object date) {
+ DateTime dateTime = new DateTime(date);
+ if (StringUtils.contains(mcDateFormat, "/YYYY")) {
+ return DateTimeFormat.forPattern((mcDateFormat.equals(MC_MM_DD_YYYY) ? MM_DD_YYYY : DD_MM_YYYY)).print(dateTime);
} else {
- return DateTimeFormat.forPattern(UnitedStatesOfAmericaLocalDateFormat).print(unomiDate);
+ return DateTimeFormat.forPattern((mcDateFormat.equals(MC_MM_DD) ? MM_DD : DD_MM)).print(dateTime);
}
}