From d4d54ee7e3ec8b347d1a621ed61ff09fee030120 Mon Sep 17 00:00:00 2001 From: Andrew Thauer <6507159+andrewthauer@users.noreply.github.com> Date: Mon, 13 Jul 2020 15:19:22 -0400 Subject: [PATCH] refactor: rename rollbar token & minor cleanup (#1593) --- packages/backend/src/index.ts | 14 +-- packages/backend/src/plugins/rollbar.ts | 4 +- packages/backend/src/plugins/sentry.ts | 4 +- plugins/rollbar-backend/README.md | 2 +- plugins/rollbar-backend/src/service/router.ts | 109 ++++++------------ 5 files changed, 46 insertions(+), 87 deletions(-) diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index ea5142da19..d060791f98 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -67,22 +67,16 @@ async function main() { const authEnv = useHotMemoize(module, () => createEnv('auth')); const identityEnv = useHotMemoize(module, () => createEnv('identity')); const proxyEnv = useHotMemoize(module, () => createEnv('proxy')); + const rollbarEnv = useHotMemoize(module, () => createEnv('rollbar')); + const sentryEnv = useHotMemoize(module, () => createEnv('sentry')); const techdocsEnv = useHotMemoize(module, () => createEnv('techdocs')); const service = createServiceBuilder(module) .loadConfig(configReader) .addRouter('/catalog', await catalog(catalogEnv)) - .addRouter( - '/rollbar', - await rollbar( - getRootLogger().child({ type: 'plugin', plugin: 'rollbar' }), - ), - ) + .addRouter('/rollbar', await rollbar(rollbarEnv)) .addRouter('/scaffolder', await scaffolder(scaffolderEnv)) - .addRouter( - '/sentry', - await sentry(getRootLogger().child({ type: 'plugin', plugin: 'sentry' })), - ) + .addRouter('/sentry', await sentry(sentryEnv)) .addRouter('/auth', await auth(authEnv)) .addRouter('/identity', await identity(identityEnv)) .addRouter('/techdocs', await techdocs(techdocsEnv)) diff --git a/packages/backend/src/plugins/rollbar.ts b/packages/backend/src/plugins/rollbar.ts index 4c8ae9bfeb..8899251db2 100644 --- a/packages/backend/src/plugins/rollbar.ts +++ b/packages/backend/src/plugins/rollbar.ts @@ -15,8 +15,8 @@ */ import { createRouter } from '@backstage/plugin-rollbar-backend'; -import { Logger } from 'winston'; +import type { PluginEnvironment } from '../types'; -export default async function createPlugin(logger: Logger) { +export default async function createPlugin({ logger }: PluginEnvironment) { return await createRouter({ logger }); } diff --git a/packages/backend/src/plugins/sentry.ts b/packages/backend/src/plugins/sentry.ts index 89ee153faf..5cd0e55761 100644 --- a/packages/backend/src/plugins/sentry.ts +++ b/packages/backend/src/plugins/sentry.ts @@ -15,8 +15,8 @@ */ import { createRouter } from '@backstage/plugin-sentry-backend'; -import { Logger } from 'winston'; +import type { PluginEnvironment } from '../types'; -export default async function createPlugin(logger: Logger) { +export default async function createPlugin({ logger }: PluginEnvironment) { return await createRouter(logger); } diff --git a/plugins/rollbar-backend/README.md b/plugins/rollbar-backend/README.md index 39a3d93526..aacd0e9b6d 100644 --- a/plugins/rollbar-backend/README.md +++ b/plugins/rollbar-backend/README.md @@ -4,7 +4,7 @@ Simple plugin that proxies requests to the [Rollbar](https://rollbar.com) API. ## Setup -A `ROLLBAR_TOKEN` environment variable must be set to a read access account token. +A `ROLLBAR_ACCOUNT_TOKEN` environment variable must be set to a read access account token. ## Links diff --git a/plugins/rollbar-backend/src/service/router.ts b/plugins/rollbar-backend/src/service/router.ts index cee3297c2a..09491b0d00 100644 --- a/plugins/rollbar-backend/src/service/router.ts +++ b/plugins/rollbar-backend/src/service/router.ts @@ -30,7 +30,7 @@ export async function createRouter( ): Promise { const router = Router(); const logger = options.logger.child({ plugin: 'rollbar' }); - const accessToken = !options.rollbarApi ? getRollbarToken(logger) : ''; + const accessToken = !options.rollbarApi ? getRollbarAccountToken(logger) : ''; if (options.rollbarApi || accessToken) { const rollbarApi = @@ -38,63 +38,43 @@ export async function createRouter( router.use(express.json()); - const runAsync = createRunAsyncWrapper(logger); + router.get('/projects', async (_req, res) => { + const projects = await rollbarApi.getAllProjects(); + res.status(200).header('').send(projects); + }); - router.get( - '/projects', - runAsync(async (_req, res) => { - const projects = await rollbarApi.getAllProjects(); - res.status(200).header('').send(projects); - }), - ); + router.get('/projects/:id', async (req, res) => { + const { id } = req.params; + const projects = await rollbarApi.getProject(id); + res.status(200).send(projects); + }); - router.get( - '/projects/:id', - runAsync(async (req, res) => { - const { id } = req.params; - const projects = await rollbarApi.getProject(id); - res.status(200).send(projects); - }), - ); + router.get('/projects/:id/items', async (req, res) => { + const { id } = req.params; + const projects = await rollbarApi.getProjectItems(id); + res.status(200).send(projects); + }); - router.get( - '/projects/:id/items', - runAsync(async (req, res) => { - const { id } = req.params; - const projects = await rollbarApi.getProjectItems(id); - res.status(200).send(projects); - }), - ); + router.get('/projects/:id/top_active_items', async (req, res) => { + const { id } = req.params; + const query = req.query; + const items = await rollbarApi.getTopActiveItems(id, query as any); + res.status(200).send(items); + }); - router.get( - '/projects/:id/top_active_items', - runAsync(async (req, res) => { - const { id } = req.params; - const query = req.query; - const items = await rollbarApi.getTopActiveItems(id, query as any); - res.status(200).send(items); - }), - ); + router.get('/projects/:id/occurance_counts', async (req, res) => { + const { id } = req.params; + const query = req.query; + const items = await rollbarApi.getOccuranceCounts(id, query as any); + res.status(200).send(items); + }); - router.get( - '/projects/:id/occurance_counts', - runAsync(async (req, res) => { - const { id } = req.params; - const query = req.query; - const items = await rollbarApi.getOccuranceCounts(id, query as any); - res.status(200).send(items); - }), - ); - - router.get( - '/projects/:id/activated_item_counts', - runAsync(async (req, res) => { - const { id } = req.params; - const query = req.query; - const items = await rollbarApi.getActivatedCounts(id, query as any); - res.status(200).send(items); - }), - ); + router.get('/projects/:id/activated_item_counts', async (req, res) => { + const { id } = req.params; + const query = req.query; + const items = await rollbarApi.getActivatedCounts(id, query as any); + res.status(200).send(items); + }); } router.use(errorHandler()); @@ -102,32 +82,17 @@ export async function createRouter( return router; } -function createRunAsyncWrapper(logger: Logger) { - return function runAsyncWrapper(callback: express.RequestHandler) { - return function runAsync( - req: express.Request, - res: express.Response, - next: express.NextFunction, - ) { - return Promise.resolve(callback(req, res, next)).catch(error => { - logger.error(error); - next(error); - }); - }; - }; -} - -function getRollbarToken(logger: Logger) { - const token = process.env.ROLLBAR_TOKEN || ''; +function getRollbarAccountToken(logger: Logger) { + const token = process.env.ROLLBAR_ACCOUNT_TOKEN || ''; if (!token) { if (process.env.NODE_ENV !== 'development') { throw new Error( - 'Rollbar token must be provided in ROLLBAR_TOKEN environment variable to start the API.', + 'Rollbar token must be provided in ROLLBAR_ACCOUNT_TOKEN environment variable to start the API.', ); } logger.warn( - 'Failed to initialize rollbar backend, set ROLLBAR_TOKEN environment variable to start the API.', + 'Failed to initialize rollbar backend, set ROLLBAR_ACCOUNT_TOKEN environment variable to start the API.', ); }