embulk-output-mailchimp 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -2
- data/CHANGELOG.md +5 -0
- data/README.md +3 -0
- data/embulk-output-mailchimp.gemspec +4 -4
- data/lib/embulk/output/mailchimp.rb +21 -4
- data/test/embulk/output/test_mailchimp.rb +22 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 263d6be5b427f50337210f1f42e92a9ca85fea18
|
4
|
+
data.tar.gz: 3b798a92f1358a5331f2b19b358c96eda65b5ea6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1aaf3df35727fc7df1bcb609d0e0cba5dbb6242e6469b75cc6307b10cb1ff2e8f11379d2c34f2312148a4c07422426779abe9b25504004c599aafea4fc05c679
|
7
|
+
data.tar.gz: 6b9c2537a67c6168b02d5f1656730972a5732e5f03fdb36cb9e645da4965b78d9b5fbefb8b22e43ae2d9c0254db4fd1f46094a65541d00b2033801df5d78d648
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
## 0.2.1 - 2016-01-06
|
2
|
+
|
3
|
+
- Logging API request/response [#5](https://github.com/treasure-data/embulk-output-mailchimp/pull/5)
|
4
|
+
- Default `double_optin` to be `false` [#6](https://github.com/treasure-data/embulk-output-mailchimp/pull/6)
|
5
|
+
- Fixed when non-string groups given [#7](https://github.com/treasure-data/embulk-output-mailchimp/pull/7)
|
data/README.md
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
|
2
2
|
Gem::Specification.new do |spec|
|
3
3
|
spec.name = "embulk-output-mailchimp"
|
4
|
-
spec.version = "0.2.
|
5
|
-
spec.authors = ["takkanm"]
|
4
|
+
spec.version = "0.2.1"
|
5
|
+
spec.authors = ["uu59", "takkanm"]
|
6
6
|
spec.summary = "Mailchimp output plugin for Embulk"
|
7
7
|
spec.description = "Dumps records to Mailchimp."
|
8
|
-
spec.email = ["takkanm@gmail.com"]
|
8
|
+
spec.email = ["k@uu59.org", "takkanm@gmail.com"]
|
9
9
|
spec.licenses = ["MIT"]
|
10
10
|
# TODO set this: spec.homepage = "https://github.com/takkanm/embulk-output-mailchimp"
|
11
11
|
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.add_dependency 'perfect_retry', "~> 0.3"
|
19
19
|
|
20
20
|
spec.add_development_dependency 'embulk', ['~> 0.7.9']
|
21
|
-
spec.add_development_dependency 'bundler', ['~> 1.
|
21
|
+
spec.add_development_dependency 'bundler', ['~> 1.10.6']
|
22
22
|
spec.add_development_dependency 'rake', ['>= 10.0']
|
23
23
|
spec.add_development_dependency 'test-unit'
|
24
24
|
spec.add_development_dependency 'test-unit-rr'
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'mailchimp'
|
2
2
|
require 'perfect_retry'
|
3
3
|
|
4
|
+
require 'securerandom'
|
5
|
+
|
4
6
|
module Embulk
|
5
7
|
module Output
|
6
8
|
|
@@ -30,7 +32,7 @@ module Embulk
|
|
30
32
|
task = {
|
31
33
|
apikey: config.param("apikey", :string),
|
32
34
|
list_id: config.param("list_id", :string),
|
33
|
-
double_optin: config.param("double_optin", :bool, default:
|
35
|
+
double_optin: config.param("double_optin", :bool, default: false),
|
34
36
|
update_existing: config.param("update_existing", :bool, default: false),
|
35
37
|
replace_interests: config.param("replace_interests", :bool, default: true),
|
36
38
|
email_column: config.param("email_column", :string, default: "email"),
|
@@ -103,11 +105,22 @@ module Embulk
|
|
103
105
|
|
104
106
|
private
|
105
107
|
|
108
|
+
# NOTE we expect row has #{email_column} column.
|
109
|
+
# expected full data is following columns.
|
110
|
+
# | #{email_column} | #{fname_column} | #{lname_column} | #{grouping_columns[0]} | #{grouping_columns[1]…|
|
111
|
+
# |-----------------|-----------------|-----------------|------------------------|-----------------------|
|
112
|
+
# | hi@example.com | first_name | last_name | music,book | middle |
|
106
113
|
def add_subscriber(row)
|
107
114
|
return unless row[@email_column]
|
108
115
|
|
109
116
|
merge_columns = {fname: @fname_column, lname: @lname_column}
|
110
117
|
|
118
|
+
# NOTE merge_vars can add extra infomation.
|
119
|
+
# https://apidocs.mailchimp.com/api/2.0/lists/merge-vars.php
|
120
|
+
# embulk-output-mailchimp can add following infomation
|
121
|
+
# - lname
|
122
|
+
# - fname
|
123
|
+
# - interest group
|
111
124
|
merge_vars = merge_columns.each_with_object({}) do |(key, col_name), m|
|
112
125
|
m[key] = row[col_name] if row[col_name]
|
113
126
|
end
|
@@ -116,11 +129,12 @@ module Embulk
|
|
116
129
|
merge_vars[:groupings] = []
|
117
130
|
|
118
131
|
@grouping_columns.each do |group|
|
119
|
-
|
132
|
+
groups = row[group].to_s.split(",")
|
133
|
+
next if groups.empty?
|
120
134
|
|
121
135
|
merge_vars[:groupings] << {
|
122
136
|
'name' => group,
|
123
|
-
'groups' =>
|
137
|
+
'groups' => groups,
|
124
138
|
}
|
125
139
|
end
|
126
140
|
end
|
@@ -142,13 +156,16 @@ module Embulk
|
|
142
156
|
|
143
157
|
def send_subscribers!
|
144
158
|
@retry_manager.with_retry do
|
145
|
-
|
159
|
+
request_id = SecureRandom.uuid
|
160
|
+
Embulk.logger.info "[#{request_id}] Request : #{@subscribers.size} items"
|
161
|
+
res = @client.batch_subscribe_list(
|
146
162
|
@list_id,
|
147
163
|
@subscribers,
|
148
164
|
@double_optin,
|
149
165
|
@update_existing,
|
150
166
|
@replace_interests
|
151
167
|
)
|
168
|
+
Embulk.logger.info "[#{request_id}] Result : #{res.to_s}"
|
152
169
|
end
|
153
170
|
end
|
154
171
|
end
|
@@ -125,6 +125,28 @@ module Embulk
|
|
125
125
|
]
|
126
126
|
)
|
127
127
|
end
|
128
|
+
|
129
|
+
def test_grouping_columns_not_string
|
130
|
+
groups_1 = 42
|
131
|
+
groups_2 = 1.3
|
132
|
+
|
133
|
+
mailchimp = create_mailchimp(
|
134
|
+
lname_column: 'lname',
|
135
|
+
fname_column: 'fname',
|
136
|
+
grouping_columns: ['list_group1', 'list_group2']
|
137
|
+
)
|
138
|
+
|
139
|
+
mailchimp.add([['i@example.com', 'lname', 'fname', groups_1, groups_2]])
|
140
|
+
subscriber = mailchimp.instance_variable_get(:@subscribers)[0]
|
141
|
+
|
142
|
+
assert_equal(
|
143
|
+
subscriber[:merge_vars][:groupings],
|
144
|
+
[
|
145
|
+
{'name' => 'list_group1', 'groups' => [groups_1.to_s] },
|
146
|
+
{'name' => 'list_group2', 'groups' => [groups_2.to_s] },
|
147
|
+
]
|
148
|
+
)
|
149
|
+
end
|
128
150
|
end
|
129
151
|
|
130
152
|
# NOTE skip until const mocking
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
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.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- uu59
|
7
8
|
- takkanm
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2016-01-06 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -57,7 +58,7 @@ dependencies:
|
|
57
58
|
requirements:
|
58
59
|
- - "~>"
|
59
60
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
61
|
+
version: 1.10.6
|
61
62
|
name: bundler
|
62
63
|
prerelease: false
|
63
64
|
type: :development
|
@@ -65,7 +66,7 @@ dependencies:
|
|
65
66
|
requirements:
|
66
67
|
- - "~>"
|
67
68
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
+
version: 1.10.6
|
69
70
|
- !ruby/object:Gem::Dependency
|
70
71
|
requirement: !ruby/object:Gem::Requirement
|
71
72
|
requirements:
|
@@ -138,6 +139,7 @@ dependencies:
|
|
138
139
|
version: '0'
|
139
140
|
description: Dumps records to Mailchimp.
|
140
141
|
email:
|
142
|
+
- k@uu59.org
|
141
143
|
- takkanm@gmail.com
|
142
144
|
executables: []
|
143
145
|
extensions: []
|
@@ -147,6 +149,7 @@ files:
|
|
147
149
|
- ".gitignore"
|
148
150
|
- ".ruby-version"
|
149
151
|
- ".travis.yml"
|
152
|
+
- CHANGELOG.md
|
150
153
|
- Gemfile
|
151
154
|
- LICENSE.txt
|
152
155
|
- README.md
|