From 648530009d233c65cdd903c674ccdf193b1ecce7 Mon Sep 17 00:00:00 2001 From: Naz Date: Thu, 5 May 2022 18:23:13 +0800 Subject: [PATCH] Added use of email templates for version mismatch notifications refs https://github.com/TryGhost/Toolbox/issues/292 - This change allows to reuse existing pattern present in Ghost on the version mismatch service layer, where we define the contents of the sent email through email templates instead of plain text. - Apart form templates, there's now failed request URL present in the data passed to the email template along with site title and site url --- .../api-version-compatibility/index.js | 9 ++++--- core/server/web/api/canary/content/app.js | 5 ++-- package.json | 4 +-- yarn.lock | 25 +++++++++++++------ 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/core/server/services/api-version-compatibility/index.js b/core/server/services/api-version-compatibility/index.js index 975c0d8231..299a51e63f 100644 --- a/core/server/services/api-version-compatibility/index.js +++ b/core/server/services/api-version-compatibility/index.js @@ -1,12 +1,13 @@ +const routeMatch = require('path-match')(); const APIVersionCompatibilityService = require('@tryghost/api-version-compatibility-service'); const VersionNotificationsDataService = require('@tryghost/version-notifications-data-service'); const versionMismatchHandler = require('@tryghost/mw-api-version-mismatch'); const ghostVersion = require('@tryghost/version'); const {GhostMailer} = require('../mail'); const settingsService = require('../../services/settings'); -const urlUtils = require('../../../shared/url-utils'); const models = require('../../models'); -const routeMatch = require('path-match')(); +const urlUtils = require('../../../shared/url-utils'); +const settingsCache = require('../../../shared/settings-cache'); let serviceInstance; @@ -24,7 +25,9 @@ const init = () => { }, fetchEmailsToNotify: versionNotificationsDataService.getNotificationEmails.bind(versionNotificationsDataService), fetchHandled: versionNotificationsDataService.fetchNotification.bind(versionNotificationsDataService), - saveHandled: versionNotificationsDataService.saveNotification.bind(versionNotificationsDataService) + saveHandled: versionNotificationsDataService.saveNotification.bind(versionNotificationsDataService), + getSiteUrl: () => urlUtils.urlFor('home', true), + getSiteTitle: () => settingsCache.get('title') }); }; diff --git a/core/server/web/api/canary/content/app.js b/core/server/web/api/canary/content/app.js index c710e3adb3..e468622953 100644 --- a/core/server/web/api/canary/content/app.js +++ b/core/server/web/api/canary/content/app.js @@ -6,8 +6,7 @@ const sentry = require('../../../../../shared/sentry'); const shared = require('../../../shared'); const routes = require('./routes'); const errorHandler = require('@tryghost/mw-error-handler'); -const versionMissmatchHandler = require('@tryghost/mw-api-version-mismatch'); -const {APIVersionCompatibilityServiceInstance} = require('../../../../services/api-version-compatibility'); +const apiVersionCompatibility = require('../../../../services/api-version-compatibility'); module.exports = function setupApiApp() { debug('Content API canary setup start'); @@ -29,7 +28,7 @@ module.exports = function setupApiApp() { // API error handling apiApp.use(errorHandler.resourceNotFound); - apiApp.use(versionMissmatchHandler(APIVersionCompatibilityServiceInstance)); + apiApp.use(apiVersionCompatibility.errorHandler); apiApp.use(errorHandler.handleJSONResponse(sentry)); debug('Content API canary setup end'); diff --git a/package.json b/package.json index 177824e3e2..a910dbe8cd 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "@sentry/node": "6.19.7", "@tryghost/adapter-manager": "0.2.29", "@tryghost/admin-api-schema": "2.14.0", - "@tryghost/api-version-compatibility-service": "0.1.1", + "@tryghost/api-version-compatibility-service": "0.2.0", "@tryghost/bookshelf-plugins": "0.4.1", "@tryghost/bootstrap-socket": "0.2.18", "@tryghost/color-utils": "0.1.13", @@ -93,7 +93,7 @@ "@tryghost/members-stripe-service": "0.10.3", "@tryghost/metrics": "1.0.11", "@tryghost/minifier": "0.1.13", - "@tryghost/mw-api-version-mismatch": "0.1.1", + "@tryghost/mw-api-version-mismatch": "0.1.3", "@tryghost/mw-error-handler": "0.2.4", "@tryghost/mw-session-from-token": "0.1.30", "@tryghost/nodemailer": "0.3.22", diff --git a/yarn.lock b/yarn.lock index 5bccc06eef..a0cab72d3f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1727,10 +1727,12 @@ "@tryghost/errors" "^1.0.0" lodash "^4.17.11" -"@tryghost/api-version-compatibility-service@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@tryghost/api-version-compatibility-service/-/api-version-compatibility-service-0.1.1.tgz#037ec31a745f59577d531abc0e67558fb83b287e" - integrity sha512-NLpSqTQIP4be8keF8L9vwXtoFeiwldH/WNyieMlqjBWVnAEHVpdGqQzEpltDVkIrkti1T6jT2NP0OIddM3GMYQ== +"@tryghost/api-version-compatibility-service@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@tryghost/api-version-compatibility-service/-/api-version-compatibility-service-0.2.0.tgz#439cb89ab09f5af276ed2649ba9924122a960ffd" + integrity sha512-/i0zqxNhZ2yao0EtUiAdgOeEggXJDs+yyGwBP2Kzmt8cpe3hB7FnMvSSPfJDVGowhCEXWsKn4/SWwLB2AY1W3g== + dependencies: + "@tryghost/email-content-generator" "^0.1.1" "@tryghost/bookshelf-collision@^0.1.22": version "0.1.22" @@ -1937,6 +1939,13 @@ dependencies: html-to-text "^5.1.1" +"@tryghost/email-content-generator@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@tryghost/email-content-generator/-/email-content-generator-0.1.1.tgz#95bf2eb1cc8e3eb1c3c0e5d7d4950de30aa30811" + integrity sha512-FWtIrmCs3EU+RptoTCElTSoxf/HiAfdVe15tGJIQNArJ7OVAA9dQgHGIgXIiK6cvUYoE6KqxGKX15TJsyXc2rQ== + dependencies: + html-to-text "^5.1.1" + "@tryghost/errors@1.2.10": version "1.2.10" resolved "https://registry.yarnpkg.com/@tryghost/errors/-/errors-1.2.10.tgz#b01b16744986005784ffd6916eec48a3e93976a9" @@ -2296,10 +2305,10 @@ dependencies: lodash "^4.17.11" -"@tryghost/mw-api-version-mismatch@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@tryghost/mw-api-version-mismatch/-/mw-api-version-mismatch-0.1.1.tgz#913c8941ebe274eac4c3ac872fbe6268534f0003" - integrity sha512-N1H3P/ua7MCJTQrhFd6RjBFL95pjB+y3Ih1ZyKToBzicU3RShLUsgVlBC7YNaJVGFG/RYCImzlm09QCV8qwgpg== +"@tryghost/mw-api-version-mismatch@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@tryghost/mw-api-version-mismatch/-/mw-api-version-mismatch-0.1.3.tgz#64304d65d6cf6c92cae270801be466c154932283" + integrity sha512-+J/s4KGnSGZ4LBQCzx2fvkkeyTqeOEJBcfUHOF5726r1L32wQnwJ+WVIS7KHNNPevGSXyZupG4jmyLZub9RGsw== "@tryghost/mw-error-handler@0.2.4": version "0.2.4"