mailkick 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +2 -0
- data/README.md +1 -1
- data/Rakefile +7 -0
- data/lib/mailkick/model.rb +2 -2
- data/lib/mailkick/processor.rb +3 -1
- data/lib/mailkick/version.rb +1 -1
- data/lib/mailkick.rb +12 -6
- data/mailkick.gemspec +3 -1
- data/test/mailkick_test.rb +11 -0
- data/test/test_helper.rb +22 -0
- metadata +40 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f87170752ac89e4482f6f10211bfcd3c0e12f3d
|
4
|
+
data.tar.gz: 48e44c8d786a2b75fe34bc1d9435932e4fb8b5ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98fd63a5858b70759ea11bbe64666cdea206744bd3ec6896f7ab8f1e2ea115c80e502923b03f6c171405b7be0cc23f6caed6e4f4c4cf9f3be55a964c02573aa5
|
7
|
+
data.tar.gz: f358a7f4df99d494f267d4c59c5982da6d1d20ee585663e72dae8bf64fd100d064ddbf77f6fbdc386a24cf52c91ad86a73c1d4801448b78333b2ece9c7e7b9dd
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -195,7 +195,7 @@ More great gems for email
|
|
195
195
|
Change how the user is determined
|
196
196
|
|
197
197
|
```ruby
|
198
|
-
Mailkick.user_method =
|
198
|
+
Mailkick.user_method = -> (email) { User.find_by(email: email) }
|
199
199
|
```
|
200
200
|
|
201
201
|
Use a different email field
|
data/Rakefile
CHANGED
data/lib/mailkick/model.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Mailkick
|
2
2
|
module Model
|
3
|
-
def mailkick_user(
|
4
|
-
email_key =
|
3
|
+
def mailkick_user(opts = {})
|
4
|
+
email_key = opts[:email_key] || :email
|
5
5
|
class_eval do
|
6
6
|
scope :opted_out, proc {|options = {}|
|
7
7
|
binds = [self.class.name, true]
|
data/lib/mailkick/processor.rb
CHANGED
@@ -20,7 +20,9 @@ module Mailkick
|
|
20
20
|
|
21
21
|
parts = message.parts.any? ? message.parts : [message]
|
22
22
|
parts.each do |part|
|
23
|
-
part.
|
23
|
+
if part.content_type.match(/text\/(html|plain)/)
|
24
|
+
part.body = part.body.decoded.gsub(/%7B%7BMAILKICK_TOKEN%7D%7D/, CGI.escape(token))
|
25
|
+
end
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
data/lib/mailkick/version.rb
CHANGED
data/lib/mailkick.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
1
|
+
require "set"
|
2
|
+
require "safely/core"
|
3
|
+
require "active_support"
|
4
|
+
require "mailkick/engine" if defined?(Rails)
|
3
5
|
require "mailkick/processor"
|
4
6
|
require "mailkick/mailer"
|
5
7
|
require "mailkick/model"
|
@@ -8,8 +10,7 @@ require "mailkick/service/mailchimp"
|
|
8
10
|
require "mailkick/service/mandrill"
|
9
11
|
require "mailkick/service/sendgrid"
|
10
12
|
require "mailkick/service/mailgun"
|
11
|
-
require "
|
12
|
-
require "safely/core"
|
13
|
+
require "mailkick/version"
|
13
14
|
|
14
15
|
module Mailkick
|
15
16
|
mattr_accessor :services, :user_method, :secret_token, :mount
|
@@ -89,5 +90,10 @@ module Mailkick
|
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
92
|
-
|
93
|
-
|
93
|
+
ActiveSupport.on_load(:action_mailer) do
|
94
|
+
prepend Mailkick::Mailer
|
95
|
+
end
|
96
|
+
|
97
|
+
ActiveSupport.on_load(:active_record) do
|
98
|
+
extend Mailkick::Model
|
99
|
+
end
|
data/mailkick.gemspec
CHANGED
@@ -18,8 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency "activesupport"
|
21
22
|
spec.add_dependency "safely_block", ">= 0.1.1"
|
22
23
|
|
23
|
-
spec.add_development_dependency "bundler"
|
24
|
+
spec.add_development_dependency "bundler"
|
24
25
|
spec.add_development_dependency "rake"
|
26
|
+
spec.add_development_dependency "minitest"
|
25
27
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require_relative "test_helper"
|
2
|
+
|
3
|
+
class MailkickTest < Minitest::Test
|
4
|
+
def test_unsubscribe_url
|
5
|
+
message = UserMailer.welcome.deliver_now
|
6
|
+
html_body = message.html_part.body.to_s
|
7
|
+
assert_equal "<p>BAhbCUkiFXRlc3RAZXhhbXBsZS5vcmcGOgZFVDAwMA%3D%3D--f435e91ba90e1732d3e999af1f2126dcc8182a5d</p>", html_body
|
8
|
+
text_body = message.text_part.body.to_s
|
9
|
+
assert_equal "Boom: BAhbCUkiFXRlc3RAZXhhbXBsZS5vcmcGOgZFVDAwMA%3D%3D--f435e91ba90e1732d3e999af1f2126dcc8182a5d", text_body
|
10
|
+
end
|
11
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
Bundler.require(:default)
|
3
|
+
require "minitest/autorun"
|
4
|
+
require "minitest/pride"
|
5
|
+
require "logger"
|
6
|
+
require "action_mailer"
|
7
|
+
|
8
|
+
Minitest::Test = Minitest::Unit::TestCase unless defined?(Minitest::Test)
|
9
|
+
ActionMailer::Base.delivery_method = :test
|
10
|
+
|
11
|
+
Mailkick.secret_token = "test123"
|
12
|
+
|
13
|
+
class UserMailer < ActionMailer::Base
|
14
|
+
default from: "from@example.com"
|
15
|
+
|
16
|
+
def welcome
|
17
|
+
mail to: "test@example.org", subject: "Hello" do |format|
|
18
|
+
format.html { render text: "<p>%7B%7BMAILKICK_TOKEN%7D%7D</p>" }
|
19
|
+
format.text { render text: "Boom: %7B%7BMAILKICK_TOKEN%7D%7D" }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailkick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: safely_block
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -28,16 +42,16 @@ dependencies:
|
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - "
|
45
|
+
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '0'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- - "
|
52
|
+
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
description: Email subscriptions made easy
|
56
84
|
email:
|
57
85
|
- andrew@chartkick.com
|
@@ -85,6 +113,8 @@ files:
|
|
85
113
|
- lib/mailkick/service/sendgrid.rb
|
86
114
|
- lib/mailkick/version.rb
|
87
115
|
- mailkick.gemspec
|
116
|
+
- test/mailkick_test.rb
|
117
|
+
- test/test_helper.rb
|
88
118
|
homepage: https://github.com/ankane/mailkick
|
89
119
|
licenses:
|
90
120
|
- MIT
|
@@ -105,8 +135,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
135
|
version: '0'
|
106
136
|
requirements: []
|
107
137
|
rubyforge_project:
|
108
|
-
rubygems_version: 2.
|
138
|
+
rubygems_version: 2.6.8
|
109
139
|
signing_key:
|
110
140
|
specification_version: 4
|
111
141
|
summary: Email subscriptions made easy
|
112
|
-
test_files:
|
142
|
+
test_files:
|
143
|
+
- test/mailkick_test.rb
|
144
|
+
- test/test_helper.rb
|