embulk-output-mailchimp 0.3.7 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 759406b999c3568dc98133129ecc535decaf2c47
4
- data.tar.gz: 0a7cdd2189f9d8ec41b145735b1e210d1b43bcb3
3
+ metadata.gz: 5fde692362348800dfae66c28a9e2c064ba7d833
4
+ data.tar.gz: 133cbbbe8899d8601640969cd804334305061210
5
5
  SHA512:
6
- metadata.gz: ebb5138893246ee2045ab75fde892196896c82f0fad7e3c4bcb8cf393144d48c9d455647b8239a45d23ce66037b3b698070386da10787279e31974f03d55a13f
7
- data.tar.gz: 8b6ea7dd8a191f2d6f5dbf5eb27b287d6b90d25fa68fec09f6138050c48bd9652092303316fdb3fbd19091b7f2a8d7f062c6a053f6f247c0ba6112c5dccbba36
6
+ metadata.gz: aa856a3406ff19159507b877022800cc7455f1c0f1399080510cacf54529c1c09c61dae97328e81f7cbbb4661b69cd97d91856f0e43aa6ee668b148f1631fa96
7
+ data.tar.gz: 7b273aea4c9ea89d35a3125240aac1ef7165262d437b293a66efc23f124604522a4fbfe8dc52b09225dd3183b4e3ce70447676e11fc5732577f0c4e4f4d01d2f
@@ -1,3 +1,9 @@
1
+ ## 0.3.9 - 2017-06-09
2
+ - Upgraded version to fix yanked gem file
3
+
4
+ ## 0.3.8 - 2017-06-09
5
+ - Fixed JSON format in MERGE field's type is address [#24](https://github.com/treasure-data/embulk-output-mailchimp/pull/24)
6
+
1
7
  ## 0.3.7 - 2017-06-07
2
8
  - Added `ConfigException` while using not exists `list_id` [#23](https://github.com/treasure-data/embulk-output-mailchimp/pull/23)
3
9
 
@@ -18,7 +18,7 @@ configurations {
18
18
  provided
19
19
  }
20
20
 
21
- version = "0.3.7"
21
+ version = "0.3.9"
22
22
 
23
23
  sourceCompatibility = 1.7
24
24
  targetCompatibility = 1.7
@@ -15,6 +15,7 @@ import org.embulk.base.restclient.jackson.JacksonServiceRecord;
15
15
  import org.embulk.base.restclient.record.RecordBuffer;
16
16
  import org.embulk.base.restclient.record.ServiceRecord;
17
17
  import org.embulk.config.TaskReport;
18
+ import org.embulk.output.mailchimp.model.AddressMergeFieldAttribute;
18
19
  import org.embulk.output.mailchimp.model.ErrorResponse;
19
20
  import org.embulk.output.mailchimp.model.InterestResponse;
20
21
  import org.embulk.output.mailchimp.model.MergeField;
@@ -34,6 +35,7 @@ import java.util.Map;
34
35
 
35
36
  import static org.embulk.output.mailchimp.helper.MailChimpHelper.containsCaseInsensitive;
36
37
  import static org.embulk.output.mailchimp.helper.MailChimpHelper.fromCommaSeparatedString;
38
+ import static org.embulk.output.mailchimp.helper.MailChimpHelper.orderJsonNode;
37
39
  import static org.embulk.output.mailchimp.helper.MailChimpHelper.toJsonNode;
38
40
  import static org.embulk.output.mailchimp.model.MemberStatus.PENDING;
39
41
  import static org.embulk.output.mailchimp.model.MemberStatus.SUBSCRIBED;
@@ -281,7 +283,8 @@ public abstract class MailChimpAbstractRecordBuffer
281
283
  mergeFields.put(column.getName().toUpperCase(), value);
282
284
  }
283
285
  else {
284
- mergeFields.set(column.getName().toUpperCase(), addressNode);
286
+ mergeFields.set(column.getName().toUpperCase(),
287
+ orderJsonNode(addressNode, AddressMergeFieldAttribute.values()));
285
288
  }
286
289
  }
287
290
  else {
@@ -5,11 +5,13 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
5
5
  import com.fasterxml.jackson.databind.JsonNode;
6
6
  import com.fasterxml.jackson.databind.ObjectMapper;
7
7
  import com.fasterxml.jackson.databind.node.JsonNodeFactory;
8
+ import com.fasterxml.jackson.databind.node.ObjectNode;
8
9
  import com.google.common.base.Function;
9
10
  import com.google.common.base.Splitter;
10
11
  import com.google.common.collect.Lists;
11
12
  import com.google.common.collect.Multimap;
12
13
  import com.google.common.collect.Multimaps;
14
+ import org.embulk.output.mailchimp.model.AddressMergeFieldAttribute;
13
15
 
14
16
  import javax.annotation.Nullable;
15
17
 
@@ -105,4 +107,23 @@ public final class MailChimpHelper
105
107
  return JsonNodeFactory.instance.nullNode();
106
108
  }
107
109
  }
110
+
111
+ /**
112
+ * MailChimp API requires MERGE field's type is address that have to json with keys in order.
113
+ * {"addr1": "a", "addr2": "a1", "city": "c", "state": "s", "zip": "z", "country": "c"}
114
+ *
115
+ * @param originalNode the original node
116
+ * @param attrsInOrder the keys in order
117
+ * @return the object node
118
+ */
119
+ public static ObjectNode orderJsonNode(final JsonNode originalNode, final AddressMergeFieldAttribute[] attrsInOrder)
120
+ {
121
+ ObjectNode orderedNode = JsonNodeFactory.instance.objectNode();
122
+ for (AddressMergeFieldAttribute attr : attrsInOrder) {
123
+ orderedNode.put(attr.getName(),
124
+ originalNode.findValue(attr.getName()) != null ? originalNode.findValue(attr.getName()).asText() : "");
125
+ }
126
+
127
+ return orderedNode;
128
+ }
108
129
  }
