vf-email-handler 0.2.3 → 0.3.0p
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/vf-email-handler +2 -0
- data/lib/initializers/postmark.rb +12 -0
- data/lib/interfaces/postmark.rb +67 -0
- data/lib/mailhandler.rb +12 -5
- data/lib/meta/version.rb +1 -1
- data/vf-email-handler.gemspec +2 -2
- metadata +13 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: def62a53dcd807d0bd59ebfc38445bebb3310f36
|
4
|
+
data.tar.gz: da00d80b997982af38bd62d96e8f90725e439112
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa7633b478c69869cb9bc15d99c4b2570ae2b45111224020eebf23ef6e7fc8d967df22e6fa12940b2552d3bb7a50b041089105cf77b29c3b98de3a66c115e9a7
|
7
|
+
data.tar.gz: fc4d59c63367f4c89801369dbd3682643c9e56634bf840a2200f50497e55fa852ea80d9a7465adf37e13154bf4e6b10243231ac0a075e759006dec854eaf51ab
|
data/bin/vf-email-handler
CHANGED
@@ -4,6 +4,7 @@ require 'meta/console_strings'
|
|
4
4
|
require 'meta/version'
|
5
5
|
require 'initializers/aws'
|
6
6
|
require 'initializers/logger'
|
7
|
+
require 'initializers/postmark'
|
7
8
|
require 'aws/ses'
|
8
9
|
require 'aws/sqs'
|
9
10
|
|
@@ -15,6 +16,7 @@ end
|
|
15
16
|
|
16
17
|
def start(settings)
|
17
18
|
MailHandler::AWS.setup settings
|
19
|
+
MailHandler::Postmark.setup settings
|
18
20
|
MailHandler::Logger.setup settings
|
19
21
|
MailHandler::Handler.begin_work_loop
|
20
22
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'postmark'
|
2
|
+
|
3
|
+
module MailHandler
|
4
|
+
# Containing everything related to SES comunication
|
5
|
+
module Postmark
|
6
|
+
# Setup and cofig the SES
|
7
|
+
class << self
|
8
|
+
attr_reader :mailer
|
9
|
+
|
10
|
+
def setup(config)
|
11
|
+
@mailer = Mailer.new config
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# Yields an interface to Postmark
|
16
|
+
class Mailer
|
17
|
+
def initialize(token)
|
18
|
+
@client = Postmark::ApiClient.new(token)
|
19
|
+
check_connection
|
20
|
+
end
|
21
|
+
|
22
|
+
def send_mail(email)
|
23
|
+
response = @client.deliver(
|
24
|
+
from: email.from,
|
25
|
+
to: email.to,
|
26
|
+
subject: email.subject,
|
27
|
+
html_body: email.html,
|
28
|
+
track_opens: true
|
29
|
+
)
|
30
|
+
log email, response
|
31
|
+
response
|
32
|
+
rescue StandardError => e
|
33
|
+
puts e.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def log(email, response)
|
39
|
+
return unless response
|
40
|
+
if response[:error_code] != 0
|
41
|
+
log_failure email, response
|
42
|
+
else
|
43
|
+
log_success email
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def log_failure(email, response)
|
48
|
+
Logger.error(
|
49
|
+
subject: email,
|
50
|
+
error_code: response[:error_code],
|
51
|
+
error_type: 'POSTMARK ERROR',
|
52
|
+
)
|
53
|
+
end
|
54
|
+
|
55
|
+
def log_success(email)
|
56
|
+
Logger.success(
|
57
|
+
subject: email,
|
58
|
+
message: 'successfully sent'
|
59
|
+
)
|
60
|
+
end
|
61
|
+
|
62
|
+
def check_connection
|
63
|
+
@client.server_info
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/mailhandler.rb
CHANGED
@@ -5,6 +5,7 @@ module MailHandler
|
|
5
5
|
# Base handler that does it all
|
6
6
|
class Handler
|
7
7
|
def self.begin_work_loop
|
8
|
+
force_gc
|
8
9
|
loop do
|
9
10
|
begin
|
10
11
|
new.do_work
|
@@ -14,7 +15,6 @@ module MailHandler
|
|
14
15
|
error_type: e.class.to_s,
|
15
16
|
trace: e.to_s
|
16
17
|
)
|
17
|
-
raise e
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -22,9 +22,9 @@ module MailHandler
|
|
22
22
|
def do_work
|
23
23
|
if messages.any?
|
24
24
|
messages.each do |message|
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
response = send(email_from(message))
|
26
|
+
next unless response
|
27
|
+
message.delete unless response[:error_code] != 0
|
28
28
|
end
|
29
29
|
else
|
30
30
|
sleep 1
|
@@ -44,11 +44,18 @@ module MailHandler
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def send(email)
|
47
|
-
|
47
|
+
Postmark.mailer.send_mail email
|
48
48
|
end
|
49
49
|
|
50
50
|
def wait_for(worker)
|
51
51
|
sleep(0.01) until worker.done?
|
52
52
|
end
|
53
|
+
|
54
|
+
def force_gc
|
55
|
+
Thread.new do
|
56
|
+
sleep 60
|
57
|
+
GC.start
|
58
|
+
end
|
59
|
+
end
|
53
60
|
end
|
54
61
|
end
|
data/lib/meta/version.rb
CHANGED
data/vf-email-handler.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.email = 'karl.litterfeldt@videofy.me'
|
13
13
|
s.license = 'MIT-LICENSE'
|
14
14
|
|
15
|
-
s.required_ruby_version = '>=2.
|
15
|
+
s.required_ruby_version = '>=2.2.0'
|
16
16
|
|
17
17
|
s.homepage = 'http://www.videofy.me'
|
18
18
|
|
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
s.executables = %w(vf-email-handler)
|
35
35
|
s.require_paths = ['lib']
|
36
36
|
|
37
|
-
s.add_dependency '
|
37
|
+
s.add_dependency 'postmark'
|
38
38
|
s.add_dependency 'aws-sdk', '~> 1.52.0'
|
39
39
|
|
40
40
|
s.add_development_dependency 'rspec', '~> 3'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vf-email-handler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0p
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Videofy
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-01-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: postmark
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '0
|
20
|
+
version: '0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '0
|
27
|
+
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: aws-sdk
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,6 +96,8 @@ files:
|
|
96
96
|
- bin/vf-email-handler
|
97
97
|
- lib/initializers/aws.rb
|
98
98
|
- lib/initializers/logger.rb
|
99
|
+
- lib/initializers/postmark.rb
|
100
|
+
- lib/interfaces/postmark.rb
|
99
101
|
- lib/interfaces/ses.rb
|
100
102
|
- lib/interfaces/sqs.rb
|
101
103
|
- lib/logger/logger.rb
|
@@ -122,15 +124,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
124
|
requirements:
|
123
125
|
- - ">="
|
124
126
|
- !ruby/object:Gem::Version
|
125
|
-
version: 2.
|
127
|
+
version: 2.2.0
|
126
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
129
|
requirements:
|
128
|
-
- - "
|
130
|
+
- - ">"
|
129
131
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
132
|
+
version: 1.3.1
|
131
133
|
requirements: []
|
132
134
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
135
|
+
rubygems_version: 2.4.5
|
134
136
|
signing_key:
|
135
137
|
specification_version: 4
|
136
138
|
summary: Integrates AWS SQS with SES letting youseemlessly queue emails for sending
|