Merge pull request #10859 from skgandikota/auth-token-newrelic-dashboard

Incl. Authorization Token to New Relic Dashboard Plugin
This commit is contained in:
Patrik Oldsberg
2022-04-19 18:19:54 +02:00
committed by GitHub
3 changed files with 20 additions and 4 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-newrelic-dashboard': patch
---
Add `FetchApi` and related `fetchApiRef` which implement fetch. in order to included the Authorization Token to New Relic Dashboard Plugin, so that frontend can send an authenticated proxy call to backend
@@ -18,7 +18,7 @@ import {
DashboardSnapshotSummary,
NewRelicDashboardApi,
} from './NewRelicDashboardApi';
import { DiscoveryApi } from '@backstage/core-plugin-api';
import { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api';
import { DashboardEntity } from '../types/DashboardEntity';
import { DashboardSnapshot } from '../types/DashboardSnapshot';
import { getDashboardParentGuidQuery } from '../queries/getDashboardParentGuidQuery';
@@ -27,13 +27,18 @@ import { ResponseError } from '@backstage/errors';
export class NewRelicDashboardClient implements NewRelicDashboardApi {
private readonly discoveryApi: DiscoveryApi;
private readonly fetchApi: FetchApi;
constructor({
discoveryApi,
fetchApi,
}: {
discoveryApi: DiscoveryApi;
fetchApi: FetchApi;
baseUrl?: string;
}) {
this.discoveryApi = discoveryApi;
this.fetchApi = fetchApi;
}
private async callApi<T>(
@@ -56,7 +61,7 @@ export class NewRelicDashboardClient implements NewRelicDashboardApi {
const apiUrl = `${await this.discoveryApi.getBaseUrl(
'proxy',
)}/newrelic/api/graphql`;
const response = await fetch(apiUrl, requestOptions);
const response = await this.fetchApi.fetch(apiUrl, requestOptions);
if (response.status === 200) {
return (await response.json()) as T;
}
+8 -2
View File
@@ -19,6 +19,7 @@ import {
createApiFactory,
discoveryApiRef,
createComponentExtension,
fetchApiRef,
} from '@backstage/core-plugin-api';
import { newRelicDashboardApiRef, NewRelicDashboardClient } from './api';
import { rootRouteRef } from './routes';
@@ -31,10 +32,15 @@ export const newRelicDashboardPlugin = createPlugin({
apis: [
createApiFactory({
api: newRelicDashboardApiRef,
deps: { configApi: configApiRef, discoveryApi: discoveryApiRef },
factory: ({ configApi, discoveryApi }) =>
deps: {
configApi: configApiRef,
discoveryApi: discoveryApiRef,
fetchApi: fetchApiRef,
},
factory: ({ configApi, discoveryApi, fetchApi }) =>
new NewRelicDashboardClient({
discoveryApi,
fetchApi,
baseUrl: configApi.getOptionalString('newrelicdashboard.baseUrl'),
}),
}),