snails 0.4.3 → 0.5.1

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
  SHA256:
3
- metadata.gz: 483517cd1b55bc5273ebb004bb9ef69a8cd6191de4be897c3d9f2c168ea13f4f
4
- data.tar.gz: 1730ce09810faafc5802833ab4f38fb103e8dae059b9cfb51b85335893fb7f09
3
+ metadata.gz: f4dea5ffee5850e36c01a2eb6ea7816a7f9939c80b434f19d141914826a309de
4
+ data.tar.gz: 8515507cbd3caab1aa59f7eaf9e2cb18e45540eb1598f400a05c137369984022
5
5
  SHA512:
6
- metadata.gz: e104410a7d4f8eea1370a583d13e4f23cefd043bc78f12027b5fea7063a87285c2cbeb89a1ab8c9a43e7a90d582b3b397528f1c483df2db60cf7dc654f66aba7
7
- data.tar.gz: dfe0ae0b0116f29c71907e35a38548d3d28af693e7dbf824b29f6e467ddab841d588c6f573b238c3e50d420bae649f81fca9efb73cb3709ac158eb121dae45e3
6
+ metadata.gz: 014b50854e970f640543d67c0fcb061f1b319db1d248057b03f197a05de2adcc9fa06b9612cd01a74a0c2a780096a436d628941eaddafb9c05ed743fd38f9dfe
7
+ data.tar.gz: 7c32661693186daae08b75b47b643350623bdf2741ef8d2537da4dcb6178668e672a024c7040cb5d2bb0f0ce06f957dd23931c12338ba27992545689a46777fa
data/lib/snails/app.rb CHANGED
@@ -222,7 +222,7 @@ module Snails
222
222
  value = options[:value] ? "value=\"#{options[:value]}\"" : (type == :password ? '' : "value=\"#{object.send(field)}\"")
223
223
 
224
224
  classes = object.errors[field].any? ? 'has-errors' : ''
225
- label + raw_input(index, type, id, name, value, options[:placeholder], classes, options[:required])
225
+ label + raw_input(index, type, id, name, value, placeholder: options[:placeholder], classes: classes, required: options[:required], disabled: options[:disabled])
226
226
  end
227
227
 
228
228
  def form_password(object, field, options = {})
@@ -243,7 +243,7 @@ module Snails
243
243
  value += checked ? " checked='true'" : ''
244
244
  end
245
245
 
246
- label + raw_input(index, type, id, name, options[:placeholder], value)
246
+ label + raw_input(index, type, id, name, value, options[:placeholder], classes: classes, disabled: options[:disabled])
247
247
  end
248
248
 
249
249
  def form_textarea(object, field, options = {})
@@ -316,9 +316,10 @@ module Snails
316
316
  return id, name, @tabindex, label
317
317
  end
318
318
 
319
- def raw_input(index, type, id, name, value, placeholder = '', classes = '', required = false)
319
+ def raw_input(index, type, id, name, value, placeholder: '', classes: '', required: false, disabled: false)
320
320
  req = required ? "required" : ''
321
- "<input #{req} class='#{classes}' tabindex='#{index}' type='#{type}' id='#{id}' name='#{name}' placeholder='#{placeholder}' #{value} />"
321
+ dis = disabled ? "disabled" : ''
322
+ "<input #{req} #{dis} class='#{classes}' tabindex='#{index}' type='#{type}' id='#{id}' name='#{name}' placeholder='#{placeholder}' #{value} />"
322
323
  end
323
324
 
324
325
  def get_model_name(obj)
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]
@@ -159,7 +187,7 @@ A <%= @exception.class %> occurred in <%= @url %>:
159
187
  resp, email = Tuktuk.deliver(email, debug: debug)
160
188
 
161
189
  if resp.is_a?(Tuktuk::Bounce)
162
- logger.info "[#{to}] Email bounced! [#{resp.code}] #{resp.message}"
190
+ puts "[#{to}] Email bounced! [#{resp.code}] #{resp.message}"
163
191
  end
164
192
 
165
193
  return resp, email
@@ -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.1'
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.1
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-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler