feat: add rollbar links

This commit is contained in:
Andrew Thauer
2020-08-12 07:10:44 -04:00
parent 2577c730e7
commit aedcad72a5
15 changed files with 207 additions and 38 deletions
@@ -15,6 +15,7 @@
*/
import { getVoidLogger } from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import express from 'express';
import request from 'supertest';
import { RollbarApi } from '../api';
@@ -37,6 +38,9 @@ describe('createRouter', () => {
const router = await createRouter({
rollbarApi,
logger: getVoidLogger(),
config: ConfigReader.fromConfigs([
{ context: 'abc', data: { rollbar: { accountToken: 'foo' } } },
]),
});
app = express().use(router);
});
+16 -8
View File
@@ -14,15 +14,17 @@
* limitations under the License.
*/
import { errorHandler } from '@backstage/backend-common';
import { Logger } from 'winston';
import Router from 'express-promise-router';
import express from 'express';
import Router from 'express-promise-router';
import { Logger } from 'winston';
import { errorHandler } from '@backstage/backend-common';
import { Config } from '@backstage/config';
import { RollbarApi } from '../api';
export interface RouterOptions {
rollbarApi?: RollbarApi;
logger: Logger;
config: Config;
}
export async function createRouter(
@@ -30,7 +32,10 @@ export async function createRouter(
): Promise<express.Router> {
const router = Router();
const logger = options.logger.child({ plugin: 'rollbar' });
const accessToken = !options.rollbarApi ? getRollbarAccountToken(logger) : '';
const config = options.config.getConfig('rollbar');
const accessToken = !options.rollbarApi
? getRollbarAccountToken(config, logger)
: '';
if (options.rollbarApi || accessToken) {
const rollbarApi =
@@ -82,17 +87,20 @@ export async function createRouter(
return router;
}
function getRollbarAccountToken(logger: Logger) {
const token = process.env.ROLLBAR_ACCOUNT_TOKEN || '';
function getRollbarAccountToken(config: Config, logger: Logger) {
const token =
config.getOptionalString('accountToken') ||
process.env.ROLLBAR_ACCOUNT_TOKEN ||
'';
if (!token) {
if (process.env.NODE_ENV !== 'development') {
throw new Error(
'Rollbar token must be provided in ROLLBAR_ACCOUNT_TOKEN environment variable to start the API.',
'The rollbar.accountToken must be provided in config to start the API.',
);
}
logger.warn(
'Failed to initialize rollbar backend, set ROLLBAR_ACCOUNT_TOKEN environment variable to start the API.',
'Failed to initialize rollbar backend, set rollbar.accountToken in config to start the API.',
);
}
@@ -14,9 +14,13 @@
* limitations under the License.
*/
import { createServiceBuilder } from '@backstage/backend-common';
import { Server } from 'http';
import { Logger } from 'winston';
import {
createServiceBuilder,
loadBackendConfig,
} from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { createRouter } from './router';
export interface ServerOptions {
@@ -24,14 +28,16 @@ export interface ServerOptions {
enableCors: boolean;
logger: Logger;
}
export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'rollbar-backend' });
const config = ConfigReader.fromConfigs(await loadBackendConfig());
logger.debug('Creating application...');
const router = await createRouter({ logger });
const router = await createRouter({ logger, config });
const service = createServiceBuilder(module)
.enableCors({ origin: 'http://localhost:3000' })