mail-notify 1.2.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +21 -0
- data/.github/workflows/publish.yml +1 -1
- data/.github/workflows/rails-integration-tests.yml +231 -0
- data/.gitignore +5 -1
- data/CHANGELOG.md +15 -1
- data/Dockerfile +68 -0
- data/README.md +2 -2
- data/Rakefile +1 -6
- data/{lib/mail/notify → app/views}/layouts/govuk_notify_layout.html.erb +23 -25
- data/bin/console +4 -9
- data/bin/rspec +27 -0
- data/bin/standardrb +27 -0
- data/lib/mail/notify/delivery_method.rb +16 -26
- data/lib/mail/notify/engine.rb +13 -0
- data/lib/mail/notify/mail_notify_preview_interceptor.rb +51 -0
- data/lib/mail/notify/mail_notify_previews_controller.rb +6 -0
- data/lib/mail/notify/mailer.rb +85 -7
- data/lib/mail/notify/message.rb +1 -3
- data/lib/mail/notify/version.rb +1 -1
- data/lib/mail/notify.rb +3 -3
- data/mail-notify.gemspec +14 -13
- data/renovate.json +3 -1
- metadata +64 -46
- data/.coveralls.yml +0 -0
- data/.github/workflows/build.yml +0 -27
- data/lib/mail/notify/mailers_controller.rb +0 -40
- data/lib/mail/notify/personalisation.rb +0 -30
- data/lib/mail/notify/railtie.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c412b0f242555ce3f351f10a14e854cdf32cb66198e3e3c269bef95f24f99e3c
|
4
|
+
data.tar.gz: 91c8452c20b65db1cb90f59b3158e70064890e58dfb2261545373f9489dea4c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d37cc3ef9b1f522b9f0b08d691e422b587bb5dc5d9392d1464fe7ba851607df1578d2234c02cde82f067c30e921710b208a8de126a516220ddb4046811fe125
|
7
|
+
data.tar.gz: feee1c413377caf9b55aec343f60c0b5090d2c354755c6868258f7aa4979a8be028c5da555c6432611982cb0bc33499e2a58439b0ece3ca170f3cdbad739a489
|
@@ -0,0 +1,21 @@
|
|
1
|
+
name: CI
|
2
|
+
on: [push, pull_request]
|
3
|
+
jobs:
|
4
|
+
lint-and-test:
|
5
|
+
name: Linting, specs and coverage
|
6
|
+
runs-on: ubuntu-latest
|
7
|
+
steps:
|
8
|
+
- name: Checkout code
|
9
|
+
uses: actions/checkout@v4
|
10
|
+
- name: Set up Ruby
|
11
|
+
uses: ruby/setup-ruby@v1
|
12
|
+
with:
|
13
|
+
bundler-cache: true
|
14
|
+
- name: Run linting
|
15
|
+
run: bin/standardrb
|
16
|
+
- name: Run specs
|
17
|
+
run: bin/rspec
|
18
|
+
- name: Run coverage report
|
19
|
+
uses: coverallsapp/github-action@v2
|
20
|
+
with:
|
21
|
+
fail-on-error: false
|
@@ -0,0 +1,231 @@
|
|
1
|
+
name: Rails integration tests
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
push:
|
6
|
+
branches:
|
7
|
+
- v2
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
build-rails-5:
|
11
|
+
name: Build Rails 5
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
steps:
|
14
|
+
-
|
15
|
+
name: Checkout
|
16
|
+
uses: actions/checkout@v4
|
17
|
+
-
|
18
|
+
name: Set up Docker Buildx
|
19
|
+
uses: docker/setup-buildx-action@v3
|
20
|
+
-
|
21
|
+
name: Build and cache
|
22
|
+
uses: docker/build-push-action@v5
|
23
|
+
with:
|
24
|
+
context: .
|
25
|
+
file: ./Dockerfile
|
26
|
+
build-args: |
|
27
|
+
RAILS_VERSION=5.2.8.1
|
28
|
+
MAIL_NOTIFY_BRANCH=${{ github.ref }}
|
29
|
+
push: false
|
30
|
+
tags: mail-notify-integration-rails-5:latest
|
31
|
+
outputs: type=docker, dest=/tmp/rails-5-image.tar
|
32
|
+
cache-from: type=gha
|
33
|
+
cache-to: type=gha,mode=min
|
34
|
+
- name: Upload artifact
|
35
|
+
uses: actions/upload-artifact@v4
|
36
|
+
with:
|
37
|
+
name: rails-5-image
|
38
|
+
path: /tmp/rails-5-image.tar
|
39
|
+
|
40
|
+
rails-5-previews:
|
41
|
+
name: Rails 5 mailer previews
|
42
|
+
runs-on: ubuntu-latest
|
43
|
+
needs: build-rails-5
|
44
|
+
steps:
|
45
|
+
-
|
46
|
+
name: Download image
|
47
|
+
uses: actions/download-artifact@v4
|
48
|
+
with:
|
49
|
+
name: rails-5-image
|
50
|
+
path: /tmp
|
51
|
+
-
|
52
|
+
name: Load image
|
53
|
+
run: docker load --input /tmp/rails-5-image.tar
|
54
|
+
-
|
55
|
+
name: Run integration tests
|
56
|
+
env:
|
57
|
+
NOTIFY_API_KEY: ${{ secrets.NOTIFY_API_KEY }}
|
58
|
+
run: |
|
59
|
+
docker run --rm -e "NOTIFY_API_KEY=$NOTIFY_API_KEY" \
|
60
|
+
mail-notify-integration-rails-5:latest bin/rails test:system
|
61
|
+
|
62
|
+
|
63
|
+
rails-5-sending:
|
64
|
+
name: Rails 5 sending
|
65
|
+
runs-on: ubuntu-latest
|
66
|
+
needs: build-rails-5
|
67
|
+
steps:
|
68
|
+
-
|
69
|
+
name: Download image
|
70
|
+
uses: actions/download-artifact@v4
|
71
|
+
with:
|
72
|
+
name: rails-5-image
|
73
|
+
path: /tmp
|
74
|
+
-
|
75
|
+
name: Load image
|
76
|
+
run: docker load --input /tmp/rails-5-image.tar
|
77
|
+
-
|
78
|
+
name: Run integration tests
|
79
|
+
env:
|
80
|
+
NOTIFY_API_KEY: ${{ secrets.NOTIFY_API_KEY }}
|
81
|
+
run: |
|
82
|
+
docker run --rm -e "NOTIFY_API_KEY=$NOTIFY_API_KEY" \
|
83
|
+
mail-notify-integration-rails-5:latest bin/rails test
|
84
|
+
|
85
|
+
build-rails-6:
|
86
|
+
name: Build Rails 6
|
87
|
+
runs-on: ubuntu-latest
|
88
|
+
steps:
|
89
|
+
-
|
90
|
+
name: Checkout
|
91
|
+
uses: actions/checkout@v4
|
92
|
+
-
|
93
|
+
name: Set up Docker Buildx
|
94
|
+
uses: docker/setup-buildx-action@v3
|
95
|
+
-
|
96
|
+
name: Build and cache
|
97
|
+
uses: docker/build-push-action@v5
|
98
|
+
with:
|
99
|
+
context: .
|
100
|
+
file: ./Dockerfile
|
101
|
+
build-args: |
|
102
|
+
RAILS_VERSION=6.1.7.6
|
103
|
+
MAIL_NOTIFY_BRANCH=${{ github.ref }}
|
104
|
+
push: false
|
105
|
+
tags: mail-notify-integration-rails-6:latest
|
106
|
+
outputs: type=docker, dest=/tmp/rails-6-image.tar
|
107
|
+
cache-from: type=gha
|
108
|
+
cache-to: type=gha,mode=min
|
109
|
+
- name: Upload artifact
|
110
|
+
uses: actions/upload-artifact@v4
|
111
|
+
with:
|
112
|
+
name: rails-6-image
|
113
|
+
path: /tmp/rails-6-image.tar
|
114
|
+
|
115
|
+
rails-6-previews:
|
116
|
+
name: Rails 6 mailer previews
|
117
|
+
runs-on: ubuntu-latest
|
118
|
+
needs: build-rails-6
|
119
|
+
steps:
|
120
|
+
-
|
121
|
+
name: Download image
|
122
|
+
uses: actions/download-artifact@v4
|
123
|
+
with:
|
124
|
+
name: rails-6-image
|
125
|
+
path: /tmp
|
126
|
+
-
|
127
|
+
name: Load image
|
128
|
+
run: docker load --input /tmp/rails-6-image.tar
|
129
|
+
-
|
130
|
+
name: Run integration tests
|
131
|
+
env:
|
132
|
+
NOTIFY_API_KEY: ${{ secrets.NOTIFY_API_KEY }}
|
133
|
+
run: |
|
134
|
+
docker run --rm -e "NOTIFY_API_KEY=$NOTIFY_API_KEY" \
|
135
|
+
mail-notify-integration-rails-6:latest bin/rails test:system
|
136
|
+
|
137
|
+
rails-6-sending:
|
138
|
+
name: Rails 6 sending
|
139
|
+
runs-on: ubuntu-latest
|
140
|
+
needs: build-rails-6
|
141
|
+
steps:
|
142
|
+
-
|
143
|
+
name: Download image
|
144
|
+
uses: actions/download-artifact@v4
|
145
|
+
with:
|
146
|
+
name: rails-6-image
|
147
|
+
path: /tmp
|
148
|
+
-
|
149
|
+
name: Load image
|
150
|
+
run: docker load --input /tmp/rails-6-image.tar
|
151
|
+
-
|
152
|
+
name: Run integration tests
|
153
|
+
env:
|
154
|
+
NOTIFY_API_KEY: ${{ secrets.NOTIFY_API_KEY }}
|
155
|
+
run: |
|
156
|
+
docker run --rm -e "NOTIFY_API_KEY=$NOTIFY_API_KEY" \
|
157
|
+
mail-notify-integration-rails-6:latest bin/rails test
|
158
|
+
|
159
|
+
build-rails-7:
|
160
|
+
name: Build Rails 7
|
161
|
+
runs-on: ubuntu-latest
|
162
|
+
steps:
|
163
|
+
-
|
164
|
+
name: Checkout
|
165
|
+
uses: actions/checkout@v4
|
166
|
+
-
|
167
|
+
name: Set up Docker Buildx
|
168
|
+
uses: docker/setup-buildx-action@v3
|
169
|
+
-
|
170
|
+
name: Build and cache
|
171
|
+
uses: docker/build-push-action@v5
|
172
|
+
with:
|
173
|
+
context: .
|
174
|
+
file: ./Dockerfile
|
175
|
+
build-args: |
|
176
|
+
RAILS_VERSION=7.1.3.2
|
177
|
+
MAIL_NOTIFY_BRANCH=${{ github.ref }}
|
178
|
+
push: false
|
179
|
+
tags: mail-notify-integration-rails-7:latest
|
180
|
+
outputs: type=docker, dest=/tmp/rails-7-image.tar
|
181
|
+
cache-from: type=gha
|
182
|
+
cache-to: type=gha,mode=min
|
183
|
+
- name: Upload artifact
|
184
|
+
uses: actions/upload-artifact@v4
|
185
|
+
with:
|
186
|
+
name: rails-7-image
|
187
|
+
path: /tmp/rails-7-image.tar
|
188
|
+
|
189
|
+
rails-7-previews:
|
190
|
+
name: Rails 7 mailer previews
|
191
|
+
runs-on: ubuntu-latest
|
192
|
+
needs: build-rails-7
|
193
|
+
steps:
|
194
|
+
-
|
195
|
+
name: Download image
|
196
|
+
uses: actions/download-artifact@v4
|
197
|
+
with:
|
198
|
+
name: rails-7-image
|
199
|
+
path: /tmp
|
200
|
+
-
|
201
|
+
name: Load image
|
202
|
+
run: docker load --input /tmp/rails-7-image.tar
|
203
|
+
-
|
204
|
+
name: Run integration tests
|
205
|
+
env:
|
206
|
+
NOTIFY_API_KEY: ${{ secrets.NOTIFY_API_KEY }}
|
207
|
+
run: |
|
208
|
+
docker run --rm -e "NOTIFY_API_KEY=$NOTIFY_API_KEY" \
|
209
|
+
mail-notify-integration-rails-7:latest bin/rails test:system
|
210
|
+
|
211
|
+
rails-7-sending:
|
212
|
+
name: Rails 7 sending
|
213
|
+
runs-on: ubuntu-latest
|
214
|
+
needs: build-rails-7
|
215
|
+
steps:
|
216
|
+
-
|
217
|
+
name: Download image
|
218
|
+
uses: actions/download-artifact@v4
|
219
|
+
with:
|
220
|
+
name: rails-7-image
|
221
|
+
path: /tmp
|
222
|
+
-
|
223
|
+
name: Load image
|
224
|
+
run: docker load --input /tmp/rails-7-image.tar
|
225
|
+
-
|
226
|
+
name: Run integration tests
|
227
|
+
env:
|
228
|
+
NOTIFY_API_KEY: ${{ secrets.NOTIFY_API_KEY }}
|
229
|
+
run: |
|
230
|
+
docker run --rm -e "NOTIFY_API_KEY=$NOTIFY_API_KEY" \
|
231
|
+
mail-notify-integration-rails-7:latest bin/rails test
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,17 @@ The format is based on [Keep a Changelog]
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [2.0.0] - 2024-04-01
|
10
|
+
|
11
|
+
- Version 2.0.0 rewrites most of the gem, without altering the API
|
12
|
+
- The gem no longer prepends code in ActionMailer
|
13
|
+
- Previews are now 100% supported in Rails, but will require a Notify API key
|
14
|
+
- The preview layout has been updated and uses the Tudor Crown
|
15
|
+
- This version fixes a bug that meant not all Rails preview functionality would
|
16
|
+
work
|
17
|
+
- This version fixes a bug that meant no Rails preview functionality would work
|
18
|
+
from version 7.1.0 onwards
|
19
|
+
|
9
20
|
## [1.2.0] - 2023-04-28
|
10
21
|
|
11
22
|
- Requiring Ruby 2.7.8
|
@@ -71,7 +82,10 @@ The format is based on [Keep a Changelog]
|
|
71
82
|
|
72
83
|
- Initial release
|
73
84
|
|
74
|
-
[unreleased]: https://github.com/
|
85
|
+
[unreleased]: https://github.com/dxw/mail-notify/compare/2.0.0...HEAD
|
86
|
+
[2.0.0]: https://github.com/dxw/mail-notify/compare/1.2.0...2.0.0
|
87
|
+
[1.2.0]: https://github.com/dxw/mail-notify/compare/1.1.0...1.2.0
|
88
|
+
[1.1.0]: https://github.com/dxw/mail-notify/compare/1.0.5...1.1.0
|
75
89
|
[1.0.5]: https://github.com/dxw/mail-notify/compare/1.0.4...1.0.5
|
76
90
|
[1.0.4]: https://github.com/dxw/mail-notify/compare/1.0.3...1.0.4
|
77
91
|
[1.0.3]: https://github.com/dxw/mail-notify/compare/1.0.2...1.0.3
|
data/Dockerfile
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# We want to support older Rubies
|
2
|
+
ARG RUBY_VERSION=2.7.8
|
3
|
+
FROM registry.docker.com/library/ruby:$RUBY_VERSION-slim as base
|
4
|
+
|
5
|
+
# Rails app lives here
|
6
|
+
WORKDIR /rails
|
7
|
+
|
8
|
+
# Build stage
|
9
|
+
FROM base as build
|
10
|
+
|
11
|
+
# Install packages needed to build gems and node modules
|
12
|
+
RUN apt-get update -qq && \
|
13
|
+
apt-get install --no-install-recommends -y build-essential curl git
|
14
|
+
|
15
|
+
# Install Nokigiri version that supports Ruby 2.7.8
|
16
|
+
RUN gem install nokogiri -v 1.15.6
|
17
|
+
|
18
|
+
# Install Rails
|
19
|
+
ARG RAILS_VERSION=7.1.3.2
|
20
|
+
RUN gem install rails -v ${RAILS_VERSION}
|
21
|
+
|
22
|
+
# create empty Rails application, we don't need ActiveRecord or JavaScript
|
23
|
+
RUN rails new mail-notify-integration --skip-active-record --skip-javascript
|
24
|
+
|
25
|
+
WORKDIR mail-notify-integration
|
26
|
+
|
27
|
+
# install the gems into the bundle
|
28
|
+
RUN bundle install
|
29
|
+
|
30
|
+
# remove gems that will not work in Rails 5.2.8.1
|
31
|
+
RUN if [ "${RAILS_VERSION}" = "5.2.8.1" ]; then bundle remove selenium-webdriver chromedriver-helper; fi
|
32
|
+
|
33
|
+
# Final stage for app image
|
34
|
+
FROM base
|
35
|
+
|
36
|
+
# Install packages needed for running the tests
|
37
|
+
RUN apt-get update -qq && \
|
38
|
+
apt-get install --no-install-recommends -y curl git && \
|
39
|
+
rm -rf /var/lib/apt/lists /var/cache/apt/archives
|
40
|
+
|
41
|
+
# Copy built artifacts: gems, application
|
42
|
+
COPY --from=build /usr/local/bundle /usr/local/bundle
|
43
|
+
COPY --from=build /rails /rails
|
44
|
+
|
45
|
+
WORKDIR /rails/mail-notify-integration
|
46
|
+
|
47
|
+
# add Mail Notify to the Gemfile
|
48
|
+
ARG MAIL_NOTIFY_BRANCH=v2
|
49
|
+
RUN echo "gem 'mail-notify', git: 'https://github.com/dxw/mail-notify', branch: '${MAIL_NOTIFY_BRANCH}'" >> Gemfile
|
50
|
+
|
51
|
+
# install the mail-notify gem, we do this here to keep the last container layer small to help caching
|
52
|
+
RUN bundle install
|
53
|
+
|
54
|
+
# Copy over intergration test files
|
55
|
+
COPY test/mailers/ test/mailers/
|
56
|
+
COPY test/system/ test/system/
|
57
|
+
COPY test/integration test/integration
|
58
|
+
COPY test/application_system_test_case.rb /test/application_system_test_case.rb
|
59
|
+
COPY test/app/mailers/ app/mailers/
|
60
|
+
COPY test/app/views/ app/views/
|
61
|
+
|
62
|
+
# Setup the test environment
|
63
|
+
RUN echo "Rails.application.config.action_mailer.show_previews = true" >> config/environments/test.rb
|
64
|
+
RUN echo "Rails.application.config.action_mailer.delivery_method = :notify" >>config/environments/test.rb
|
65
|
+
RUN echo "Rails.application.config.action_mailer.notify_settings = {api_key: ENV['NOTIFY_API_KEY']}" >> config/environments/test.rb
|
66
|
+
|
67
|
+
# Run the system tests
|
68
|
+
CMD ["./bin/rails", "test:system"]
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
[![Build
|
2
|
-
[![Coverage
|
1
|
+
[![Build status](https://github.com/dxw/mail-notify/actions/workflows/ci.yml/badge.svg)](https://github.com/dxw/mail-notify/actions/workflows/ci.yml)
|
2
|
+
[![Coverage status](https://coveralls.io/repos/github/dxw/mail-notify/badge.svg?branch=fix-coveralls)](https://coveralls.io/github/dxw/mail-notify?branch=fix-coveralls)
|
3
3
|
[![Gem Version](http://img.shields.io/gem/v/mail-notify.svg?style=flat-square)](https://rubygems.org/gems/mail-notify)
|
4
4
|
[![License](http://img.shields.io/:license-mit-blue.svg)](https://mit-license.org/)
|
5
5
|
|
data/Rakefile
CHANGED
@@ -1,12 +1,7 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require "bundler/gem_tasks"
|
4
2
|
require "rspec/core/rake_task"
|
5
3
|
require "standard/rake"
|
6
|
-
require "coveralls/rake/task"
|
7
|
-
|
8
|
-
Coveralls::RakeTask.new
|
9
4
|
|
10
5
|
RSpec::Core::RakeTask.new(:spec)
|
11
6
|
|
12
|
-
task default: %i[standard spec
|
7
|
+
task default: %i[standard spec]
|
@@ -1,14 +1,14 @@
|
|
1
|
-
|
2
|
-
<!DOCTYPE html
|
3
|
-
<html
|
1
|
+
<!-- Template sourced from https://github.com/alphagov/notifications-utils/blob/main/notifications_utils/jinja_templates/email_template.jinja2 -->
|
2
|
+
<!DOCTYPE html>
|
3
|
+
<html lang="en">
|
4
4
|
|
5
5
|
<head>
|
6
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
|
7
|
-
<meta content="telephone=no" name="format-detection"
|
8
|
-
<meta name="viewport" content="width=device-width"
|
9
|
-
<title>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
7
|
+
<meta content="telephone=no" name="format-detection"> <!-- need to add formatting for real phone numbers -->
|
8
|
+
<meta name="viewport" content="width=device-width">
|
9
|
+
<title>{{ subject }}</title>
|
10
10
|
|
11
|
-
<style
|
11
|
+
<style>
|
12
12
|
@media only screen and (min-device-width: 581px) {
|
13
13
|
.content {
|
14
14
|
width: 580px !important;
|
@@ -19,7 +19,7 @@
|
|
19
19
|
</style>
|
20
20
|
|
21
21
|
<!--[if gte mso 9]>
|
22
|
-
<style
|
22
|
+
<style>
|
23
23
|
li {
|
24
24
|
margin-left: 4px !important;
|
25
25
|
}
|
@@ -33,8 +33,7 @@
|
|
33
33
|
</head>
|
34
34
|
|
35
35
|
<body style="font-family: Helvetica, Arial, sans-serif;font-size: 16px;margin: 0;color:#0b0c0c;">
|
36
|
-
|
37
|
-
<span style="display: none;font-size: 1px;color: #fff; max-height: 0;"></span>
|
36
|
+
<span style="display: none;font-size: 1px;color: #fff; max-height: 0;" hidden>{{ preheader }}…</span>
|
38
37
|
<table role="presentation" width="100%" style="border-collapse: collapse;min-width: 100%;width: 100% !important;" cellpadding="0" cellspacing="0" border="0">
|
39
38
|
<tr>
|
40
39
|
<td width="100%" height="53" bgcolor="#0b0c0c">
|
@@ -51,20 +50,20 @@
|
|
51
50
|
<tr>
|
52
51
|
<td style="padding-left: 10px">
|
53
52
|
<img
|
54
|
-
src="https://static.notifications.service.gov.uk/images/
|
55
|
-
alt="
|
53
|
+
src="https://static.notifications.service.gov.uk/images/govuk-logotype-tudor-crown.png"
|
54
|
+
alt=""
|
56
55
|
height="32"
|
57
56
|
border="0"
|
58
|
-
style="Margin-top:
|
59
|
-
|
57
|
+
style="Margin-top: 2px;"
|
58
|
+
>
|
60
59
|
</td>
|
61
|
-
<td style="font-size: 28px; line-height: 1.315789474; Margin-top: 4px; padding-left:
|
60
|
+
<td style="font-size: 28px; line-height: 1.315789474; Margin-top: 4px; padding-left: 8px;">
|
62
61
|
<span style="
|
63
62
|
font-family: Helvetica, Arial, sans-serif;
|
64
63
|
font-weight: 700;
|
65
64
|
color: #ffffff;
|
66
65
|
text-decoration: none;
|
67
|
-
vertical-align:
|
66
|
+
vertical-align:middle;
|
68
67
|
display: inline-block;
|
69
68
|
">GOV.UK</span>
|
70
69
|
</td>
|
@@ -102,7 +101,7 @@
|
|
102
101
|
<![endif]-->
|
103
102
|
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse: collapse;">
|
104
103
|
<tr>
|
105
|
-
<td bgcolor="#
|
104
|
+
<td bgcolor="#1D70B8" width="100%" height="10"></td>
|
106
105
|
</tr>
|
107
106
|
</table>
|
108
107
|
<!--[if (gte mso 9)|(IE)]>
|
@@ -114,7 +113,6 @@
|
|
114
113
|
<td width="10" valign="middle" height="10"></td>
|
115
114
|
</tr>
|
116
115
|
</table>
|
117
|
-
|
118
116
|
<table
|
119
117
|
role="presentation"
|
120
118
|
class="content"
|
@@ -126,27 +124,27 @@
|
|
126
124
|
width="100%"
|
127
125
|
>
|
128
126
|
<tr>
|
129
|
-
<td height="30"><br
|
127
|
+
<td height="30"><br></td>
|
130
128
|
</tr>
|
131
129
|
<tr>
|
132
|
-
<td width="10" valign="middle"><br
|
130
|
+
<td width="10" valign="middle"><br></td>
|
133
131
|
<td style="font-family: Helvetica, Arial, sans-serif; font-size: 19px; line-height: 1.315789474; max-width: 560px;">
|
134
132
|
<!--[if (gte mso 9)|(IE)]>
|
135
133
|
<table role="presentation" width="560" align="center" cellpadding="0" cellspacing="0" border="0" style="border-collapse: collapse;width: 560px;">
|
136
134
|
<tr>
|
137
135
|
<td style="font-family: Helvetica, Arial, sans-serif; font-size: 19px; line-height: 1.315789474;">
|
138
|
-
|
139
|
-
|
136
|
+
<![endif]-->
|
137
|
+
<%= yield %>
|
140
138
|
<!--[if (gte mso 9)|(IE)]>
|
141
139
|
</td>
|
142
140
|
</tr>
|
143
141
|
</table>
|
144
142
|
<![endif]-->
|
145
143
|
</td>
|
146
|
-
<td width="10" valign="middle"><br
|
144
|
+
<td width="10" valign="middle"><br></td>
|
147
145
|
</tr>
|
148
146
|
<tr>
|
149
|
-
<td height="30"><br
|
147
|
+
<td height="30"><br></td>
|
150
148
|
</tr>
|
151
149
|
</table>
|
152
150
|
</body>
|
data/bin/console
CHANGED
@@ -2,14 +2,9 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require 'bundler/setup'
|
5
|
+
require 'action_mailer'
|
6
|
+
require 'action_controller'
|
5
7
|
require 'mail/notify'
|
8
|
+
require 'pry'
|
6
9
|
|
7
|
-
|
8
|
-
# with your gem easier. You can also use a different console, if you like.
|
9
|
-
|
10
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
-
# require "pry"
|
12
|
-
# Pry.start
|
13
|
-
|
14
|
-
require 'irb'
|
15
|
-
IRB.start(__FILE__)
|
10
|
+
Pry.start
|
data/bin/rspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rspec' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
|
12
|
+
|
13
|
+
bundle_binstub = File.expand_path("bundle", __dir__)
|
14
|
+
|
15
|
+
if File.file?(bundle_binstub)
|
16
|
+
if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
|
17
|
+
load(bundle_binstub)
|
18
|
+
else
|
19
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
20
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
require "rubygems"
|
25
|
+
require "bundler/setup"
|
26
|
+
|
27
|
+
load Gem.bin_path("rspec-core", "rspec")
|
data/bin/standardrb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'standardrb' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
|
12
|
+
|
13
|
+
bundle_binstub = File.expand_path("bundle", __dir__)
|
14
|
+
|
15
|
+
if File.file?(bundle_binstub)
|
16
|
+
if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
|
17
|
+
load(bundle_binstub)
|
18
|
+
else
|
19
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
20
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
require "rubygems"
|
25
|
+
require "bundler/setup"
|
26
|
+
|
27
|
+
load Gem.bin_path("standard", "standardrb")
|
@@ -6,20 +6,28 @@ module Mail
|
|
6
6
|
attr_accessor :settings, :response
|
7
7
|
|
8
8
|
def initialize(settings)
|
9
|
-
raise ArgumentError, "You must specify
|
9
|
+
raise ArgumentError, "You must specify a Notify API key" if settings[:api_key].blank?
|
10
10
|
|
11
11
|
@settings = settings
|
12
12
|
end
|
13
13
|
|
14
|
-
def deliver!(
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
def deliver!(message)
|
15
|
+
params = {
|
16
|
+
template_id: message.template_id,
|
17
|
+
email_address: message.to.first,
|
18
|
+
personalisation: message.personalisation,
|
19
|
+
email_reply_to_id: message.reply_to_id,
|
20
|
+
reference: message.reference
|
21
|
+
}
|
22
|
+
|
23
|
+
client.send_email(params.compact)
|
18
24
|
end
|
19
25
|
|
20
|
-
def preview(
|
21
|
-
|
22
|
-
|
26
|
+
def preview(message)
|
27
|
+
template_id = message.template_id
|
28
|
+
personalisation = message.personalisation
|
29
|
+
|
30
|
+
Rails.logger.info("Getting Notify preview for template id #{template_id}")
|
23
31
|
client.generate_template_preview(template_id, personalisation: personalisation)
|
24
32
|
end
|
25
33
|
|
@@ -28,24 +36,6 @@ module Mail
|
|
28
36
|
def client
|
29
37
|
@client ||= Notifications::Client.new(@settings[:api_key], @settings[:base_url])
|
30
38
|
end
|
31
|
-
|
32
|
-
def email_params
|
33
|
-
{
|
34
|
-
email_address: @mail.to.first,
|
35
|
-
template_id: @mail[:template_id].to_s,
|
36
|
-
personalisation: @personalisation.to_h,
|
37
|
-
email_reply_to_id: optional_param(:reply_to_id),
|
38
|
-
reference: optional_param(:reference)
|
39
|
-
}
|
40
|
-
end
|
41
|
-
|
42
|
-
def optional_param(name)
|
43
|
-
@mail[name].presence&.to_s
|
44
|
-
end
|
45
|
-
|
46
|
-
def send_email
|
47
|
-
@response = client.send_email(email_params.compact)
|
48
|
-
end
|
49
39
|
end
|
50
40
|
end
|
51
41
|
end
|