embulk-output-mailchimp 0.2.3 → 0.3.2
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/.coveralls.yml +1 -1
- data/.gitignore +10 -3
- data/.travis.yml +4 -7
- data/CHANGELOG.md +18 -0
- data/README.md +18 -17
- data/build.gradle +124 -0
- data/ci/travis_mailchimp.yml +8 -0
- data/circle.yml +16 -0
- data/classpath/embulk-base-restclient-0.5.0.jar +0 -0
- data/classpath/embulk-output-mailchimp-0.3.2.jar +0 -0
- data/classpath/embulk-util-retryhelper-jetty92-0.5.0.jar +0 -0
- data/classpath/jetty-client-9.2.14.v20151106.jar +0 -0
- data/classpath/jetty-http-9.2.14.v20151106.jar +0 -0
- data/classpath/jetty-io-9.2.14.v20151106.jar +0 -0
- data/classpath/jetty-util-9.2.14.v20151106.jar +0 -0
- data/config/checkstyle/checkstyle.xml +128 -0
- data/config/checkstyle/default.xml +108 -0
- data/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/gradlew +160 -0
- data/gradlew.bat +90 -0
- data/lib/embulk/output/mailchimp.rb +3 -172
- data/src/main/java/org/embulk/output/mailchimp/MailChimpAbstractRecordBuffer.java +320 -0
- data/src/main/java/org/embulk/output/mailchimp/MailChimpHttpClient.java +151 -0
- data/src/main/java/org/embulk/output/mailchimp/MailChimpOutputPlugin.java +18 -0
- data/src/main/java/org/embulk/output/mailchimp/MailChimpOutputPluginDelegate.java +164 -0
- data/src/main/java/org/embulk/output/mailchimp/MailChimpRecordBuffer.java +174 -0
- data/src/main/java/org/embulk/output/mailchimp/helper/MailChimpHelper.java +70 -0
- data/src/main/java/org/embulk/output/mailchimp/model/AuthMethod.java +58 -0
- data/src/main/java/org/embulk/output/mailchimp/model/CategoriesResponse.java +30 -0
- data/src/main/java/org/embulk/output/mailchimp/model/ErrorResponse.java +56 -0
- data/src/main/java/org/embulk/output/mailchimp/model/InterestCategoriesResponse.java +24 -0
- data/src/main/java/org/embulk/output/mailchimp/model/InterestResponse.java +30 -0
- data/src/main/java/org/embulk/output/mailchimp/model/InterestsResponse.java +24 -0
- data/src/main/java/org/embulk/output/mailchimp/model/MemberStatus.java +64 -0
- data/src/main/java/org/embulk/output/mailchimp/model/MetaDataResponse.java +36 -0
- data/src/main/java/org/embulk/output/mailchimp/model/ReportResponse.java +105 -0
- data/src/main/java/org/embulk/output/mailchimp/validation/ColumnDataValidator.java +40 -0
- data/src/test/java/org/embulk/output/mailchimp/CircleCICredentials.java +22 -0
- data/src/test/java/org/embulk/output/mailchimp/TestColumnDataValidator.java +43 -0
- data/src/test/java/org/embulk/output/mailchimp/TestMailChimpHelper.java +54 -0
- data/src/test/java/org/embulk/output/mailchimp/TestMailChimpOutputPlugin.java +158 -0
- data/src/test/resources/csv/email.csv +2 -0
- metadata +55 -122
- data/.ruby-version +0 -1
- data/Gemfile +0 -2
- data/Rakefile +0 -29
- data/embulk-output-mailchimp.gemspec +0 -27
@@ -0,0 +1,40 @@
|
|
1
|
+
package org.embulk.output.mailchimp.validation;
|
2
|
+
|
3
|
+
import org.embulk.spi.Column;
|
4
|
+
import org.embulk.spi.Schema;
|
5
|
+
|
6
|
+
import java.util.Arrays;
|
7
|
+
|
8
|
+
/**
|
9
|
+
* An Util class to validate data based on @{@link Schema} to build data payload
|
10
|
+
* <p>
|
11
|
+
* Created by thangnc on 4/18/17.
|
12
|
+
*/
|
13
|
+
public final class ColumnDataValidator
|
14
|
+
{
|
15
|
+
private ColumnDataValidator()
|
16
|
+
{
|
17
|
+
}
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Check required columns. Should require `email` and `status` columns
|
21
|
+
*
|
22
|
+
* @param schema the schema
|
23
|
+
* @param allowColumns the columns
|
24
|
+
* @return the boolean
|
25
|
+
*/
|
26
|
+
public static boolean checkExistColumns(final Schema schema, final String... allowColumns)
|
27
|
+
{
|
28
|
+
int found = 0;
|
29
|
+
|
30
|
+
for (Column column : schema.getColumns()) {
|
31
|
+
if (!Arrays.asList(allowColumns).contains(column.getName())) {
|
32
|
+
continue;
|
33
|
+
}
|
34
|
+
|
35
|
+
found++;
|
36
|
+
}
|
37
|
+
|
38
|
+
return found == allowColumns.length;
|
39
|
+
}
|
40
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
package org.embulk.output.mailchimp;
|
2
|
+
|
3
|
+
import org.embulk.EmbulkEmbed;
|
4
|
+
import org.embulk.config.ConfigSource;
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Created by thangnc on 3/6/17.
|
8
|
+
*/
|
9
|
+
public class CircleCICredentials
|
10
|
+
{
|
11
|
+
private CircleCICredentials()
|
12
|
+
{
|
13
|
+
}
|
14
|
+
|
15
|
+
public static ConfigSource credentials()
|
16
|
+
{
|
17
|
+
return EmbulkEmbed.newSystemConfigLoader().newConfigSource()
|
18
|
+
.set("apikey", System.getenv("MAILCHIMP_APIKEY"))
|
19
|
+
.set("access_token", System.getenv("MAILCHIMP_ACCESS_TOKEN"))
|
20
|
+
.set("list_id", System.getenv("MAILCHIMP_LIST_ID"));
|
21
|
+
}
|
22
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
package org.embulk.output.mailchimp;
|
2
|
+
|
3
|
+
import org.embulk.output.mailchimp.validation.ColumnDataValidator;
|
4
|
+
import org.embulk.spi.Schema;
|
5
|
+
import org.junit.Assert;
|
6
|
+
import org.junit.Test;
|
7
|
+
|
8
|
+
import static org.embulk.spi.type.Types.STRING;
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Created by thangnc on 5/12/17.
|
12
|
+
*/
|
13
|
+
public class TestColumnDataValidator
|
14
|
+
{
|
15
|
+
@Test
|
16
|
+
public void test_checkExistColumns_valid()
|
17
|
+
{
|
18
|
+
Schema schema = Schema.builder()
|
19
|
+
.add("email", STRING)
|
20
|
+
.add("fname", STRING)
|
21
|
+
.add("lname", STRING)
|
22
|
+
.add("status", STRING)
|
23
|
+
.build();
|
24
|
+
|
25
|
+
Assert.assertEquals("Column should be exists",
|
26
|
+
true,
|
27
|
+
ColumnDataValidator.checkExistColumns(schema, "status", "email"));
|
28
|
+
}
|
29
|
+
|
30
|
+
@Test
|
31
|
+
public void test_checkExistColumns_invalid()
|
32
|
+
{
|
33
|
+
Schema schema = Schema.builder()
|
34
|
+
.add("email", STRING)
|
35
|
+
.add("fname", STRING)
|
36
|
+
.add("lname", STRING)
|
37
|
+
.build();
|
38
|
+
|
39
|
+
Assert.assertEquals("Column should be not exist",
|
40
|
+
false,
|
41
|
+
ColumnDataValidator.checkExistColumns(schema, "status", "email"));
|
42
|
+
}
|
43
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
package org.embulk.output.mailchimp;
|
2
|
+
|
3
|
+
import com.fasterxml.jackson.databind.JsonNode;
|
4
|
+
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
5
|
+
import com.google.common.collect.Multimap;
|
6
|
+
import org.junit.Test;
|
7
|
+
|
8
|
+
import java.util.ArrayList;
|
9
|
+
import java.util.Arrays;
|
10
|
+
import java.util.List;
|
11
|
+
|
12
|
+
import static org.embulk.output.mailchimp.helper.MailChimpHelper.containsCaseInsensitive;
|
13
|
+
import static org.embulk.output.mailchimp.helper.MailChimpHelper.extractMemberStatus;
|
14
|
+
import static org.embulk.output.mailchimp.helper.MailChimpHelper.maskEmail;
|
15
|
+
import static org.junit.Assert.assertEquals;
|
16
|
+
|
17
|
+
/**
|
18
|
+
* Created by thangnc on 4/26/17.
|
19
|
+
*/
|
20
|
+
public class TestMailChimpHelper
|
21
|
+
{
|
22
|
+
@Test
|
23
|
+
public void test_maskEmail_validInErrorResponse()
|
24
|
+
{
|
25
|
+
String given = "thang0001@example.com looks fake or invalid, please enter a real email address.";
|
26
|
+
String expect = "t******01@example.com looks fake or invalid, please enter a real email address.";
|
27
|
+
assertEquals("Email should match", expect, maskEmail(given));
|
28
|
+
}
|
29
|
+
|
30
|
+
@Test
|
31
|
+
public void test_containsCaseInsensitive_validMergeFields()
|
32
|
+
{
|
33
|
+
String expect = "United State";
|
34
|
+
assertEquals("Interest category should match", expect, containsCaseInsensitive("united state",
|
35
|
+
Arrays.asList("Donating", "United State")));
|
36
|
+
}
|
37
|
+
|
38
|
+
@Test
|
39
|
+
public void test_extractMemberStatus()
|
40
|
+
{
|
41
|
+
List<JsonNode> given = new ArrayList<>();
|
42
|
+
given.add(JsonNodeFactory.instance.objectNode().put("status", "subcribed").put("email", "thang@gmail.com"));
|
43
|
+
given.add(JsonNodeFactory.instance.objectNode().put("status", "pending").put("email", "thang123@gmail.com"));
|
44
|
+
given.add(JsonNodeFactory.instance.objectNode().put("status", "abc").put("email", "thang456@gmail.com"));
|
45
|
+
given.add(JsonNodeFactory.instance.objectNode().put("status", "pending").put("email", "thang789@gmail.com"));
|
46
|
+
given.add(JsonNodeFactory.instance.objectNode().put("status", "subcribed").put("email", "thang000@gmail.com"));
|
47
|
+
|
48
|
+
Multimap<String, JsonNode> statusMap = extractMemberStatus(given);
|
49
|
+
assertEquals("Status should match", 3, statusMap.keySet().size());
|
50
|
+
assertEquals("Status should contain keys", true, statusMap.containsKey("pending"));
|
51
|
+
assertEquals("Status should contain keys", true, statusMap.containsKey("subcribed"));
|
52
|
+
assertEquals("Status should contain keys", true, statusMap.containsKey("abc"));
|
53
|
+
}
|
54
|
+
}
|
@@ -0,0 +1,158 @@
|
|
1
|
+
package org.embulk.output.mailchimp;
|
2
|
+
|
3
|
+
import com.fasterxml.jackson.databind.ObjectMapper;
|
4
|
+
import com.fasterxml.jackson.datatype.guava.GuavaModule;
|
5
|
+
import com.fasterxml.jackson.datatype.joda.JodaModule;
|
6
|
+
import com.google.common.base.Throwables;
|
7
|
+
import com.google.common.collect.Lists;
|
8
|
+
import org.embulk.EmbulkTestRuntime;
|
9
|
+
import org.embulk.config.ConfigException;
|
10
|
+
import org.embulk.config.ConfigLoader;
|
11
|
+
import org.embulk.config.ConfigSource;
|
12
|
+
import org.embulk.config.ModelManager;
|
13
|
+
import org.embulk.config.TaskReport;
|
14
|
+
import org.embulk.config.TaskSource;
|
15
|
+
import org.embulk.spi.Exec;
|
16
|
+
import org.embulk.spi.OutputPlugin;
|
17
|
+
import org.embulk.spi.Schema;
|
18
|
+
import org.embulk.spi.TransactionalPageOutput;
|
19
|
+
import org.junit.After;
|
20
|
+
import org.junit.Before;
|
21
|
+
import org.junit.Rule;
|
22
|
+
import org.junit.Test;
|
23
|
+
|
24
|
+
import java.io.File;
|
25
|
+
import java.io.IOException;
|
26
|
+
import java.util.List;
|
27
|
+
|
28
|
+
import static com.google.common.base.Strings.isNullOrEmpty;
|
29
|
+
import static org.embulk.spi.type.Types.STRING;
|
30
|
+
import static org.hamcrest.Matchers.is;
|
31
|
+
import static org.junit.Assume.assumeThat;
|
32
|
+
|
33
|
+
/**
|
34
|
+
* Created by thangnc on 4/14/17.
|
35
|
+
*/
|
36
|
+
public class TestMailChimpOutputPlugin
|
37
|
+
{
|
38
|
+
@Rule
|
39
|
+
public EmbulkTestRuntime runtime = new EmbulkTestRuntime();
|
40
|
+
|
41
|
+
private ConfigSource baseConfig;
|
42
|
+
private MailChimpOutputPluginDelegate.PluginTask task;
|
43
|
+
private MailChimpOutputPlugin plugin;
|
44
|
+
|
45
|
+
@Before
|
46
|
+
public void setup()
|
47
|
+
{
|
48
|
+
plugin = new MailChimpOutputPlugin();
|
49
|
+
baseConfig = config();
|
50
|
+
task = baseConfig.loadConfig(MailChimpOutputPluginDelegate.PluginTask.class);
|
51
|
+
}
|
52
|
+
|
53
|
+
@After
|
54
|
+
public void teardown()
|
55
|
+
{
|
56
|
+
}
|
57
|
+
|
58
|
+
@Test(expected = ConfigException.class)
|
59
|
+
public void test_config_invalidWithEmptyApiKey()
|
60
|
+
{
|
61
|
+
ConfigSource config = baseConfig.set("apikey", "");
|
62
|
+
doSetUpSchemaAndRun(config, plugin);
|
63
|
+
}
|
64
|
+
|
65
|
+
@Test(expected = ConfigException.class)
|
66
|
+
public void test_config_invalidWithNullApiKey()
|
67
|
+
{
|
68
|
+
ConfigSource config = baseConfig.set("apikey", null);
|
69
|
+
doSetUpSchemaAndRun(config, plugin);
|
70
|
+
}
|
71
|
+
|
72
|
+
@Test(expected = ConfigException.class)
|
73
|
+
public void test_config_invalidWithEmptyAccessToken()
|
74
|
+
{
|
75
|
+
ConfigSource config = baseConfig.set("auth_method", "oauth")
|
76
|
+
.set("access_token", "");
|
77
|
+
doSetUpSchemaAndRun(config, plugin);
|
78
|
+
}
|
79
|
+
|
80
|
+
@Test(expected = ConfigException.class)
|
81
|
+
public void test_config_invalidWithNullAccessToken()
|
82
|
+
{
|
83
|
+
ConfigSource config = baseConfig.set("auth_method", "oauth")
|
84
|
+
.set("access_token", null);
|
85
|
+
doSetUpSchemaAndRun(config, plugin);
|
86
|
+
}
|
87
|
+
|
88
|
+
@Test(expected = ConfigException.class)
|
89
|
+
public void test_config_invalidWithNullListId()
|
90
|
+
{
|
91
|
+
ConfigSource config = baseConfig.set("list_id", null);
|
92
|
+
doSetUpSchemaAndRun(config, plugin);
|
93
|
+
}
|
94
|
+
|
95
|
+
@Test(expected = ConfigException.class)
|
96
|
+
public void test_config_invalidWithEmptyListId()
|
97
|
+
{
|
98
|
+
ConfigSource config = baseConfig.set("list_id", "");
|
99
|
+
doSetUpSchemaAndRun(config, plugin);
|
100
|
+
}
|
101
|
+
|
102
|
+
@Test(expected = ConfigException.class)
|
103
|
+
public void test_config_invalidWithColumnEmailRequires()
|
104
|
+
{
|
105
|
+
ConfigSource config = baseConfig;
|
106
|
+
Schema schema = Schema.builder()
|
107
|
+
.add("fname", STRING)
|
108
|
+
.add("lname", STRING)
|
109
|
+
.build();
|
110
|
+
|
111
|
+
final TransactionalPageOutput output = plugin.open(task.dump(), schema, 0);
|
112
|
+
output.finish();
|
113
|
+
|
114
|
+
plugin.transaction(config, schema, 0, new OutputControl());
|
115
|
+
}
|
116
|
+
|
117
|
+
/**
|
118
|
+
* Load plugin config with Guava & Joda support
|
119
|
+
*/
|
120
|
+
private static ConfigSource config()
|
121
|
+
{
|
122
|
+
String path = System.getenv("EMBULK_OUTPUT_MAILCHIMP_TEST_CONFIG");
|
123
|
+
assumeThat(isNullOrEmpty(path), is(false));
|
124
|
+
try {
|
125
|
+
ObjectMapper mapper = new ObjectMapper()
|
126
|
+
.registerModule(new GuavaModule())
|
127
|
+
.registerModule(new JodaModule());
|
128
|
+
ConfigLoader configLoader = new ConfigLoader(new ModelManager(null, mapper));
|
129
|
+
return configLoader.fromYamlFile(new File(path));
|
130
|
+
}
|
131
|
+
catch (IOException ex) {
|
132
|
+
throw Throwables.propagate(ex);
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
private class OutputControl implements OutputPlugin.Control
|
137
|
+
{
|
138
|
+
@Override
|
139
|
+
public List<TaskReport> run(TaskSource taskSource)
|
140
|
+
{
|
141
|
+
return Lists.newArrayList(Exec.newTaskReport());
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
private void doSetUpSchemaAndRun(final ConfigSource config, final MailChimpOutputPlugin plugin)
|
146
|
+
{
|
147
|
+
Schema schema = Schema.builder()
|
148
|
+
.add("email", STRING)
|
149
|
+
.add("fname", STRING)
|
150
|
+
.add("lname", STRING)
|
151
|
+
.build();
|
152
|
+
|
153
|
+
final TransactionalPageOutput output = plugin.open(task.dump(), schema, 0);
|
154
|
+
output.finish();
|
155
|
+
|
156
|
+
plugin.transaction(config, schema, 0, new OutputControl());
|
157
|
+
}
|
158
|
+
}
|
metadata
CHANGED
@@ -1,76 +1,33 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-output-mailchimp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
- takkanm
|
7
|
+
- Thang Nguyen
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2017-05-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
|
-
- -
|
16
|
+
- - ~>
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
name: mailchimp-api
|
21
|
-
prerelease: false
|
22
|
-
type: :runtime
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - "~>"
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: 2.0.6
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0.3'
|
34
|
-
name: perfect_retry
|
35
|
-
prerelease: false
|
36
|
-
type: :runtime
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '0.3'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 0.7.9
|
48
|
-
name: embulk
|
49
|
-
prerelease: false
|
50
|
-
type: :development
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - "~>"
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: 0.7.9
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.10.6
|
18
|
+
version: '1.0'
|
62
19
|
name: bundler
|
63
20
|
prerelease: false
|
64
21
|
type: :development
|
65
22
|
version_requirements: !ruby/object:Gem::Requirement
|
66
23
|
requirements:
|
67
|
-
- -
|
24
|
+
- - ~>
|
68
25
|
- !ruby/object:Gem::Version
|
69
|
-
version: 1.
|
26
|
+
version: '1.0'
|
70
27
|
- !ruby/object:Gem::Dependency
|
71
28
|
requirement: !ruby/object:Gem::Requirement
|
72
29
|
requirements:
|
73
|
-
- -
|
30
|
+
- - '>='
|
74
31
|
- !ruby/object:Gem::Version
|
75
32
|
version: '10.0'
|
76
33
|
name: rake
|
@@ -78,88 +35,64 @@ dependencies:
|
|
78
35
|
type: :development
|
79
36
|
version_requirements: !ruby/object:Gem::Requirement
|
80
37
|
requirements:
|
81
|
-
- -
|
38
|
+
- - '>='
|
82
39
|
- !ruby/object:Gem::Version
|
83
40
|
version: '10.0'
|
84
|
-
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
name: test-unit
|
91
|
-
prerelease: false
|
92
|
-
type: :development
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - ">="
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
name: test-unit-rr
|
105
|
-
prerelease: false
|
106
|
-
type: :development
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '0'
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0.9'
|
118
|
-
name: simplecov
|
119
|
-
prerelease: false
|
120
|
-
type: :development
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - ">="
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0.9'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
name: coveralls
|
133
|
-
prerelease: false
|
134
|
-
type: :development
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - ">="
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '0'
|
140
|
-
description: Dumps records to Mailchimp.
|
41
|
+
description: Dumps records to MailChimp.
|
141
42
|
email:
|
142
|
-
-
|
143
|
-
- takkanm@gmail.com
|
43
|
+
- thang@treasure-data.com
|
144
44
|
executables: []
|
145
45
|
extensions: []
|
146
46
|
extra_rdoc_files: []
|
147
47
|
files:
|
148
|
-
-
|
149
|
-
-
|
150
|
-
-
|
151
|
-
- ".travis.yml"
|
48
|
+
- .coveralls.yml
|
49
|
+
- .gitignore
|
50
|
+
- .travis.yml
|
152
51
|
- CHANGELOG.md
|
153
|
-
- Gemfile
|
154
52
|
- LICENSE.txt
|
155
53
|
- README.md
|
156
|
-
-
|
157
|
-
-
|
54
|
+
- build.gradle
|
55
|
+
- ci/travis_mailchimp.yml
|
56
|
+
- circle.yml
|
57
|
+
- config/checkstyle/checkstyle.xml
|
58
|
+
- config/checkstyle/default.xml
|
59
|
+
- gradle/wrapper/gradle-wrapper.jar
|
60
|
+
- gradle/wrapper/gradle-wrapper.properties
|
61
|
+
- gradlew
|
62
|
+
- gradlew.bat
|
158
63
|
- lib/embulk/output/mailchimp.rb
|
64
|
+
- src/main/java/org/embulk/output/mailchimp/MailChimpAbstractRecordBuffer.java
|
65
|
+
- src/main/java/org/embulk/output/mailchimp/MailChimpHttpClient.java
|
66
|
+
- src/main/java/org/embulk/output/mailchimp/MailChimpOutputPlugin.java
|
67
|
+
- src/main/java/org/embulk/output/mailchimp/MailChimpOutputPluginDelegate.java
|
68
|
+
- src/main/java/org/embulk/output/mailchimp/MailChimpRecordBuffer.java
|
69
|
+
- src/main/java/org/embulk/output/mailchimp/helper/MailChimpHelper.java
|
70
|
+
- src/main/java/org/embulk/output/mailchimp/model/AuthMethod.java
|
71
|
+
- src/main/java/org/embulk/output/mailchimp/model/CategoriesResponse.java
|
72
|
+
- src/main/java/org/embulk/output/mailchimp/model/ErrorResponse.java
|
73
|
+
- src/main/java/org/embulk/output/mailchimp/model/InterestCategoriesResponse.java
|
74
|
+
- src/main/java/org/embulk/output/mailchimp/model/InterestResponse.java
|
75
|
+
- src/main/java/org/embulk/output/mailchimp/model/InterestsResponse.java
|
76
|
+
- src/main/java/org/embulk/output/mailchimp/model/MemberStatus.java
|
77
|
+
- src/main/java/org/embulk/output/mailchimp/model/MetaDataResponse.java
|
78
|
+
- src/main/java/org/embulk/output/mailchimp/model/ReportResponse.java
|
79
|
+
- src/main/java/org/embulk/output/mailchimp/validation/ColumnDataValidator.java
|
80
|
+
- src/test/java/org/embulk/output/mailchimp/CircleCICredentials.java
|
81
|
+
- src/test/java/org/embulk/output/mailchimp/TestColumnDataValidator.java
|
82
|
+
- src/test/java/org/embulk/output/mailchimp/TestMailChimpHelper.java
|
83
|
+
- src/test/java/org/embulk/output/mailchimp/TestMailChimpOutputPlugin.java
|
84
|
+
- src/test/resources/csv/email.csv
|
159
85
|
- test/embulk/output/test_mailchimp.rb
|
160
86
|
- test/override_assert_raise.rb
|
161
87
|
- test/run-test.rb
|
162
|
-
|
88
|
+
- classpath/embulk-base-restclient-0.5.0.jar
|
89
|
+
- classpath/embulk-output-mailchimp-0.3.2.jar
|
90
|
+
- classpath/embulk-util-retryhelper-jetty92-0.5.0.jar
|
91
|
+
- classpath/jetty-client-9.2.14.v20151106.jar
|
92
|
+
- classpath/jetty-http-9.2.14.v20151106.jar
|
93
|
+
- classpath/jetty-io-9.2.14.v20151106.jar
|
94
|
+
- classpath/jetty-util-9.2.14.v20151106.jar
|
95
|
+
homepage: https://github.com/treasure-data/embulk-output-mailchimp
|
163
96
|
licenses:
|
164
97
|
- MIT
|
165
98
|
metadata: {}
|
@@ -169,17 +102,17 @@ require_paths:
|
|
169
102
|
- lib
|
170
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
171
104
|
requirements:
|
172
|
-
- -
|
105
|
+
- - '>='
|
173
106
|
- !ruby/object:Gem::Version
|
174
107
|
version: '0'
|
175
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
109
|
requirements:
|
177
|
-
- -
|
110
|
+
- - '>='
|
178
111
|
- !ruby/object:Gem::Version
|
179
112
|
version: '0'
|
180
113
|
requirements: []
|
181
114
|
rubyforge_project:
|
182
|
-
rubygems_version: 2.
|
115
|
+
rubygems_version: 2.1.9
|
183
116
|
signing_key:
|
184
117
|
specification_version: 4
|
185
118
|
summary: Mailchimp output plugin for Embulk
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
jruby-9.0.0.0
|
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
|
3
|
-
task default: :build
|
4
|
-
|
5
|
-
task 'clean' do
|
6
|
-
Dir.glob("pkg/*.gem").each do |name|
|
7
|
-
sh "rm #{name}"
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
task 'reload' do
|
12
|
-
spec = Bundler::GemHelper.gemspec
|
13
|
-
|
14
|
-
sh "embulk gem uninstall #{spec.name}"
|
15
|
-
Rake::Task['clean'].execute
|
16
|
-
Rake::Task['build'].execute
|
17
|
-
sh "embulk gem install pkg/#{spec.name}-#{spec.version}.gem"
|
18
|
-
end
|
19
|
-
|
20
|
-
desc 'Run tests'
|
21
|
-
task :test do
|
22
|
-
ruby("test/run-test.rb", "--use-color=yes", "--collector=dir")
|
23
|
-
end
|
24
|
-
|
25
|
-
desc "Run tests with coverage"
|
26
|
-
task :cov do
|
27
|
-
ENV["COVERAGE"] = "1"
|
28
|
-
ruby("--debug", "test/run-test.rb", "--use-color=yes", "--collector=dir")
|
29
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
|
2
|
-
Gem::Specification.new do |spec|
|
3
|
-
spec.name = "embulk-output-mailchimp"
|
4
|
-
spec.version = "0.2.3"
|
5
|
-
spec.authors = ["uu59", "takkanm"]
|
6
|
-
spec.summary = "Mailchimp output plugin for Embulk"
|
7
|
-
spec.description = "Dumps records to Mailchimp."
|
8
|
-
spec.email = ["k@uu59.org", "takkanm@gmail.com"]
|
9
|
-
spec.licenses = ["MIT"]
|
10
|
-
# TODO set this: spec.homepage = "https://github.com/takkanm/embulk-output-mailchimp"
|
11
|
-
|
12
|
-
spec.files = `git ls-files`.split("\n") + Dir["classpath/*.jar"]
|
13
|
-
spec.test_files = spec.files.grep(%r{^(test|spec)/})
|
14
|
-
spec.require_paths = ["lib"]
|
15
|
-
|
16
|
-
#spec.add_dependency 'YOUR_GEM_DEPENDENCY', ['~> YOUR_GEM_DEPENDENCY_VERSION']
|
17
|
-
spec.add_dependency 'mailchimp-api', ['~> 2.0.6']
|
18
|
-
spec.add_dependency 'perfect_retry', "~> 0.3"
|
19
|
-
|
20
|
-
spec.add_development_dependency 'embulk', ['~> 0.7.9']
|
21
|
-
spec.add_development_dependency 'bundler', ['~> 1.10.6']
|
22
|
-
spec.add_development_dependency 'rake', ['>= 10.0']
|
23
|
-
spec.add_development_dependency 'test-unit'
|
24
|
-
spec.add_development_dependency 'test-unit-rr'
|
25
|
-
spec.add_development_dependency 'simplecov', ['>= 0.9']
|
26
|
-
spec.add_development_dependency 'coveralls'
|
27
|
-
end
|