From c958a2a743ce105f4c6abd63deb4847e886d585a Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 3 Aug 2024 13:10:44 +0200 Subject: [PATCH] feat(api): add new v4 endpoints --- packages/api/src/index.ts | 4 ++++ packages/api/src/routes/v4/data.ts | 21 +++++++++++++++++++++ packages/api/src/routes/v4/report.ts | 1 + 3 files changed, 26 insertions(+) create mode 100644 packages/api/src/routes/v4/data.ts create mode 100644 packages/api/src/routes/v4/report.ts diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index 9483172..c94fcb4 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -7,6 +7,8 @@ import v2DataRoutes from 'routes/v2/data'; import v2ReportRoutes from 'routes/v2/report'; import v3DataRoutes from 'routes/v3/data'; import v3ReportRoutes from 'routes/v3/report'; +import v4DataRoutes from 'routes/v4/data'; +import v4ReportRoutes from 'routes/v4/report'; import environment from 'services/environment'; const server = fastify({ logger: true }); @@ -31,6 +33,8 @@ server.register(v2DataRoutes, { prefix: '/rest/v2' }); server.register(v2ReportRoutes, { prefix: '/rest/v2' }); server.register(v3DataRoutes, { prefix: '/rest/v3' }); server.register(v3ReportRoutes, { prefix: '/rest/v3' }); +server.register(v4DataRoutes, { prefix: '/rest/v4' }); +server.register(v4ReportRoutes, { prefix: '/rest/v4' }); server.listen({ host: '0.0.0.0', port: environment.port }, (error, address) => { if (error) { diff --git a/packages/api/src/routes/v4/data.ts b/packages/api/src/routes/v4/data.ts new file mode 100644 index 0000000..91cd752 --- /dev/null +++ b/packages/api/src/routes/v4/data.ts @@ -0,0 +1,21 @@ +import { FastifyInstance, RouteShorthandOptions } from 'fastify'; +import fetch from 'node-fetch'; + +export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => { + server.get('/data/', async (_request, reply) => { + try { + const databaseUrl = + 'https://raw.githubusercontent.com/wanhose/cookie-dialog-monster/main/database.json'; + const fetchOptions = { + headers: { 'Cache-Control': 'no-cache' }, + }; + const result = await (await fetch(databaseUrl, fetchOptions)).json(); + + reply.send({ data: result, success: true }); + } catch (error) { + reply.send({ success: false }); + } + }); + + done(); +}; diff --git a/packages/api/src/routes/v4/report.ts b/packages/api/src/routes/v4/report.ts new file mode 100644 index 0000000..32629d7 --- /dev/null +++ b/packages/api/src/routes/v4/report.ts @@ -0,0 +1 @@ +export { default as default } from '../v3/report';