maropost 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c39222bf12c1d855cef900060f8cb24771387073
4
- data.tar.gz: 24b183da1021fb2cd7323c9f701116c4d2d78857
3
+ metadata.gz: 9c8115f30902b993b7c8d6895006ec6a69cbe84a
4
+ data.tar.gz: 2fa10ba47d14f3abe08caefb7c48adb6220a0ae5
5
5
  SHA512:
6
- metadata.gz: aaba52fbd153a4429e5a03a45c06f8dd797d750f5d2fea4ea9dbfcf61b4ccee01f9c6ddac4484cdd08f541e1816cd4bee36c51fc8d099ba5639ded269e2986bc
7
- data.tar.gz: 07ebe611835d1cf5da7b90b3ab16ef98c65fa48b9ec0d766ab6ab51cb131242bc4a61a1eb1e4050e49d358c33a75cf4aace439cc5c068a55e3114d4a414ca14d
6
+ metadata.gz: 6484c0511c8216ebc583d9fa4b3baaa0c67c5cd6ddd64384f660a38fa472bd1b9559db1dcb697b3663de5f3c789cf5eeca7e71bf79377d096563c866174dd5c2
7
+ data.tar.gz: f6623d5bf9b6a974850d5ba9c2a2486c197c3504b5a4b39d9868e31d2861abbdf8f0705cdb51f02d56ac8662b19e5cacf343e069e3df2bdf5c636a578dbb909b
@@ -5,3 +5,4 @@ require 'maropost/version'
5
5
  require 'maropost/configuration'
6
6
  require 'maropost/api'
7
7
  require 'maropost/contact'
8
+ require 'maropost/do_not_mail_list'
@@ -2,7 +2,7 @@ module Maropost
2
2
  class Api
3
3
  def self.find(email)
4
4
  response = request(:get,
5
- "#{Maropost.configuration.api_url}/contacts/email.json?contact[email]=#{email}")
5
+ maropost_url('/contacts/email.json', "contact[email]=#{email}"))
6
6
  Maropost::Contact.new(JSON.parse response.body)
7
7
  rescue RestClient::ResourceNotFound
8
8
  nil
@@ -15,11 +15,12 @@ module Maropost
15
15
  else
16
16
  create(contact)
17
17
  end
18
+ update_do_not_mail_list(contact)
18
19
  end
19
20
 
20
21
  def self.create(contact)
21
22
  response = request(:post,
22
- "#{Maropost.configuration.api_url}/contacts.json",
23
+ maropost_url('/contacts.json'),
23
24
  create_or_update_payload(contact))
24
25
  Maropost::Contact.new(JSON.parse response.body)
25
26
  rescue RestClient::UnprocessableEntity, RestClient::BadRequest => e
@@ -29,7 +30,7 @@ module Maropost
29
30
 
30
31
  def self.update(contact)
31
32
  response = request(:put,
32
- "#{Maropost.configuration.api_url}/contacts/#{contact.id}.json",
33
+ maropost_url("/contacts/#{contact.id}.json"),
33
34
  create_or_update_payload(contact))
34
35
  Maropost::Contact.new(JSON.parse response.body)
35
36
  rescue RestClient::UnprocessableEntity, RestClient::BadRequest => e
@@ -39,6 +40,10 @@ module Maropost
39
40
 
40
41
  private
41
42
 
43
+ def self.maropost_url(path, query = nil)
44
+ URI.join(Maropost.configuration.api_url, path).tap { |u| query && u.query = query }.to_s
45
+ end
46
+
42
47
  def self.request(method, url, payload = {})
