embulk-output-mailchimp 0.2.0 → 0.2.1
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/.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
|