maropost 0.1.0 → 0.2.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 +4 -4
- data/.gitignore +1 -1
- data/.ruby-version +1 -0
- data/Gemfile +7 -0
- data/README.md +28 -1
- data/lib/maropost.rb +7 -5
- data/lib/maropost/api.rb +77 -0
- data/lib/maropost/configuration.rb +20 -0
- data/lib/maropost/contact.rb +31 -0
- data/lib/maropost/version.rb +1 -1
- data/maropost.gemspec +13 -10
- metadata +26 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f1d07946245385970b68fe9cd20e8549f05c1b5
|
4
|
+
data.tar.gz: 1091979701bc837560a1bb8bb23db1fb0372ffca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb95f1e698305bcd6ac2ea87cabb819b5b9387a1b28c3e7a27b28855cafbdc19ab0fbc50ccd9df0279738b833871eb24407a92b4354191060c6ef5f521b28c22
|
7
|
+
data.tar.gz: 77f5bd5ad8fd7f50a4b1d50ddb7c7832dd75cb49abc55c78cf97a74d012e15881db4c566ea0afa0d6a947121611136fa62382a3d85b7e59c4e30ade04cd73dba
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.4.0
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -22,7 +22,34 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
To find a contact in Maropost:
|
26
|
+
``` ruby
|
27
|
+
Maropost::Api.find('email@example.com')
|
28
|
+
```
|
29
|
+
|
30
|
+
To create or update a contact in Maropost:
|
31
|
+
```ruby
|
32
|
+
Maropost::Api.update_subscriptions(
|
33
|
+
Maropost::Contact.new(
|
34
|
+
{ email: email,
|
35
|
+
ama_rewards: ama_rewards,
|
36
|
+
ama_membership: ama_membership,
|
37
|
+
ama_insurance: ama_insurance,
|
38
|
+
ama_travel: ama_travel,
|
39
|
+
ama_new_member_series: ama_new_member_series,
|
40
|
+
ama_fleet_safety: ama_fleet_safety,
|
41
|
+
personal_vehicle_reminder: personal_vehicle_reminder,
|
42
|
+
business_vehicle_reminder: business_vehicle_reminder,
|
43
|
+
associate_vehicle_reminder: associate_vehicle_reminder,
|
44
|
+
ama_vr_reminder: ama_vr_reminder,
|
45
|
+
ama_vr_reminder_email: ama_vr_reminder_email,
|
46
|
+
ama_vr_reminder_sms: ama_vr_reminder_sms,
|
47
|
+
ama_vr_reminder_autocall: ama_vr_reminder_autocall,
|
48
|
+
cell_phone_number: cell_phone_number.present? ? "1#{cell_phone_number}" : '',
|
49
|
+
phone_number: phone_number }.stringify_keys
|
50
|
+
)
|
51
|
+
)
|
52
|
+
```
|
26
53
|
|
27
54
|
## Development
|
28
55
|
|
data/lib/maropost.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
require 'json'
|
2
|
+
require 'rest_client'
|
3
|
+
require 'rest_client/jogger'
|
4
|
+
require 'maropost/version'
|
5
|
+
require 'maropost/configuration'
|
6
|
+
require 'maropost/api'
|
7
|
+
require 'maropost/contact'
|
data/lib/maropost/api.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
module Maropost
|
2
|
+
class Api
|
3
|
+
def self.find(email)
|
4
|
+
response = request(:get,
|
5
|
+
"#{Maropost.configuration.api_url}/contacts/email.json?contact[email]=#{email}")
|
6
|
+
Maropost::Contact.new(JSON.parse response.body)
|
7
|
+
rescue RestClient::ResourceNotFound
|
8
|
+
nil
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.update_subscriptions(contact)
|
12
|
+
if existing_contact = find(contact.email)
|
13
|
+
contact.id = existing_contact.id
|
14
|
+
update(contact)
|
15
|
+
else
|
16
|
+
create(contact)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.create(contact)
|
21
|
+
response = request(:post,
|
22
|
+
"#{Maropost.configuration.api_url}/contacts.json",
|
23
|
+
create_or_update_payload(contact))
|
24
|
+
Maropost::Contact.new(JSON.parse response.body)
|
25
|
+
rescue RestClient::UnprocessableEntity, RestClient::BadRequest => e
|
26
|
+
contact.errors << 'Unable to create or update contact'
|
27
|
+
contact
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.update(contact)
|
31
|
+
response = request(:put,
|
32
|
+
"#{Maropost.configuration.api_url}/contacts/#{contact.id}.json",
|
33
|
+
create_or_update_payload(contact))
|
34
|
+
Maropost::Contact.new(JSON.parse response.body)
|
35
|
+
rescue RestClient::UnprocessableEntity, RestClient::BadRequest => e
|
36
|
+
contact.errors << 'Unable to update contact'
|
37
|
+
contact
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def self.request(method, url, payload = {})
|
43
|
+
RestClient::Request.logged_request(
|
44
|
+
method: method,
|
45
|
+
timeout: 10,
|
46
|
+
open_timeout: 10,
|
47
|
+
url: url,
|
48
|
+
payload: {auth_token: Maropost.configuration.auth_token}.merge(payload).to_json,
|
49
|
+
headers: { content_type: 'application/json', accept: 'application/json' },
|
50
|
+
verify_ssl: OpenSSL::SSL::VERIFY_PEER
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.create_or_update_payload(contact)
|
55
|
+
{ contact: { email: contact.email,
|
56
|
+
custom_field: {
|
57
|
+
ama_rewards: contact.ama_rewards,
|
58
|
+
ama_membership: contact.ama_membership,
|
59
|
+
ama_insurance: contact.ama_insurance,
|
60
|
+
ama_travel: contact.ama_travel,
|
61
|
+
ama_new_member_series: contact.ama_new_member_series,
|
62
|
+
ama_fleet_safety: contact.ama_fleet_safety,
|
63
|
+
personal_vehicle_reminder: contact.personal_vehicle_reminder,
|
64
|
+
business_vehicle_reminder: contact.business_vehicle_reminder,
|
65
|
+
associate_vehicle_reminder: contact.associate_vehicle_reminder,
|
66
|
+
ama_vr_reminder: contact.ama_vr_reminder,
|
67
|
+
ama_vr_reminder_email: contact.ama_vr_reminder_email,
|
68
|
+
ama_vr_reminder_sms: contact.ama_vr_reminder_sms,
|
69
|
+
ama_vr_reminder_autocall: contact.ama_vr_reminder_autocall,
|
70
|
+
cell_phone_number: contact.cell_phone_number,
|
71
|
+
phone: contact.phone_number
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Maropost
|
2
|
+
attr_accessor :configuration
|
3
|
+
|
4
|
+
def self.configuration
|
5
|
+
@configuration ||= Configuration.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.configure
|
9
|
+
yield(configuration)
|
10
|
+
end
|
11
|
+
|
12
|
+
class Configuration
|
13
|
+
attr_accessor :api_url, :auth_token
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
self.api_url = "http://example.com"
|
17
|
+
self.auth_token = "auth_token"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Maropost
|
2
|
+
class Contact
|
3
|
+
attr_accessor :id, :email,
|
4
|
+
:ama_rewards, :ama_membership, :ama_insurance, :ama_travel, :ama_new_member_series, :ama_fleet_safety,
|
5
|
+
:personal_vehicle_reminder, :business_vehicle_reminder, :associate_vehicle_reminder,
|
6
|
+
:ama_vr_reminder, :ama_vr_reminder_email, :ama_vr_reminder_sms, :ama_vr_reminder_autocall,
|
7
|
+
:phone_number, :cell_phone_number, :errors
|
8
|
+
|
9
|
+
def initialize(data)
|
10
|
+
self.id = data['id']
|
11
|
+
self.email = data['email']
|
12
|
+
self.ama_rewards = data['ama_rewards'] || '0'
|
13
|
+
self.ama_membership = data['ama_membership'] || '0'
|
14
|
+
self.ama_insurance = data['ama_insurance'] || '0'
|
15
|
+
self.ama_travel = data['ama_travel'] || '0'
|
16
|
+
self.ama_new_member_series = data['ama_new_member_series'] || '0'
|
17
|
+
self.ama_fleet_safety = data['ama_fleet_safety'] || '0'
|
18
|
+
self.personal_vehicle_reminder = data['personal_vehicle_reminder'] || ''
|
19
|
+
self.business_vehicle_reminder = data['business_vehicle_reminder'] || ''
|
20
|
+
self.associate_vehicle_reminder = data['associate_vehicle_reminder'] || ''
|
21
|
+
self.ama_vr_reminder = data['ama_vr_reminder'] || '0'
|
22
|
+
self.ama_vr_reminder_email = data['ama_vr_reminder_email'] || '0'
|
23
|
+
self.ama_vr_reminder_sms = data['ama_vr_reminder_sms'] || '0'
|
24
|
+
self.ama_vr_reminder_autocall = data['ama_vr_reminder_autocall'] || '0'
|
25
|
+
self.phone_number = data['phone'] || ''
|
26
|
+
self.cell_phone_number = data['cell_phone_number'] || ''
|
27
|
+
|
28
|
+
self.errors = []
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/maropost/version.rb
CHANGED
data/maropost.gemspec
CHANGED
@@ -4,21 +4,24 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'maropost/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'maropost'
|
8
8
|
spec.version = Maropost::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Michael van den Beuken', 'Ruben Estevez', 'Jordan Babe', 'Mathieu Gilbert', 'Ryan Jones', 'Darko Dosenovic', 'Jonathan Weyermann', 'Adam Melnyk', 'Kayt Campbell', 'Kathleen Robertson', 'Jesse Doyle', 'Sinead Errity', 'Serene Yew', 'Martin Echtner']
|
10
|
+
spec.email = ['michael.beuken@gmail.com', 'ruben.a.estevez@gmail.com', 'jorbabe@gmail.com', 'mathieu.gilbert@ama.ab.ca', 'ryan.michael.jones@gmail.com', 'darko.dosenovic@ama.ab.ca', 'jonathan.weyermann@ama.ab.ca', 'adam.melnyk@ama.ab.ca', 'kayt.campbell@ama.ab.ca', 'kathleen.robertson@ama.ab.ca', 'jdoyle@ualberta.ca', 'sinead.errity@ama.ab.ca', 'serene.yew@ama.ab.ca', 'martin.echtner@ama.ab.ca']
|
11
11
|
spec.summary = %q{Interact with the Maropost API}
|
12
12
|
spec.description = %q{Interact with the Maropost API}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
13
|
+
spec.homepage = 'https://github.com/amaabca/maropost'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
-
spec.
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
|
19
|
+
spec.bindir = 'exe'
|
18
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
-
spec.require_paths =
|
21
|
+
spec.require_paths = %w(lib spec)
|
22
|
+
|
23
|
+
spec.add_dependency 'rest-client'
|
24
|
+
spec.add_dependency 'rest-client-jogger'
|
20
25
|
|
21
|
-
spec.
|
22
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
26
|
+
spec.required_ruby_version = '>= 2.2'
|
24
27
|
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.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael van den Beuken
|
@@ -16,53 +16,41 @@ authors:
|
|
16
16
|
- Kathleen Robertson
|
17
17
|
- Jesse Doyle
|
18
18
|
- Sinead Errity
|
19
|
+
- Serene Yew
|
20
|
+
- Martin Echtner
|
19
21
|
autorequire:
|
20
22
|
bindir: exe
|
21
23
|
cert_chain: []
|
22
|
-
date:
|
24
|
+
date: 2017-09-26 00:00:00.000000000 Z
|
23
25
|
dependencies:
|
24
26
|
- !ruby/object:Gem::Dependency
|
25
|
-
name:
|
27
|
+
name: rest-client
|
26
28
|
requirement: !ruby/object:Gem::Requirement
|
27
29
|
requirements:
|
28
|
-
- - "
|
30
|
+
- - ">="
|
29
31
|
- !ruby/object:Gem::Version
|
30
|
-
version: '
|
31
|
-
type: :
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
32
34
|
prerelease: false
|
33
35
|
version_requirements: !ruby/object:Gem::Requirement
|
34
36
|
requirements:
|
35
|
-
- - "
|
37
|
+
- - ">="
|
36
38
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
39
|
+
version: '0'
|
38
40
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
41
|
+
name: rest-client-jogger
|
40
42
|
requirement: !ruby/object:Gem::Requirement
|
41
43
|
requirements:
|
42
|
-
- - "
|
44
|
+
- - ">="
|
43
45
|
- !ruby/object:Gem::Version
|
44
|
-
version: '
|
45
|
-
type: :
|
46
|
+
version: '0'
|
47
|
+
type: :runtime
|
46
48
|
prerelease: false
|
47
49
|
version_requirements: !ruby/object:Gem::Requirement
|
48
50
|
requirements:
|
49
|
-
- - "
|
51
|
+
- - ">="
|
50
52
|
- !ruby/object:Gem::Version
|
51
|
-
version: '
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: rspec
|
54
|
-
requirement: !ruby/object:Gem::Requirement
|
55
|
-
requirements:
|
56
|
-
- - "~>"
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
version: '3.0'
|
59
|
-
type: :development
|
60
|
-
prerelease: false
|
61
|
-
version_requirements: !ruby/object:Gem::Requirement
|
62
|
-
requirements:
|
63
|
-
- - "~>"
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '3.0'
|
53
|
+
version: '0'
|
66
54
|
description: Interact with the Maropost API
|
67
55
|
email:
|
68
56
|
- michael.beuken@gmail.com
|
@@ -75,14 +63,17 @@ email:
|
|
75
63
|
- adam.melnyk@ama.ab.ca
|
76
64
|
- kayt.campbell@ama.ab.ca
|
77
65
|
- kathleen.robertson@ama.ab.ca
|
78
|
-
-
|
66
|
+
- jdoyle@ualberta.ca
|
79
67
|
- sinead.errity@ama.ab.ca
|
68
|
+
- serene.yew@ama.ab.ca
|
69
|
+
- martin.echtner@ama.ab.ca
|
80
70
|
executables: []
|
81
71
|
extensions: []
|
82
72
|
extra_rdoc_files: []
|
83
73
|
files:
|
84
74
|
- ".gitignore"
|
85
75
|
- ".rspec"
|
76
|
+
- ".ruby-version"
|
86
77
|
- ".travis.yml"
|
87
78
|
- Gemfile
|
88
79
|
- LICENSE.txt
|
@@ -91,6 +82,9 @@ files:
|
|
91
82
|
- bin/console
|
92
83
|
- bin/setup
|
93
84
|
- lib/maropost.rb
|
85
|
+
- lib/maropost/api.rb
|
86
|
+
- lib/maropost/configuration.rb
|
87
|
+
- lib/maropost/contact.rb
|
94
88
|
- lib/maropost/version.rb
|
95
89
|
- maropost.gemspec
|
96
90
|
homepage: https://github.com/amaabca/maropost
|
@@ -101,11 +95,12 @@ post_install_message:
|
|
101
95
|
rdoc_options: []
|
102
96
|
require_paths:
|
103
97
|
- lib
|
98
|
+
- spec
|
104
99
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
100
|
requirements:
|
106
101
|
- - ">="
|
107
102
|
- !ruby/object:Gem::Version
|
108
|
-
version: '
|
103
|
+
version: '2.2'
|
109
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
105
|
requirements:
|
111
106
|
- - ">="
|
@@ -113,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
108
|
version: '0'
|
114
109
|
requirements: []
|
115
110
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.
|
111
|
+
rubygems_version: 2.6.8
|
117
112
|
signing_key:
|
118
113
|
specification_version: 4
|
119
114
|
summary: Interact with the Maropost API
|