43
48
  RestClient::Request.logged_request(
44
49
  method: method,
@@ -52,26 +57,36 @@ module Maropost
52
57
  end
53
58
 
54
59
  def self.create_or_update_payload(contact)
55
- { contact: { email: contact.email,
56
- phone: contact.phone_number,
57
- custom_field: {
58
- ama_rewards: contact.ama_rewards,
59
- ama_membership: contact.ama_membership,
60
- ama_insurance: contact.ama_insurance,
61
- ama_travel: contact.ama_travel,
62
- ama_new_member_series: contact.ama_new_member_series,
63
- ama_fleet_safety: contact.ama_fleet_safety,
64
- ovrr_personal: contact.ovrr_personal,
65
- ovrr_business: contact.ovrr_business,
66
- ovrr_associate: contact.ovrr_associate,
67
- ama_vr_reminder: contact.ama_vr_reminder,
68
- ama_vr_reminder_email: contact.ama_vr_reminder_email,
69
- ama_vr_reminder_sms: contact.ama_vr_reminder_sms,
70
- ama_vr_reminder_autocall: contact.ama_vr_reminder_autocall,
71
- cell_phone_number: contact.cell_phone_number
72
- }
73
- }
60
+ {
61
+ contact:
62
+ { email: contact.email,
63
+ phone: contact.phone_number,
64
+ custom_field: {
65
+ ama_rewards: contact.ama_rewards,
66
+ ama_membership: contact.ama_membership,
67
+ ama_insurance: contact.ama_insurance,
68
+ ama_travel: contact.ama_travel,
69
+ ama_new_member_series: contact.ama_new_member_series,
70
+ ama_fleet_safety: contact.ama_fleet_safety,
71
+ ovrr_personal: contact.ovrr_personal,
72
+ ovrr_business: contact.ovrr_business,
73
+ ovrr_associate: contact.ovrr_associate,
74
+ ama_vr_reminder: contact.ama_vr_reminder,
75
+ ama_vr_reminder_email: contact.ama_vr_reminder_email,
76
+ ama_vr_reminder_sms: contact.ama_vr_reminder_sms,
77
+ ama_vr_reminder_autocall: contact.ama_vr_reminder_autocall,
78
+ cell_phone_number: contact.cell_phone_number
79
+ }
80
+ }
74
81
  }
75
82
  end
83
+
84
+ def self.update_do_not_mail_list(contact)
85
+ if contact.subscribed_to_any_lists?
86
+ DoNotMailList.delete(contact)
87
+ else
88
+ DoNotMailList.create(contact)
89
+ end
90
+ end
76
91
  end
77
92
  end
@@ -28,5 +28,12 @@ module Maropost
28
28
 
29
29
  self.errors = []
30
30
  end
31
+
32
+ def subscribed_to_any_lists?
33
+ ama_rewards.eql?('1') || ama_membership.eql?('1') || ama_insurance.eql?('1') || ama_travel.eql?('1') ||
34
+ ama_new_member_series.eql?('1') || ama_fleet_safety.eql?('1') ||
35
+ ama_vr_reminder.eql?('1') || ama_vr_reminder_email.eql?('1') || ama_vr_reminder_sms.eql?('1') ||
36
+ ama_vr_reminder_autocall.eql?('1')
37
+ end
31
38
  end
32
39
  end
@@ -0,0 +1,53 @@
1
+ module Maropost
2
+ class DoNotMailList
3
+ def self.exists?(contact)
4
+ response = request(:get,
5
+ maropost_url('/global_unsubscribes/email.json', "contact[email]=#{contact.email}"))
6
+ JSON.parse response.body
7
+
8
+ response['id'] ? true : false
9
+ rescue RestClient::ResourceNotFound, RestClient::BadRequest => e
10
+ contact.errors << "Unexpected error occurred. Error: #{e.message}"
11
+ contact
12
+ end
13
+
14
+ def self.create(contact)
15
+ payload = { 'global_unsubscribe': { 'email': contact.email } }
16
+
17
+ request(:post,
18
+ maropost_url('/global_unsubscribes.json'),
19
+ payload)
20
+ contact
21
+ rescue RestClient::UnprocessableEntity, RestClient::BadRequest => e
22
+ contact.errors << "Unable to subscribe contact. Error: #{e.message}"
23
+ contact
24
+ end
25
+
26
+ def self.delete(contact)
27
+ request(:delete,
28
+ maropost_url('/global_unsubscribes/delete.json', "email=#{contact.email}"))
29
+ contact
30
+ rescue RestClient::UnprocessableEntity, RestClient::BadRequest => e
31
+ contact.errors << "Unable to unsubscribe contact. Error: #{e.message}"
32
+ contact
33
+ end
34
+
35
+ private
36
+
37
+ def self.maropost_url(path, query = nil)
38
+ URI.join(Maropost.configuration.api_url, path).tap { |u| query && u.query = query }.to_s
39
+ end
40
+
41
+ def self.request(method, url, payload = {})
42
+ RestClient::Request.logged_request(
43
+ method: method,
44
+ read_timeout: 10,
45
+ open_timeout: 5,
46
+ url: url,
47
+ payload: { auth_token: Maropost.configuration.auth_token }.merge(payload).to_json,
48
+ headers: { content_type: 'application/json', accept: 'application/json' },
49
+ verify_ssl: OpenSSL::SSL::VERIFY_PEER
50
+ )
51
+ end
52
+ end
53
+ end
@@ -1,3 +1,3 @@
1
1
  module Maropost
2
- VERSION = '0.2.2'
2
+ VERSION = '0.3.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maropost
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael van den Beuken
@@ -21,7 +21,7 @@ authors:
21
21
  autorequire:
22
22
  bindir: exe
23
23
  cert_chain: []
24
- date: 2017-10-04 00:00:00.000000000 Z
24
+ date: 2017-10-06 00:00:00.000000000 Z
25
25
  dependencies:
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rest-client
@@ -85,6 +85,7 @@ files:
85
85
  - lib/maropost/api.rb
86
86
  - lib/maropost/configuration.rb
87
87
  - lib/maropost/contact.rb
88
+ - lib/maropost/do_not_mail_list.rb
88
89
  - lib/maropost/version.rb
89
90
  - maropost.gemspec
90
91
  homepage: https://github.com/amaabca/maropost