@@ -0,0 +1,49 @@
1
+ package org.embulk.output.mailchimp.model;
2
+
3
+ import com.fasterxml.jackson.annotation.JsonCreator;
4
+ import org.embulk.config.ConfigException;
5
+
6
+ /**
7
+ * Created by thangnc on 6/9/17.
8
+ */
9
+ public enum AddressMergeFieldAttribute
10
+ {
11
+ ADDR1("addr1"), ADDR2("addr2"), CITY("city"), STATE("state"), ZIP("zip"), COUNTRY("country");
12
+
13
+ private String name;
14
+
15
+ AddressMergeFieldAttribute(String type)
16
+ {
17
+ this.name = type;
18
+ }
19
+
20
+ /**
21
+ * Gets name.
22
+ *
23
+ * @return the name
24
+ */
25
+ public String getName()
26
+ {
27
+ return name;
28
+ }
29
+
30
+ /**
31
+ * Find by name method.
32
+ *
33
+ * @param name the name
34
+ * @return the auth method
35
+ */
36
+ @JsonCreator
37
+ public static AddressMergeFieldAttribute findByName(final String name)
38
+ {
39
+ for (AddressMergeFieldAttribute method : values()) {
40
+ if (method.getName().equals(name.toLowerCase())) {
41
+ return method;
42
+ }
43
+ }
44
+
45
+ throw new ConfigException(
46
+ String.format("Unknown attributes '%s'. Supported attributes are [addr1, addr1, state, zip, country]",
47
+ name));
48
+ }
49
+ }
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.node.NullNode;
6
6
  import com.fasterxml.jackson.databind.node.ObjectNode;
7
7
  import com.google.common.collect.Multimap;
8
8
  import org.embulk.output.mailchimp.helper.MailChimpHelper;
9
+ import org.embulk.output.mailchimp.model.AddressMergeFieldAttribute;
9
10
  import org.junit.Test;
10
11
 
11
12
  import java.util.ArrayList;
@@ -15,6 +16,7 @@ import java.util.List;
15
16
  import static org.embulk.output.mailchimp.helper.MailChimpHelper.containsCaseInsensitive;
16
17
  import static org.embulk.output.mailchimp.helper.MailChimpHelper.extractMemberStatus;
17
18
  import static org.embulk.output.mailchimp.helper.MailChimpHelper.maskEmail;
19
+ import static org.embulk.output.mailchimp.helper.MailChimpHelper.orderJsonNode;
18
20
  import static org.embulk.output.mailchimp.helper.MailChimpHelper.toJsonNode;
19
21
  import static org.junit.Assert.assertArrayEquals;
20
22
  import static org.junit.Assert.assertEquals;
@@ -82,4 +84,15 @@ public class TestMailChimpHelper
82
84
  {
83
85
  assertEquals("Should be NullNode", NullNode.class, toJsonNode("abc").getClass());
84
86
  }
87
+
88
+ @Test
89
+ public void test_orderJsonNode()
90
+ {
91
+ String given = "{\"addr1\":\"1234\",\"city\":\"mountain view\",\"country\":\"US\",\"state\":\"CA\",\"zip\":\"95869\"}";
92
+ AddressMergeFieldAttribute[] attributes = AddressMergeFieldAttribute.values();
93
+
94
+ String expect = "{\"addr1\":\"1234\",\"addr2\":\"\",\"city\":\"mountain view\",\"state\":\"CA\",\"zip\":\"95869\",\"country\":\"US\"}";
95
+ assertEquals("Should be JSON", ObjectNode.class, orderJsonNode(toJsonNode(given), attributes).getClass());
96
+ assertEquals("Should be match", expect, orderJsonNode(toJsonNode(given), attributes).toString());
97
+ }
85
98
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-mailchimp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thang Nguyen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-07 00:00:00.000000000 Z
11
+ date: 2017-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -67,6 +67,7 @@ files:
67
67
  - src/main/java/org/embulk/output/mailchimp/MailChimpOutputPluginDelegate.java
68
68
  - src/main/java/org/embulk/output/mailchimp/MailChimpRecordBuffer.java
69
69
  - src/main/java/org/embulk/output/mailchimp/helper/MailChimpHelper.java
70
+ - src/main/java/org/embulk/output/mailchimp/model/AddressMergeFieldAttribute.java
70
71
  - src/main/java/org/embulk/output/mailchimp/model/AuthMethod.java
71
72
  - src/main/java/org/embulk/output/mailchimp/model/CategoriesResponse.java
72
73
  - src/main/java/org/embulk/output/mailchimp/model/ErrorResponse.java
@@ -88,7 +89,7 @@ files:
88
89
  - test/override_assert_raise.rb
89
90
  - test/run-test.rb
90
91
  - classpath/embulk-base-restclient-0.5.0.jar
91
- - classpath/embulk-output-mailchimp-0.3.7.jar
92
+ - classpath/embulk-output-mailchimp-0.3.9.jar
92
93
  - classpath/embulk-util-retryhelper-jetty92-0.5.0.jar
93
94
  - classpath/jetty-client-9.2.14.v20151106.jar
94
95
  - classpath/jetty-http-9.2.14.v20151106.jar