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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f88f2f3e91ad0c00491afd069ac02471b6535658
4
- data.tar.gz: a01816abb062d652c9c00297d89b82642fa0e096
3
+ metadata.gz: def62a53dcd807d0bd59ebfc38445bebb3310f36
4
+ data.tar.gz: da00d80b997982af38bd62d96e8f90725e439112
5
5
  SHA512:
6
- metadata.gz: ca128f9cc7f8245a7a5134be1d5be33eb5271c8a72edcfdb3b6b074a4c10bb1225e71a4054d856ee9d19b84f207db64388aaf0dd8819efc444a74f62cdccfbe2
7
- data.tar.gz: e7d0292a96f259399f91bcdc349e47a05a5dbce74823cddc2eaa30b9204c2eeea6888615e95db2013ab78b05736ddbb67c2be900ae99f6ba4168cb70816d0e37
6
+ metadata.gz: fa7633b478c69869cb9bc15d99c4b2570ae2b45111224020eebf23ef6e7fc8d967df22e6fa12940b2552d3bb7a50b041089105cf77b29c3b98de3a66c115e9a7
7
+ data.tar.gz: fc4d59c63367f4c89801369dbd3682643c9e56634bf840a2200f50497e55fa852ea80d9a7465adf37e13154bf4e6b10243231ac0a075e759006dec854eaf51ab
@@ -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,12 @@
1
+ module MailHandler
2
+ # Initializes SES and SQS interfaces
3
+ module AWS
4
+ class << self
5
+ def setup(config)
6
+ require 'interfaces/postmark'
7
+
8
+ Postmark.setup config[:postmark][:token]
9
+ end
10
+ end
11
+ end
12
+ 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
@@ -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
- if response = send(email_from(message))
26
- message.delete unless response.error?
27
- end
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
- SES.mailer.send_mail email
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
@@ -1,4 +1,4 @@
1
1
  # Current version of the handler
2
2
  module MailHandler
3
- VERSION = '0.2.3'
3
+ VERSION = '0.3.0p'
4
4
  end
@@ -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.1.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 'aws-ses', '~> 0.5'
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.2.3
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: 2014-09-05 00:00:00.000000000 Z
12
+ date: 2015-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: aws-ses
15
+ name: postmark
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '0.5'
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.5'
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.1.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: '0'
132
+ version: 1.3.1
131
133
  requirements: []
132
134
  rubyforge_project:
133
- rubygems_version: 2.2.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