snails 0.4.3 → 0.5.0

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/snails/mailer.rb +34 -6
  3. data/snails.gemspec +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 483517cd1b55bc5273ebb004bb9ef69a8cd6191de4be897c3d9f2c168ea13f4f
4
- data.tar.gz: 1730ce09810faafc5802833ab4f38fb103e8dae059b9cfb51b85335893fb7f09
3
+ metadata.gz: 06b4aea8ffe430adc00748ea5f48ace43cd79fdf26cebb02da08b31ea88765ac
4
+ data.tar.gz: 9c856ce125123fe7d3423b362ea948dba6b41038490dea3b0158084ecf2d6b35
5
5
  SHA512:
6
- metadata.gz: e104410a7d4f8eea1370a583d13e4f23cefd043bc78f12027b5fea7063a87285c2cbeb89a1ab8c9a43e7a90d582b3b397528f1c483df2db60cf7dc654f66aba7
7
- data.tar.gz: dfe0ae0b0116f29c71907e35a38548d3d28af693e7dbf824b29f6e467ddab841d588c6f573b238c3e50d420bae649f81fca9efb73cb3709ac158eb121dae45e3
6
+ metadata.gz: ddff99a5c53edfb7a897b2c3015cbf883e1db67124df89d5c9cbe7058798cdc644f3954d575b6381ef017c458fa908df40bb14e825bb2ce174810f26844c4e24
7
+ data.tar.gz: ed3065454f356aaf82e325ae2e46bccafc8c93f39de9ccf99f7079b43bfab913231f4abfd355e437444e7d9d7268532e072c9b8447c782cd09f7079227fa83a1
data/lib/snails/mailer.rb CHANGED
@@ -16,14 +16,26 @@ module Snails
16
16
  # class SoftBounce < Bounce; end
17
17
  # class HardBounce < Bounce; end
18
18
 
19
+ def self.backends
20
+ {
21
+ 'test_backend' => 'Snails::Mailer::TestBackend',
22
+ 'smtp' => 'Snails::Mailer::TuktukBackend',
23
+ 'mailgun' => 'Snails::Mailer::MailgunBackend'
24
+ }
25
+ end
26
+
27
+ def self.init_backend(backend_name, opts = {})
28
+ backend_name = backend_name.presence || 'test_backend'
29
+ backends[backend_name].constantize.new(opts)
30
+ end
31
+
19
32
  def initialize(opts)
20
33
  @from_email = opts[:from] or raise ":from required"
21
34
  @base_subject = opts[:base_subject] || ''
22
35
  @views = opts[:views] || Snails.root.join('lib', 'views')
23
36
  @logfile = opts[:logfile] # || Snails.root.join('log', 'mailer.log')
24
37
 
25
- backend_name = opts[:backend_name] || 'TestBackend'
26
- @backend = self.class.backends[backend_name].new(opts[:backend_options])
38
+ @backend = self.class.init_backend(opts[:backend_name], opts[:backend_options])
27
39
  end
28
40
 
29
41
  def email(name, &block)
@@ -77,7 +89,7 @@ A <%= @exception.class %> occurred in <%= @url %>:
77
89
 
78
90
  private
79
91
 
80
- def render(view_path, layout_lath = nil)
92
+ def render(view_path, layout_path = nil)
81
93
  view = File.read(File.join(@views, "#{view_path}.erb"))
82
94
  if layout_path
83
95
  layout = File.read(File.join(@views, "#{layout_path}.erb"))
@@ -100,7 +112,7 @@ A <%= @exception.class %> occurred in <%= @url %>:
100
112
  @logger ||= @logfile ? Logger.new(@logfile) : Snails.logger
101
113
  end
102
114
 
103
- def send_email(from: @from_email, to:, subject:, body: nil, template: nil, layout: nil, html_body: nil, html_template: nil, html_layout: nil, message_id: nil, return_path: nil, list_unsubscribe: nil)
115
+ def send_email(from: @from_email, to:, subject:, body: nil, template: nil, layout: nil, html_body: nil, html_template: nil, html_layout: nil, message_id: nil, attachments: nil, return_path: nil, list_unsubscribe: nil)
104
116
  raise "No recipient given for mail: #{subject}!" if to.blank?
105
117
 
106
118
  message = {
@@ -120,6 +132,7 @@ A <%= @exception.class %> occurred in <%= @url %>:
120
132
  message[:html_body] = html_template ? render(html_template, html_layout) : html_body
121
133
  end
122
134
 
135
+ message[:attachments] = attachments if attachments
123
136
  message[:message_id] = message_id if message_id
124
137
  message[:return_path] = return_path if return_path
125
138
  message[:list_unsubscribe] = list_unsubscribe if list_unsubscribe
@@ -140,10 +153,25 @@ A <%= @exception.class %> occurred in <%= @url %>:
140
153
  end
141
154
  end
142
155
 
143
- class Tuktuk < Backend
156
+ class TestBackend < Backend
157
+ def initialize(opts = {})
158
+ end
159
+
160
+ def deliver(email, options = {})
161
+ puts "Deliverying single: #{email[:to]}"
162
+ end
163
+
164
+ def deliver_many(emails, options = {})
165
+ puts "Deliverying many: #{emails.count}"
166
+ end
167
+ end
168
+
169
+ class TuktukBackend < Backend
144
170
  def initialize(config = {})
145
171
  @debug = config[:debug]
146
172
 
173
+ puts "-- #{config.inspect}"
174
+
147
175
  if key = config.dig(:dkim, :private_key) and File.exist?(key)
148
176
  config[:dkim][:private_key] = IO.read(key)
149
177
  elsif config[:dkim]
@@ -170,7 +198,7 @@ A <%= @exception.class %> occurred in <%= @url %>:
170
198
  end
171
199
  end
172
200
 
173
- class Mailgun < Backend
201
+ class MailgunBackend < Backend
174
202
 
175
203
  def initialize(api_key:, domain_name:)
176
204
  @key = api_key
data/snails.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "snails"
6
- s.version = '0.4.3'
6
+ s.version = '0.5.0'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ['Tomás Pollak']
9
9
  s.email = ['tomas@forkhq.com']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomás Pollak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-13 00:00:00.000000000 Z
11
+ date: 2022-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler