effective_mailchimp 0.13.2 → 0.13.3
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/app/models/effective/mailchimp_api.rb +21 -8
- data/lib/effective_mailchimp/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1dbffbf79bcfa6f22f1fd8599abc18a84537380ae16bbf8da55368912d7308ca
|
|
4
|
+
data.tar.gz: 2bafa384fc879e4444e51710569eb5e91337d7d46228b7de4927d3f257a27a48
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '018a4244123fc004b0983d6bcd8aa658c6ca0ba3778b9959c373478af51d473ebc4634b912f5935db96afad46910efd46fe51b35b3956c246e8a07224f6197c8'
|
|
7
|
+
data.tar.gz: 66a53fc0e6142b267a323874712f859145720624f2ea9375867d024f0156ace6acaaf70b168bd712463bf56ec74de0d066870c1f452202577636a56042a7a15d
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# https://mailchimp.com/developer/marketing/api/
|
|
4
4
|
|
|
5
5
|
require 'MailchimpMarketing'
|
|
6
|
+
require 'digest'
|
|
6
7
|
|
|
7
8
|
module Effective
|
|
8
9
|
class MailchimpApi
|
|
@@ -75,14 +76,14 @@ module Effective
|
|
|
75
76
|
def categories(list_id)
|
|
76
77
|
Rails.logger.info "[effective_mailchimp] Index Interest Categories" if debug?
|
|
77
78
|
|
|
78
|
-
response = client.lists.get_list_interest_categories(list_id.try(:mailchimp_id) || list_id)
|
|
79
|
+
response = client.lists.get_list_interest_categories(list_id.try(:mailchimp_id) || list_id, count: 1000)
|
|
79
80
|
Array(response['categories']) - [nil, '', {}]
|
|
80
81
|
end
|
|
81
82
|
|
|
82
83
|
def interests(list_id, category_id)
|
|
83
84
|
Rails.logger.info "[effective_mailchimp] Index Interest Category Interests" if debug?
|
|
84
85
|
|
|
85
|
-
response = client.lists.list_interest_category_interests(list_id, category_id)
|
|
86
|
+
response = client.lists.list_interest_category_interests(list_id, category_id, count: 1000)
|
|
86
87
|
Array(response['interests']) - [nil, '', {}]
|
|
87
88
|
end
|
|
88
89
|
|
|
@@ -92,7 +93,7 @@ module Effective
|
|
|
92
93
|
Rails.logger.info "[effective_mailchimp] Get List Member" if debug?
|
|
93
94
|
|
|
94
95
|
begin
|
|
95
|
-
client.lists.get_list_member(id.try(:mailchimp_id) || id, email)
|
|
96
|
+
client.lists.get_list_member(id.try(:mailchimp_id) || id, subscriber_hash(email))
|
|
96
97
|
rescue MailchimpMarketing::ApiError => e
|
|
97
98
|
{}
|
|
98
99
|
end
|
|
@@ -127,9 +128,9 @@ module Effective
|
|
|
127
128
|
Rails.logger.info "[effective_mailchimp] Add List Member" if debug?
|
|
128
129
|
return if sandbox_mode?
|
|
129
130
|
|
|
130
|
-
# Actually add or update
|
|
131
|
-
payload = list_member_payload(member)
|
|
132
|
-
client.lists.set_list_member(member.mailchimp_list.mailchimp_id, member.email, payload)
|
|
131
|
+
# Actually add or update. set_list_member applies status_if_new when the contact is new
|
|
132
|
+
payload = list_member_payload(member).merge(status_if_new: list_member_status(member))
|
|
133
|
+
client.lists.set_list_member(member.mailchimp_list.mailchimp_id, subscriber_hash(member.user.email), payload)
|
|
133
134
|
end
|
|
134
135
|
|
|
135
136
|
def list_member_update(member)
|
|
@@ -139,7 +140,8 @@ module Effective
|
|
|
139
140
|
return if sandbox_mode?
|
|
140
141
|
|
|
141
142
|
payload = list_member_payload(member)
|
|
142
|
-
|
|
143
|
+
hash = member.mailchimp_id.presence || subscriber_hash(member.email)
|
|
144
|
+
client.lists.update_list_member(member.mailchimp_list.mailchimp_id, hash, payload)
|
|
143
145
|
end
|
|
144
146
|
|
|
145
147
|
def list_member_payload(member)
|
|
@@ -150,11 +152,22 @@ module Effective
|
|
|
150
152
|
|
|
151
153
|
payload = {
|
|
152
154
|
email_address: member.user.email,
|
|
153
|
-
status: (member
|
|
155
|
+
status: list_member_status(member),
|
|
154
156
|
merge_fields: merge_fields.transform_values { |value| value || '' },
|
|
155
157
|
interests: member.interests_hash.presence
|
|
156
158
|
}.compact
|
|
157
159
|
end
|
|
158
160
|
|
|
161
|
+
# Mailchimp identifies a list member by the MD5 hash of their lowercase email address
|
|
162
|
+
def subscriber_hash(email)
|
|
163
|
+
raise('expected an email') unless email.to_s.include?('@')
|
|
164
|
+
|
|
165
|
+
Digest::MD5.hexdigest(email.to_s.downcase.strip)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def list_member_status(member)
|
|
169
|
+
member.subscribed ? 'subscribed' : 'unsubscribed'
|
|
170
|
+
end
|
|
171
|
+
|
|
159
172
|
end
|
|
160
173
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: effective_mailchimp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.13.
|
|
4
|
+
version: 0.13.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Code and Effect
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-05-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|