mailtrain 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dc264ff8c90cd947c9ac98ff7ad4ab16c19b71e4
4
+ data.tar.gz: 7c6309da53bd914afbfe281e41a7aa8a756c2ff8
5
+ SHA512:
6
+ metadata.gz: 00a8d8dd59ff875cef1c93c5a20232458d37239f5f1eefe566c52d2c3ba0ebade062c1a483b9237dd452c98ac8add84ef8fd8a0bed2d2e9c12cd6d52e6cf4602
7
+ data.tar.gz: 834475ca373bcbba1bab05f15a2d8d598f018d67b389a944931e882142c29ab8c0213a3a05a9c0188de94d6339878d5f2055b6973ea5b48768d4b471bf68f5eb
@@ -0,0 +1,15 @@
1
+ require "mailtrain/client"
2
+ require 'mailtrain/response'
3
+ require 'mailtrain/version'
4
+
5
+ module Mailtrain
6
+
7
+ class << self
8
+
9
+ def new(host_url, api_key = nil)
10
+ Mailtrain::Client.new(host_url, api_key)
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,78 @@
1
+ require 'faraday'
2
+ require 'json'
3
+ require 'mailtrain/response'
4
+
5
+ module Mailtrain
6
+ class Client
7
+
8
+ def initialize(host_url, access_token = nil)
9
+ @url = host_url
10
+ @access_token = access_token || ENV['MAILTRAIN_ACCESS_TOKEN']
11
+ @response = nil
12
+ end
13
+
14
+ # Add subscription
15
+ def subscribe(list_id, email, first_name = nil, last_name = nil, timezone = nil, force_subscribe = true)
16
+ response = connection.post "/api/subscribe/#{list_id}?access_token=#{@access_token}" do |req|
17
+ params = {email: email, first_name: first_name, last_name: last_name, timezone: timezone, force_subscribe: force_subscribe}.select { |_, value| !value.nil? }
18
+ req.body = params
19
+ end
20
+
21
+ @response = Response.new response.body
22
+ success?
23
+ end
24
+
25
+ def unsubscribe(list_id, email)
26
+ response = connection.post "/api/unsubscribe/#{list_id}?access_token=#{@access_token}", {list: list_id, email: email}
27
+
28
+ @response = Response.new response.body
29
+ success?
30
+ end
31
+
32
+ # Get list of blacklisted emails
33
+ def blacklist(start=0, limit=10000, search='')
34
+ response = connection.get "/api/blacklist/get?access_token=#{@access_token}&start=#{start}&limit=#{limit}&search=#{search}"
35
+
36
+ @response = Response.new response.body
37
+ data
38
+ end
39
+
40
+ # Add email to blacklist
41
+ def block(email)
42
+ response = connection.post "/api/blacklist/add?access_token=#{@access_token}", {email: email}
43
+
44
+ @response = Response.new response.body
45
+ success?
46
+ end
47
+
48
+ # delete email to blacklist
49
+ def unblock(email)
50
+ response = connection.post "/api/blacklist/delete?access_token=#{@access_token}", {email: email}
51
+
52
+ @response = Response.new response.body
53
+ success?
54
+ end
55
+
56
+ def success?
57
+ @response.respond_to?(:success?) ? @response.success? : false
58
+ end
59
+
60
+ def error
61
+ @response.error_message
62
+ end
63
+
64
+ def data
65
+ @response.data
66
+ end
67
+
68
+ protected
69
+
70
+ def connection
71
+ @connection ||= Faraday.new(:url => @url) do |faraday|
72
+ faraday.request :url_encoded
73
+ faraday.adapter :excon
74
+ end
75
+ end
76
+
77
+ end
78
+ end
@@ -0,0 +1,31 @@
1
+ require 'json'
2
+
3
+ module Mailtrain
4
+ class Response
5
+ def initialize(json)
6
+ @res = symbolize_keys(JSON.parse(json))
7
+ end
8
+
9
+ def success?
10
+ @res[:error].nil?
11
+ end
12
+
13
+ def error_message
14
+ @res[:error]
15
+ end
16
+
17
+ def data
18
+ @res[:data]
19
+ end
20
+
21
+ protected
22
+
23
+ def symbolize_keys(hash)
24
+ hash.inject({}) do |options, (key, value)|
25
+ options[(key.to_sym rescue key) || key] = value.is_a?(Hash) ? symbolize_keys(value) : value
26
+ options
27
+ end
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,3 @@
1
+ module Mailtrain
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mailtrain
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - benko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-09-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.9'
27
+ description: A simple MailTrain API
28
+ email: benko.b@shopperplus.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/mailtrain.rb
34
+ - lib/mailtrain/client.rb
35
+ - lib/mailtrain/response.rb
36
+ - lib/mailtrain/version.rb
37
+ homepage:
38
+ licenses: []
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 2.6.11
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: Sendy!
60
+ test_files: []