embulk-output-mailchimp 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|