From 331c3fda699550a5cf7ff9ffeee82a8d65c216d2 Mon Sep 17 00:00:00 2001 From: wanhose Date: Tue, 5 Jul 2022 17:47:24 +0200 Subject: [PATCH] feat(api): add new report route --- packages/api/src/index.ts | 2 ++ packages/api/src/routes/v2/report.ts | 40 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 packages/api/src/routes/v2/report.ts diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index c4c9720..eb4184f 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -4,6 +4,7 @@ import rateLimit from '@fastify/rate-limit'; import v1EntriesRoutes from 'routes/v1/entries'; import v1ReportRoutes from 'routes/v1/report'; import v2DataRoutes from 'routes/v2/data'; +import v2ReportRoutes from 'routes/v2/report'; import environment from 'services/environment'; const server = fastify({ logger: true }); @@ -21,6 +22,7 @@ server.register(rateLimit, { max: 1, timeWindow: 30000 }); server.register(v1EntriesRoutes, { prefix: '/rest/v1' }); server.register(v1ReportRoutes, { prefix: '/rest/v1' }); server.register(v2DataRoutes, { prefix: '/rest/v2' }); +server.register(v2ReportRoutes, { prefix: '/rest/v2' }); server.listen({ host: '0.0.0.0', port: environment.port }, (error, address) => { if (error) { diff --git a/packages/api/src/routes/v2/report.ts b/packages/api/src/routes/v2/report.ts new file mode 100644 index 0000000..56f3596 --- /dev/null +++ b/packages/api/src/routes/v2/report.ts @@ -0,0 +1,40 @@ +import { FastifyInstance, RouteShorthandOptions } from 'fastify'; +import { sendMail } from 'services/mailing'; + +type PostReportBody = { + url: string; + version: string; +}; + +export default (server: FastifyInstance, options: RouteShorthandOptions, done: () => void) => { + server.post<{ Body: PostReportBody }>( + '/report/', + { + schema: { + body: { + properties: { + url: { + type: 'string', + }, + version: { + type: 'string', + }, + }, + required: ['url', 'version'], + type: 'object', + }, + }, + }, + async (request, reply) => { + const { url, version } = request.body; + const html = `Site: ${url}
Version: ${version}`; + const subject = 'Cookie Dialog Monster Report'; + const to = 'hello@wanhose.dev'; + + sendMail({ html, to, subject }); + reply.send({ success: true }); + } + ); + + done(); +};