brightbytes-sendgrid 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +4 -5
- data/lib/brightbytes/sendgrid/config.rb +7 -6
- data/lib/brightbytes/sendgrid/smtp_api_header.rb +4 -9
- data/lib/brightbytes/sendgrid/subst_pattern.rb +20 -0
- data/lib/brightbytes/sendgrid/unsubscribe.rb +6 -5
- data/lib/brightbytes/sendgrid/version.rb +1 -1
- data/lib/brightbytes/sendgrid.rb +1 -0
- data/spec/brightbytes/sendgrid_mailer_spec.rb +1 -1
- data/spec/brightbytes/standard_mailer_spec.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YmQzOGZiYmI2YWUyMmMzNzA0NzljZTg2YzJjYzBkZTA3NGMxZTBmYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDAxMDI0MjQ1Y2YxYzE5MDQ4YmFjNTJmYzY4MTY0MTEwMzlmYTdkMg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTU3ZDY0OWU0NzY2NDRkYTE5YjU5NTVmY2ZlNTNlN2IyYmIzNmNmMDk2M2Uy
|
10
|
+
NDQ2ZmJiNTMyMDcxZmZjZGNlYTFkNGNkZmJhZGU5Mzg4Mjk3ODcwOGE3ZTVl
|
11
|
+
MTg0MTA5ZDQxMTMyYmZkZDI1ZTQyYWEzODMxOGE1MWUyZjIxZTE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzdlOTc4MDFhN2U5M2M0YWZmMGQ4YWJjNDUzOWEwYTUyODI2YjAyZDc5MjFj
|
14
|
+
YzdiODIyNmI4ZTJjMmQwMDBhNGNkNDE0OGY1MTllYTg3YWE3NGMzNDU4NzQ0
|
15
|
+
YTdlYjM0MmFjZDg0ZjJjY2U1OTk3OTY1MzVlZjhkMWEyNjQwYzc=
|
data/README.md
CHANGED
@@ -94,11 +94,10 @@ So, to make this feature work, you have to:
|
|
94
94
|
|
95
95
|
3. Put {{unsubscribe_html}} or {{unsubscribe_text}} or {{unsubcribe_url}} placeholder somewhere in your email body. You can adjust how html and text version are built:
|
96
96
|
|
97
|
-
config.
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
# will produce "Go there to unsubscribe: url"
|
97
|
+
config.html_link "Click <a href="%s">here to unsubscribe</a>"
|
98
|
+
# will produce "Click <a href="URL">here to unsubscribe</a>"
|
99
|
+
config.text_link "Go there to unsubscribe: %s"
|
100
|
+
# will produce "Go there to unsubscribe: URL"
|
102
101
|
|
103
102
|
##Contributors
|
104
103
|
|
@@ -5,7 +5,7 @@ module Brightbytes
|
|
5
5
|
class Config
|
6
6
|
include Singleton
|
7
7
|
|
8
|
-
attr_accessor :dummy_recipient
|
8
|
+
attr_accessor :dummy_recipient, :subst_pattern
|
9
9
|
|
10
10
|
# Sendgrid default settings storage
|
11
11
|
|
@@ -17,13 +17,14 @@ module Brightbytes
|
|
17
17
|
|
18
18
|
# Unsubscribe default settings storage
|
19
19
|
|
20
|
-
class UnsubscribeConfig < Struct.new(:categories, :url, :
|
20
|
+
class UnsubscribeConfig < Struct.new(:categories, :url, :html_link, :text_link); end
|
21
21
|
|
22
22
|
def unsubscribe
|
23
23
|
@unsubscribe ||= UnsubscribeConfig.new(
|
24
|
-
[],
|
25
|
-
|
26
|
-
|
24
|
+
[],
|
25
|
+
nil,
|
26
|
+
'If you would like to unsubscribe and stop receiving these emails <a href="%s" rel="nofollow">click here</a>.',
|
27
|
+
'If you would like to unsubscribe and stop receiving these emails click here: %s'
|
27
28
|
)
|
28
29
|
end
|
29
30
|
|
@@ -31,7 +32,7 @@ module Brightbytes
|
|
31
32
|
unsubscribe.categories = categories.flatten.map(&:to_sym)
|
32
33
|
end
|
33
34
|
|
34
|
-
[:url, :
|
35
|
+
[:url, :html_link, :text_link].each do |meth|
|
35
36
|
class_eval <<-DEF
|
36
37
|
def unsubscribe_#{meth}(value)
|
37
38
|
unsubscribe.#{meth} = value
|
@@ -3,6 +3,7 @@ require 'json'
|
|
3
3
|
module Brightbytes
|
4
4
|
module Sendgrid
|
5
5
|
class SmtpApiHeader
|
6
|
+
include SubstPattern
|
6
7
|
|
7
8
|
DELEGATE_METHODS = [
|
8
9
|
:substitute,
|
@@ -43,9 +44,7 @@ module Brightbytes
|
|
43
44
|
:utm_term,
|
44
45
|
:utm_content
|
45
46
|
]
|
46
|
-
|
47
|
-
SUBST_PATTERN = '{{\1}}'
|
48
|
-
|
47
|
+
|
49
48
|
attr_reader :data
|
50
49
|
|
51
50
|
def initialize(default_data = nil)
|
@@ -122,15 +121,11 @@ module Brightbytes
|
|
122
121
|
end
|
123
122
|
|
124
123
|
private
|
125
|
-
|
126
|
-
def key_to_tag(key)
|
127
|
-
key.is_a?(Symbol) ? key.to_s.sub(/(.*)/, SUBST_PATTERN) : key.to_s
|
128
|
-
end
|
129
|
-
|
124
|
+
|
130
125
|
def init_array_key(key)
|
131
126
|
@data[key] = [] unless @data[key].instance_of?(Array)
|
132
127
|
end
|
133
|
-
|
128
|
+
|
134
129
|
end
|
135
130
|
end
|
136
131
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Brightbytes
|
2
|
+
module Sendgrid
|
3
|
+
module SubstPattern
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
DEFAULT_PATTERN = '{{\1}}'
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def key_to_tag(key)
|
11
|
+
key.is_a?(Symbol) ? key.to_s.sub(/(.*)/, subst_pattern) : key.to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
def subst_pattern
|
15
|
+
Brightbytes::Sendgrid.config.subst_pattern || DEFAULT_PATTERN
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -4,6 +4,7 @@
|
|
4
4
|
module Brightbytes
|
5
5
|
module Sendgrid
|
6
6
|
class Unsubscribe
|
7
|
+
include SubstPattern
|
7
8
|
|
8
9
|
class << self
|
9
10
|
|
@@ -23,11 +24,11 @@ module Brightbytes
|
|
23
24
|
def add_links
|
24
25
|
return unless feature_active?
|
25
26
|
if categories.present?
|
26
|
-
sendgrid.section :unsubscribe_html_section,
|
27
|
-
sendgrid.section :unsubscribe_text_section,
|
27
|
+
sendgrid.section :unsubscribe_html_section, unsubscribe.html_link % key_to_tag(:unsubscribe_url)
|
28
|
+
sendgrid.section :unsubscribe_text_section, unsubscribe.text_link % key_to_tag(:unsubscribe_url)
|
28
29
|
emails.each do |email|
|
29
|
-
sendgrid.add_substitute :unsubscribe_html,
|
30
|
-
sendgrid.add_substitute :unsubscribe_text,
|
30
|
+
sendgrid.add_substitute :unsubscribe_html, key_to_tag(:unsubscribe_html_section)
|
31
|
+
sendgrid.add_substitute :unsubscribe_text, key_to_tag(:unsubscribe_text_section)
|
31
32
|
sendgrid.add_substitute :unsubscribe_url, unsubscribe_url(email)
|
32
33
|
end
|
33
34
|
else
|
@@ -42,7 +43,7 @@ module Brightbytes
|
|
42
43
|
def unsubscribe
|
43
44
|
Brightbytes::Sendgrid.config.unsubscribe
|
44
45
|
end
|
45
|
-
|
46
|
+
|
46
47
|
def feature_active?
|
47
48
|
unsubscribe.categories.present? || unsubscribe.url.present?
|
48
49
|
end
|
data/lib/brightbytes/sendgrid.rb
CHANGED
@@ -62,7 +62,7 @@ describe SendgridMailer do
|
|
62
62
|
before(:each) { sendgrid_config_setup }
|
63
63
|
|
64
64
|
it 'unsubscribe html section should be set' do
|
65
|
-
header.should include('"{{unsubscribe_html_section}}": "If you would like to unsubscribe and stop receiving these emails <a href=\"{{unsubscribe_url}}\" rel=\"nofollow\">click here</a
|
65
|
+
header.should include('"{{unsubscribe_html_section}}": "If you would like to unsubscribe and stop receiving these emails <a href=\"{{unsubscribe_url}}\" rel=\"nofollow\">click here</a>."')
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'unsubscribe text section should be set' do
|
@@ -36,7 +36,7 @@ describe StandardMailer do
|
|
36
36
|
before(:each) { sendgrid_config_setup }
|
37
37
|
|
38
38
|
it 'unsubscribe html section should be set' do
|
39
|
-
header.should include('"{{unsubscribe_html_section}}": "If you would like to unsubscribe and stop receiving these emails <a href=\"{{unsubscribe_url}}\" rel=\"nofollow\">click here</a
|
39
|
+
header.should include('"{{unsubscribe_html_section}}": "If you would like to unsubscribe and stop receiving these emails <a href=\"{{unsubscribe_url}}\" rel=\"nofollow\">click here</a>."')
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'unsubscribe text section should be set' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brightbytes-sendgrid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brightbytes Inc.
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-03-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- lib/brightbytes/sendgrid.rb
|
102
102
|
- lib/brightbytes/sendgrid/config.rb
|
103
103
|
- lib/brightbytes/sendgrid/smtp_api_header.rb
|
104
|
+
- lib/brightbytes/sendgrid/subst_pattern.rb
|
104
105
|
- lib/brightbytes/sendgrid/unsubscribe.rb
|
105
106
|
- lib/brightbytes/sendgrid/version.rb
|
106
107
|
- spec/brightbytes/sendgrid/smtp_api_header_spec.rb
|