From e60ec644549a88b6bbc8c031de1e261a2c2bd315 Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Tue, 5 Jul 2022 10:48:09 +0200 Subject: [PATCH] Added WIP frontend comments app refs https://github.com/TryGhost/Team/issues/1664 --- core/server/services/comments/index.js | 12 +++++++++++ core/server/services/comments/service.js | 7 +++++++ core/server/web/comments/app.js | 26 ++++++++++++++++++++++++ core/server/web/comments/index.js | 1 + core/server/web/parent/frontend.js | 1 + 5 files changed, 47 insertions(+) create mode 100644 core/server/services/comments/index.js create mode 100644 core/server/services/comments/service.js create mode 100644 core/server/web/comments/app.js create mode 100644 core/server/web/comments/index.js diff --git a/core/server/services/comments/index.js b/core/server/services/comments/index.js new file mode 100644 index 0000000000..171c9a84c9 --- /dev/null +++ b/core/server/services/comments/index.js @@ -0,0 +1,12 @@ +const CommentsService = require('./service'); +const models = require('../models'); + +class CommentsServiceWrapper { + init() { + this.api = new CommentsService({ + models + }); + } +} + +module.exports = new CommentsServiceWrapper(); diff --git a/core/server/services/comments/service.js b/core/server/services/comments/service.js new file mode 100644 index 0000000000..efac779a2b --- /dev/null +++ b/core/server/services/comments/service.js @@ -0,0 +1,7 @@ +class CommentsService { + constructor({models}) { + this.models = models; + } +} + +module.exports = CommentsService; diff --git a/core/server/web/comments/app.js b/core/server/web/comments/app.js new file mode 100644 index 0000000000..1f750fc0d7 --- /dev/null +++ b/core/server/web/comments/app.js @@ -0,0 +1,26 @@ +const debug = require('@tryghost/debug')('comments'); +const errorHandler = require('@tryghost/mw-error-handler'); +const cors = require('cors'); +const express = require('../../../shared/express'); +const urlUtils = require('../../../shared/url-utils'); +const sentry = require('../../../shared/sentry'); + +module.exports = function setupCommentsApp() { + debug('Comments App setup start'); + const commentsApp = express('comments'); + + // Support CORS for requests from the frontend + const siteUrl = new URL(urlUtils.getSiteUrl()); + commentsApp.use(cors(siteUrl.origin)); + + // Routing + commentsApp.get('/api/comments'); + + // API error handling + commentsApp.use('/api', errorHandler.resourceNotFound); + commentsApp.use('/api', errorHandler.handleJSONResponse(sentry)); + + debug('Comments App setup end'); + + return commentsApp; +}; diff --git a/core/server/web/comments/index.js b/core/server/web/comments/index.js new file mode 100644 index 0000000000..a9612f49fb --- /dev/null +++ b/core/server/web/comments/index.js @@ -0,0 +1 @@ +module.exports = require('./app'); diff --git a/core/server/web/parent/frontend.js b/core/server/web/parent/frontend.js index f15bfde0af..75698cb1d1 100644 --- a/core/server/web/parent/frontend.js +++ b/core/server/web/parent/frontend.js @@ -18,6 +18,7 @@ module.exports = (routerConfig) => { frontendApp.use(shared.middleware.urlRedirects.frontendSSLRedirect); frontendApp.lazyUse('/members', require('../members')); + frontendApp.lazyUse('/comments', require('../comments')); frontendApp.use('/', require('../../../frontend/web')(routerConfig)); return frontendApp;