effective_mailchimp 0.13.3 → 0.15.0
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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 90147038e4ce23be0ac4eb2b378ffa9e7cc6fd062c6edfe9fb347d5ea54d3cae
|
|
4
|
+
data.tar.gz: facdabf1858a42c52610ae372e45ac1e7690a9e0ca81aea49783fd160ce7b119
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5574df9502656c67d8a2c3b4c5a42efe58b3000f4b35a50491db5edaf560888ad07ebdb4835e143f9fa203b1c861afdb483148b548be3a6013cb293ee4446a0f
|
|
7
|
+
data.tar.gz: 9e7f4438f4d049e0a729b7bbb3fa89bac38755f065f5ca50374c5a0f750a65077462bdd8f3601e4b273f7dc2b27acc12b680ba4eccd1e484a706fa08d19f27c3
|
|
@@ -29,7 +29,7 @@ module Admin
|
|
|
29
29
|
col :last_synced_at
|
|
30
30
|
|
|
31
31
|
actions_col do |member|
|
|
32
|
-
dropdown_link_to('Edit', "/admin/users/#{member.user.to_param}/edit#tab-mailchimp", 'data-turbolinks': false)
|
|
32
|
+
dropdown_link_to('Edit', "/admin/users/#{member.user.to_param}/edit#tab-mailchimp", 'data-turbolinks': false, 'data-turbo': false)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
@@ -248,19 +248,17 @@ module EffectiveMailchimpUser
|
|
|
248
248
|
member.assign_mailchimp_attributes(list_member) if list_member.present?
|
|
249
249
|
rescue MailchimpMarketing::ApiError => e
|
|
250
250
|
message = e.to_s.downcase
|
|
251
|
+
compliance_error = e.status == 400 && message.include?('member in compliance state')
|
|
251
252
|
|
|
252
|
-
if message.include?("cannot be subscribed") || message.include?("deleted") || message.include?("unsubscribed") || message.include?("archived") || message.include?("cleaned")
|
|
253
|
+
if compliance_error || message.include?("cannot be subscribed") || message.include?("deleted") || message.include?("unsubscribed") || message.include?("archived") || message.include?("cleaned")
|
|
253
254
|
member.assign_mailchimp_cannot_be_subscribed
|
|
254
|
-
elsif message.include?("already a list member") || message.include?("already in this list")
|
|
255
|
-
existing = api.list_member(member.mailchimp_list, member.user.email)
|
|
256
|
-
member.assign_mailchimp_attributes(existing) if existing.present?
|
|
257
255
|
elsif message.include?("could not be found")
|
|
258
256
|
# Nothing to do
|
|
259
257
|
else
|
|
260
258
|
# Nothing to do.
|
|
261
259
|
end
|
|
262
260
|
|
|
263
|
-
if !EffectiveMailchimp.silence_api_errors?
|
|
261
|
+
if !EffectiveMailchimp.silence_api_errors? && !compliance_error
|
|
264
262
|
EffectiveResources.send_error(e, user_id: id || 'nil')
|
|
265
263
|
end
|
|
266
264
|
|
|
@@ -76,14 +76,14 @@ module Effective
|
|
|
76
76
|
def categories(list_id)
|
|
77
77
|
Rails.logger.info "[effective_mailchimp] Index Interest Categories" if debug?
|
|
78
78
|
|
|
79
|
-
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)
|
|
80
80
|
Array(response['categories']) - [nil, '', {}]
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
def interests(list_id, category_id)
|
|
84
84
|
Rails.logger.info "[effective_mailchimp] Index Interest Category Interests" if debug?
|
|
85
85
|
|
|
86
|
-
response = client.lists.list_interest_category_interests(list_id, category_id
|
|
86
|
+
response = client.lists.list_interest_category_interests(list_id, category_id)
|
|
87
87
|
Array(response['interests']) - [nil, '', {}]
|
|
88
88
|
end
|
|
89
89
|
|
|
@@ -95,6 +95,7 @@ module Effective
|
|
|
95
95
|
begin
|
|
96
96
|
client.lists.get_list_member(id.try(:mailchimp_id) || id, subscriber_hash(email))
|
|
97
97
|
rescue MailchimpMarketing::ApiError => e
|
|
98
|
+
raise unless e.status == 404
|
|
98
99
|
{}
|
|
99
100
|
end
|
|
100
101
|
end
|
|
@@ -128,9 +129,18 @@ module Effective
|
|
|
128
129
|
Rails.logger.info "[effective_mailchimp] Add List Member" if debug?
|
|
129
130
|
return if sandbox_mode?
|
|
130
131
|
|
|
131
|
-
# Actually add or update
|
|
132
|
-
payload = list_member_payload(member).merge(status_if_new:
|
|
133
|
-
|
|
132
|
+
# Actually add or update
|
|
133
|
+
payload = list_member_payload(member).merge(status_if_new: (member.subscribed? ? 'subscribed' : 'unsubscribed'))
|
|
134
|
+
list_id = member.mailchimp_list.mailchimp_id
|
|
135
|
+
hash = subscriber_hash(member.user.email)
|
|
136
|
+
|
|
137
|
+
begin
|
|
138
|
+
client.lists.set_list_member(list_id, hash, payload)
|
|
139
|
+
rescue MailchimpMarketing::ApiError => e
|
|
140
|
+
raise unless e.status == 400 && e.to_s.include?('Member Exists')
|
|
141
|
+
|
|
142
|
+
client.lists.update_list_member(list_id, hash, payload.except(:status_if_new))
|
|
143
|
+
end
|
|
134
144
|
end
|
|
135
145
|
|
|
136
146
|
def list_member_update(member)
|
|
@@ -152,21 +162,16 @@ module Effective
|
|
|
152
162
|
|
|
153
163
|
payload = {
|
|
154
164
|
email_address: member.user.email,
|
|
155
|
-
status:
|
|
165
|
+
status: (member.subscribed ? 'subscribed' : 'unsubscribed'),
|
|
156
166
|
merge_fields: merge_fields.transform_values { |value| value || '' },
|
|
157
167
|
interests: member.interests_hash.presence
|
|
158
168
|
}.compact
|
|
159
169
|
end
|
|
160
170
|
|
|
161
|
-
# Mailchimp identifies a list member by the MD5 hash of their lowercase email address
|
|
162
171
|
def subscriber_hash(email)
|
|
163
172
|
raise('expected an email') unless email.to_s.include?('@')
|
|
164
173
|
|
|
165
|
-
Digest::MD5.hexdigest(email.to_s.downcase
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
def list_member_status(member)
|
|
169
|
-
member.subscribed ? 'subscribed' : 'unsubscribed'
|
|
174
|
+
Digest::MD5.hexdigest(email.to_s.strip.downcase)
|
|
170
175
|
end
|
|
171
176
|
|
|
172
177
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: effective_mailchimp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.15.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Code and Effect
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: rails
|
|
@@ -253,7 +252,6 @@ homepage: https://github.com/code-and-effect/effective_mailchimp
|
|
|
253
252
|
licenses:
|
|
254
253
|
- MIT
|
|
255
254
|
metadata: {}
|
|
256
|
-
post_install_message:
|
|
257
255
|
rdoc_options: []
|
|
258
256
|
require_paths:
|
|
259
257
|
- lib
|
|
@@ -268,8 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
268
266
|
- !ruby/object:Gem::Version
|
|
269
267
|
version: '0'
|
|
270
268
|
requirements: []
|
|
271
|
-
rubygems_version:
|
|
272
|
-
signing_key:
|
|
269
|
+
rubygems_version: 4.0.17
|
|
273
270
|
specification_version: 4
|
|
274
271
|
summary: Subscribe and unsubscribe to mailchimp lists.
|
|
275
272
|
test_files: []
|