vf-email-handler 0.2.3 → 0.3.0p
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/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
|