embulk-output-mailchimp 0.3.4 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -12
- data/build.gradle +1 -1
- data/classpath/embulk-output-mailchimp-0.3.6.jar +0 -0
- data/src/main/java/org/embulk/output/mailchimp/MailChimpAbstractRecordBuffer.java +36 -29
- data/src/main/java/org/embulk/output/mailchimp/MailChimpRecordBuffer.java +30 -0
- data/src/main/java/org/embulk/output/mailchimp/helper/MailChimpHelper.java +25 -1
- data/src/main/java/org/embulk/output/mailchimp/model/MergeField.java +102 -0
- data/src/main/java/org/embulk/output/mailchimp/model/MergeFields.java +24 -0
- data/src/test/java/org/embulk/output/mailchimp/TestMailChimpHelper.java +19 -0
- metadata +5 -3
- data/classpath/embulk-output-mailchimp-0.3.4.jar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a306f852f0eea3bd2d95ef46dcff661f63c5f3bf
|
4
|
+
data.tar.gz: e6be5cde31d3ade89061b961cbc7bc0fd80ac257
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0daa9b8299e3858e6c5347f1ec72fafb580eb88b61ffd905dc8180e5179b5aec27925804f7f3ade25a02b5fc23ffdf5900d4b771f55a393254be5e13e2d73de
|
7
|
+
data.tar.gz: d3b0c68f30be686c2fbd092d6e14ec455562ee9d7da198e319c7bfcb68a9c8457a0a672533ba7d0195ed90951ef0f4f6df0721074d073e5b206a068f72214806
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 0.3.6
|
2
|
+
- Removed log query and add API to check address type [#22](https://github.com/treasure-data/embulk-output-mailchimp/pull/22)
|
3
|
+
- Enabled log query for logging on console temporary [#21](https://github.com/treasure-data/embulk-output-mailchimp/pull/21)
|
4
|
+
|
1
5
|
## 0.3.4 - 2017-06-01
|
2
6
|
- Enable JSON type for `address` MERGE field [#20](https://github.com/treasure-data/embulk-output-mailchimp/pull/20)
|
3
7
|
|
@@ -8,19 +12,11 @@
|
|
8
12
|
- Rename `interest_categories` to `grouping_columns` to fix backward compatibility [#18](https://github.com/treasure-data/embulk-output-mailchimp/pull/18)
|
9
13
|
|
10
14
|
## 0.3.1 - 2017-05-26
|
11
|
-
- Enable merge fields with case-insensitive [#17](https://github.com/treasure-data/embulk-output-mailchimp/pull/17)
|
12
|
-
|
13
|
-
## 0.3.0.4 - 2017-05-24
|
14
|
-
- Fixed compatible with API v2 and changed data format [#16](https://github.com/treasure-data/embulk-output-mailchimp/pull/16)
|
15
|
-
|
16
|
-
## 0.3.0.3 - 2017-05-18
|
17
|
-
- Fixed bug can not extract data center when use `api_key` as `auth_mode` [#15](https://github.com/treasure-data/embulk-output-mailchimp/pull/15)
|
18
|
-
|
19
|
-
## 0.3.0.2 - 2017-05-18
|
20
|
-
- Enabled double_optin in configuration and use default status if schema has no column `status` [#15](https://github.com/treasure-data/embulk-output-mailchimp/pull/15)
|
21
|
-
|
22
|
-
## 0.3.0.1 - 2017-05-11
|
23
15
|
- Enabled API v3 and supported OAuth2 beside API Key[#13](https://github.com/treasure-data/embulk-output-mailchimp/pull/13)
|
16
|
+
- Enabled double_optin in configuration and use default status if schema has no column `status` [#15](https://github.com/treasure-data/embulk-output-mailchimp/pull/15)
|
17
|
+
- Fixed bug can not extract data center when use `api_key` as `auth_mode` [#15](https://github.com/treasure-data/embulk-output-mailchimp/pull/15)
|
18
|
+
- Fixed compatible with API v2 and changed data format [#16](https://github.com/treasure-data/embulk-output-mailchimp/pull/16)
|
19
|
+
- Enable merge fields with case-insensitive [#17](https://github.com/treasure-data/embulk-output-mailchimp/pull/17)
|
24
20
|
|
25
21
|
## 0.2.3 - 2016-03-24
|
26
22
|
|
data/build.gradle
CHANGED
Binary file
|
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
6
6
|
import com.fasterxml.jackson.databind.JsonNode;
|
7
7
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
8
8
|
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
9
|
+
import com.fasterxml.jackson.databind.node.NullNode;
|
9
10
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
10
11
|
import com.google.common.base.Function;
|
11
12
|
import com.google.common.base.Throwables;
|
@@ -16,6 +17,7 @@ import org.embulk.base.restclient.record.ServiceRecord;
|
|
16
17
|
import org.embulk.config.TaskReport;
|
17
18
|
import org.embulk.output.mailchimp.model.ErrorResponse;
|
18
19
|
import org.embulk.output.mailchimp.model.InterestResponse;
|
20
|
+
import org.embulk.output.mailchimp.model.MergeField;
|
19
21
|
import org.embulk.output.mailchimp.model.ReportResponse;
|
20
22
|
import org.embulk.spi.Column;
|
21
23
|
import org.embulk.spi.DataException;
|
@@ -32,9 +34,9 @@ import java.util.Map;
|
|
32
34
|
|
33
35
|
import static org.embulk.output.mailchimp.helper.MailChimpHelper.containsCaseInsensitive;
|
34
36
|
import static org.embulk.output.mailchimp.helper.MailChimpHelper.fromCommaSeparatedString;
|
37
|
+
import static org.embulk.output.mailchimp.helper.MailChimpHelper.toJsonNode;
|
35
38
|
import static org.embulk.output.mailchimp.model.MemberStatus.PENDING;
|
36
39
|
import static org.embulk.output.mailchimp.model.MemberStatus.SUBSCRIBED;
|
37
|
-
import static org.embulk.spi.type.Types.JSON;
|
38
40
|
|
39
41
|
/**
|
40
42
|
* Created by thangnc on 4/14/17.
|
@@ -55,6 +57,7 @@ public abstract class MailChimpAbstractRecordBuffer
|
|
55
57
|
private long totalCount;
|
56
58
|
private List<JsonNode> records;
|
57
59
|
private Map<String, Map<String, InterestResponse>> categories;
|
60
|
+
private Map<String, MergeField> availableMergeFields;
|
58
61
|
|
59
62
|
/**
|
60
63
|
* Instantiates a new Mail chimp abstract record buffer.
|
@@ -146,10 +149,19 @@ public abstract class MailChimpAbstractRecordBuffer
|
|
146
149
|
* @return the object node
|
147
150
|
*/
|
148
151
|
ObjectNode processSubcribers(final List<JsonNode> data, final MailChimpOutputPluginDelegate.PluginTask task)
|
152
|
+
throws JsonProcessingException
|
149
153
|
{
|
150
154
|
LOG.info("Start to process subscriber data");
|
151
|
-
|
152
|
-
|
155
|
+
// Extract data center from meta data URL
|
156
|
+
String dc = extractDataCenter(task);
|
157
|
+
mailchimpEndpoint = MessageFormat.format(mailchimpEndpoint, dc);
|
158
|
+
|
159
|
+
// Should loop the names and get the id of interest categories.
|
160
|
+
// The reason why we put categories validation here because we can not share data between instance.
|
161
|
+
categories = extractInterestCategoriesByGroupNames(task);
|
162
|
+
|
163
|
+
// Extract merge fields detail
|
164
|
+
availableMergeFields = extractMergeFieldsFromList(task);
|
153
165
|
|
154
166
|
// Required merge fields
|
155
167
|
Map<String, String> map = new HashMap<>();
|
@@ -229,29 +241,15 @@ public abstract class MailChimpAbstractRecordBuffer
|
|
229
241
|
abstract String extractDataCenter(final MailChimpOutputPluginDelegate.PluginTask task)
|
230
242
|
throws JsonProcessingException;
|
231
243
|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
}
|
242
|
-
}
|
243
|
-
|
244
|
-
private void extractInterestCategories()
|
245
|
-
{
|
246
|
-
try {
|
247
|
-
// Should loop the names and get the id of interest categories.
|
248
|
-
// The reason why we put categories validation here because we can not share data between instance.
|
249
|
-
categories = extractInterestCategoriesByGroupNames(task);
|
250
|
-
}
|
251
|
-
catch (JsonProcessingException jpe) {
|
252
|
-
throw new DataException(jpe);
|
253
|
-
}
|
254
|
-
}
|
244
|
+
/**
|
245
|
+
* Extract all merge fields from MailChimp list.
|
246
|
+
*
|
247
|
+
* @param task the task
|
248
|
+
* @return the map
|
249
|
+
* @throws JsonProcessingException the json processing exception
|
250
|
+
*/
|
251
|
+
abstract Map<String, MergeField> extractMergeFieldsFromList(final MailChimpOutputPluginDelegate.PluginTask task)
|
252
|
+
throws JsonProcessingException;
|
255
253
|
|
256
254
|
private Function<JsonNode, JsonNode> contactMapper(final Map<String, String> allowColumns)
|
257
255
|
{
|
@@ -273,11 +271,20 @@ public abstract class MailChimpAbstractRecordBuffer
|
|
273
271
|
if (task.getMergeFields().isPresent() && !task.getMergeFields().get().isEmpty()) {
|
274
272
|
for (final Column column : schema.getColumns()) {
|
275
273
|
if (!"".equals(containsCaseInsensitive(column.getName(), task.getMergeFields().get()))) {
|
276
|
-
|
277
|
-
|
274
|
+
String value = input.findValue(column.getName()).asText();
|
275
|
+
|
276
|
+
// Try to convert to Json from string with the merge field's type is address
|
277
|
+
if (availableMergeFields.get(column.getName()).getType()
|
278
|
+
.equals(MergeField.MergeFieldType.ADDRESS.getType())) {
|
279
|
+
JsonNode addressNode = toJsonNode(value);
|
280
|
+
if (addressNode instanceof NullNode) {
|
281
|
+
mergeFields.put(column.getName().toUpperCase(), value);
|
282
|
+
}
|
283
|
+
else {
|
284
|
+
mergeFields.set(column.getName().toUpperCase(), addressNode);
|
285
|
+
}
|
278
286
|
}
|
279
287
|
else {
|
280
|
-
String value = input.findValue(column.getName()).asText();
|
281
288
|
mergeFields.put(column.getName().toUpperCase(), value);
|
282
289
|
}
|
283
290
|
}
|
@@ -15,6 +15,8 @@ import org.embulk.output.mailchimp.model.ErrorResponse;
|
|
15
15
|
import org.embulk.output.mailchimp.model.InterestCategoriesResponse;
|
16
16
|
import org.embulk.output.mailchimp.model.InterestResponse;
|
17
17
|
import org.embulk.output.mailchimp.model.InterestsResponse;
|
18
|
+
import org.embulk.output.mailchimp.model.MergeField;
|
19
|
+
import org.embulk.output.mailchimp.model.MergeFields;
|
18
20
|
import org.embulk.output.mailchimp.model.MetaDataResponse;
|
19
21
|
import org.embulk.output.mailchimp.model.ReportResponse;
|
20
22
|
import org.embulk.spi.Exec;
|
@@ -156,6 +158,17 @@ public class MailChimpRecordBuffer extends MailChimpAbstractRecordBuffer
|
|
156
158
|
}
|
157
159
|
}
|
158
160
|
|
161
|
+
@Override
|
162
|
+
Map<String, MergeField> extractMergeFieldsFromList(MailChimpOutputPluginDelegate.PluginTask task) throws JsonProcessingException
|
163
|
+
{
|
164
|
+
String endpoint = MessageFormat.format(mailchimpEndpoint + "/lists/{0}/merge-fields",
|
165
|
+
task.getListId());
|
166
|
+
JsonNode response = client.sendRequest(endpoint, HttpMethod.GET, task);
|
167
|
+
MergeFields mergeFields = getMapper().treeToValue(response,
|
168
|
+
MergeFields.class);
|
169
|
+
return convertMergeFieldToMap(mergeFields.getMergeFields());
|
170
|
+
}
|
171
|
+
|
159
172
|
private Map<String, InterestResponse> convertInterestCategoryToMap(final List<InterestResponse> interestResponseList)
|
160
173
|
{
|
161
174
|
Function<InterestResponse, String> function = new Function<InterestResponse, String>()
|
@@ -171,4 +184,21 @@ public class MailChimpRecordBuffer extends MailChimpAbstractRecordBuffer
|
|
171
184
|
.toList(),
|
172
185
|
function);
|
173
186
|
}
|
187
|
+
|
188
|
+
private Map<String, MergeField> convertMergeFieldToMap(final List<MergeField> mergeFieldList)
|
189
|
+
{
|
190
|
+
Function<MergeField, String> function = new Function<MergeField, String>()
|
191
|
+
{
|
192
|
+
@Nullable
|
193
|
+
@Override
|
194
|
+
public String apply(@Nullable MergeField input)
|
195
|
+
{
|
196
|
+
return input.getTag().toLowerCase();
|
197
|
+
}
|
198
|
+
};
|
199
|
+
|
200
|
+
return Maps.uniqueIndex(FluentIterable.from(mergeFieldList)
|
201
|
+
.toList(),
|
202
|
+
function);
|
203
|
+
}
|
174
204
|
}
|
@@ -1,6 +1,10 @@
|
|
1
1
|
package org.embulk.output.mailchimp.helper;
|
2
2
|
|
3
|
+
import com.fasterxml.jackson.core.JsonParser;
|
4
|
+
import com.fasterxml.jackson.databind.DeserializationFeature;
|
3
5
|
import com.fasterxml.jackson.databind.JsonNode;
|
6
|
+
import com.fasterxml.jackson.databind.ObjectMapper;
|
7
|
+
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
4
8
|
import com.google.common.base.Function;
|
5
9
|
import com.google.common.base.Splitter;
|
6
10
|
import com.google.common.collect.Lists;
|
@@ -9,6 +13,7 @@ import com.google.common.collect.Multimaps;
|
|
9
13
|
|
10
14
|
import javax.annotation.Nullable;
|
11
15
|
|
16
|
+
import java.io.IOException;
|
12
17
|
import java.util.List;
|
13
18
|
|
14
19
|
/**
|
@@ -76,9 +81,28 @@ public final class MailChimpHelper
|
|
76
81
|
* @param string the string
|
77
82
|
* @return the list
|
78
83
|
*/
|
79
|
-
public static List<String> fromCommaSeparatedString(String string)
|
84
|
+
public static List<String> fromCommaSeparatedString(final String string)
|
80
85
|
{
|
81
86
|
Iterable<String> split = Splitter.on(",").omitEmptyStrings().trimResults().split(string);
|
82
87
|
return Lists.newArrayList(split);
|
83
88
|
}
|
89
|
+
|
90
|
+
/**
|
91
|
+
* TODO: td-worker automatically converts Presto json type to Embulk string type. This is wordaround to convert String to JsonNode
|
92
|
+
*
|
93
|
+
* @param string the string
|
94
|
+
* @return the json node
|
95
|
+
*/
|
96
|
+
public static JsonNode toJsonNode(final String string)
|
97
|
+
{
|
98
|
+
final ObjectMapper mapper = new ObjectMapper()
|
99
|
+
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
100
|
+
.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, false);
|
101
|
+
try {
|
102
|
+
return mapper.readTree(string);
|
103
|
+
}
|
104
|
+
catch (IOException e) {
|
105
|
+
return JsonNodeFactory.instance.nullNode();
|
106
|
+
}
|
107
|
+
}
|
84
108
|
}
|
@@ -0,0 +1,102 @@
|
|
1
|
+
package org.embulk.output.mailchimp.model;
|
2
|
+
|
3
|
+
import com.fasterxml.jackson.annotation.JsonCreator;
|
4
|
+
import com.fasterxml.jackson.annotation.JsonProperty;
|
5
|
+
import org.embulk.config.ConfigException;
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Created by thangnc on 5/8/17.
|
9
|
+
*/
|
10
|
+
public class MergeField
|
11
|
+
{
|
12
|
+
@JsonProperty("merge_id")
|
13
|
+
private int mergeId;
|
14
|
+
|
15
|
+
private String name;
|
16
|
+
private String tag;
|
17
|
+
private String type;
|
18
|
+
|
19
|
+
public int getMergeId()
|
20
|
+
{
|
21
|
+
return mergeId;
|
22
|
+
}
|
23
|
+
|
24
|
+
public void setMergeId(int mergeId)
|
25
|
+
{
|
26
|
+
this.mergeId = mergeId;
|
27
|
+
}
|
28
|
+
|
29
|
+
public String getName()
|
30
|
+
{
|
31
|
+
return name;
|
32
|
+
}
|
33
|
+
|
34
|
+
public void setName(String name)
|
35
|
+
{
|
36
|
+
this.name = name;
|
37
|
+
}
|
38
|
+
|
39
|
+
public String getTag()
|
40
|
+
{
|
41
|
+
return tag;
|
42
|
+
}
|
43
|
+
|
44
|
+
public void setTag(String tag)
|
45
|
+
{
|
46
|
+
this.tag = tag;
|
47
|
+
}
|
48
|
+
|
49
|
+
public String getType()
|
50
|
+
{
|
51
|
+
return type;
|
52
|
+
}
|
53
|
+
|
54
|
+
public void setType(String type)
|
55
|
+
{
|
56
|
+
this.type = type;
|
57
|
+
}
|
58
|
+
|
59
|
+
public enum MergeFieldType
|
60
|
+
{
|
61
|
+
TEXT("text"), NUMBER("number"), ADDRESS("address"), PHONE("phone"), DATE("date"), URL("url"),
|
62
|
+
IMAGEURL("imageurl"), RADIO("radio"), DROPDOWN("dropdown"), BIRTHDAY("birthday"), ZIP("zip");
|
63
|
+
|
64
|
+
private String type;
|
65
|
+
|
66
|
+
MergeFieldType(String type)
|
67
|
+
{
|
68
|
+
this.type = type;
|
69
|
+
}
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Gets type.
|
73
|
+
*
|
74
|
+
* @return the type
|
75
|
+
*/
|
76
|
+
public String getType()
|
77
|
+
{
|
78
|
+
return type;
|
79
|
+
}
|
80
|
+
|
81
|
+
/**
|
82
|
+
* Find by type auth method.
|
83
|
+
*
|
84
|
+
* @param type the type
|
85
|
+
* @return the auth method
|
86
|
+
*/
|
87
|
+
@JsonCreator
|
88
|
+
public static MergeFieldType findByType(final String type)
|
89
|
+
{
|
90
|
+
for (MergeFieldType method : values()) {
|
91
|
+
if (method.getType().equals(type.toLowerCase())) {
|
92
|
+
return method;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
throw new ConfigException(
|
97
|
+
String.format("Unknown merge field type '%s'. Supported targets are [text, number, address, phone, " +
|
98
|
+
"date, url, imageurl, radio, dropdown, birthday, zip]",
|
99
|
+
type));
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
package org.embulk.output.mailchimp.model;
|
2
|
+
|
3
|
+
import com.fasterxml.jackson.annotation.JsonProperty;
|
4
|
+
|
5
|
+
import java.util.List;
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Created by thangnc on 5/8/17.
|
9
|
+
*/
|
10
|
+
public class MergeFields
|
11
|
+
{
|
12
|
+
@JsonProperty("merge_fields")
|
13
|
+
private List<MergeField> mergeFields;
|
14
|
+
|
15
|
+
public List<MergeField> getMergeFields()
|
16
|
+
{
|
17
|
+
return mergeFields;
|
18
|
+
}
|
19
|
+
|
20
|
+
public void setMergeFields(List<MergeField> mergeFields)
|
21
|
+
{
|
22
|
+
this.mergeFields = mergeFields;
|
23
|
+
}
|
24
|
+
}
|
@@ -2,6 +2,8 @@ package org.embulk.output.mailchimp;
|
|
2
2
|
|
3
3
|
import com.fasterxml.jackson.databind.JsonNode;
|
4
4
|
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
5
|
+
import com.fasterxml.jackson.databind.node.NullNode;
|
6
|
+
import com.fasterxml.jackson.databind.node.ObjectNode;
|
5
7
|
import com.google.common.collect.Multimap;
|
6
8
|
import org.embulk.output.mailchimp.helper.MailChimpHelper;
|
7
9
|
import org.junit.Test;
|
@@ -13,6 +15,7 @@ import java.util.List;
|
|
13
15
|
import static org.embulk.output.mailchimp.helper.MailChimpHelper.containsCaseInsensitive;
|
14
16
|
import static org.embulk.output.mailchimp.helper.MailChimpHelper.extractMemberStatus;
|
15
17
|
import static org.embulk.output.mailchimp.helper.MailChimpHelper.maskEmail;
|
18
|
+
import static org.embulk.output.mailchimp.helper.MailChimpHelper.toJsonNode;
|
16
19
|
import static org.junit.Assert.assertArrayEquals;
|
17
20
|
import static org.junit.Assert.assertEquals;
|
18
21
|
|
@@ -63,4 +66,20 @@ public class TestMailChimpHelper
|
|
63
66
|
assertEquals("Length should match", expect.length, separatedString.size());
|
64
67
|
assertArrayEquals("Should match", expect, separatedString.toArray());
|
65
68
|
}
|
69
|
+
|
70
|
+
@Test
|
71
|
+
public void test_toJsonNode_validJsonString()
|
72
|
+
{
|
73
|
+
String given = "{\"addr1\":\"1234\",\"city\":\"mountain view\",\"country\":\"US\",\"state\":\"CA\",\"zip\":\"95869\"}";
|
74
|
+
String expect = "US";
|
75
|
+
|
76
|
+
assertEquals("Should be Json", ObjectNode.class, toJsonNode(given).getClass());
|
77
|
+
assertEquals("Should have attribute `country`", expect, toJsonNode(given).get("country").asText());
|
78
|
+
}
|
79
|
+
|
80
|
+
@Test
|
81
|
+
public void test_toJsonNode_invalidJSonString()
|
82
|
+
{
|
83
|
+
assertEquals("Should be NullNode", NullNode.class, toJsonNode("abc").getClass());
|
84
|
+
}
|
66
85
|
}
|
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.
|
4
|
+
version: 0.3.6
|
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-
|
11
|
+
date: 2017-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,6 +74,8 @@ files:
|
|
74
74
|
- src/main/java/org/embulk/output/mailchimp/model/InterestResponse.java
|
75
75
|
- src/main/java/org/embulk/output/mailchimp/model/InterestsResponse.java
|
76
76
|
- src/main/java/org/embulk/output/mailchimp/model/MemberStatus.java
|
77
|
+
- src/main/java/org/embulk/output/mailchimp/model/MergeField.java
|
78
|
+
- src/main/java/org/embulk/output/mailchimp/model/MergeFields.java
|
77
79
|
- src/main/java/org/embulk/output/mailchimp/model/MetaDataResponse.java
|
78
80
|
- src/main/java/org/embulk/output/mailchimp/model/ReportResponse.java
|
79
81
|
- src/main/java/org/embulk/output/mailchimp/validation/ColumnDataValidator.java
|
@@ -86,7 +88,7 @@ files:
|
|
86
88
|
- test/override_assert_raise.rb
|
87
89
|
- test/run-test.rb
|
88
90
|
- classpath/embulk-base-restclient-0.5.0.jar
|
89
|
-
- classpath/embulk-output-mailchimp-0.3.
|
91
|
+
- classpath/embulk-output-mailchimp-0.3.6.jar
|
90
92
|
- classpath/embulk-util-retryhelper-jetty92-0.5.0.jar
|
91
93
|
- classpath/jetty-client-9.2.14.v20151106.jar
|
92
94
|
- classpath/jetty-http-9.2.14.v20151106.jar
|
Binary file
|