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 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