Merge pull request #10859 from skgandikota/auth-token-newrelic-dashboard
Incl. Authorization Token to New Relic Dashboard Plugin
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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'),
|
||||
}),
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user