fix(plugins/pagerduty): use FetchApi over raw fetch with IdentityApi

Signed-off-by: Alec Jacobs <cajacobs5401@gmail.com>
This commit is contained in:
Alec Jacobs
2022-05-26 14:57:09 -07:00
parent e5af087fb5
commit ff30bc3f06
3 changed files with 10 additions and 12 deletions
+4 -6
View File
@@ -30,7 +30,7 @@ import {
createApiRef,
DiscoveryApi,
ConfigApi,
IdentityApi,
FetchApi,
} from '@backstage/core-plugin-api';
export class UnauthorizedError extends Error {}
@@ -46,7 +46,7 @@ export class PagerDutyClient implements PagerDutyApi {
static fromConfig(
configApi: ConfigApi,
discoveryApi: DiscoveryApi,
identityApi: IdentityApi,
fetchApi: FetchApi,
) {
const eventsBaseUrl: string =
configApi.getOptionalString('pagerDuty.eventsBaseUrl') ??
@@ -54,7 +54,7 @@ export class PagerDutyClient implements PagerDutyApi {
return new PagerDutyClient({
eventsBaseUrl,
discoveryApi,
identityApi,
fetchApi,
});
}
constructor(private readonly config: ClientApiConfig) {}
@@ -144,13 +144,11 @@ export class PagerDutyClient implements PagerDutyApi {
}
private async getByUrl<T>(url: string): Promise<T> {
const { token: idToken } = await this.config.identityApi.getCredentials();
const options = {
method: 'GET',
headers: {
Accept: 'application/vnd.pagerduty+json;version=2',
'Content-Type': 'application/json',
...(idToken && { Authorization: `Bearer ${idToken}` }),
},
};
const response = await this.request(url, options);
@@ -161,7 +159,7 @@ export class PagerDutyClient implements PagerDutyApi {
url: string,
options: RequestOptions,
): Promise<Response> {
const response = await fetch(url, options);
const response = await this.config.fetchApi.fetch(url, options);
if (response.status === 401) {
throw new UnauthorizedError();
}
+2 -2
View File
@@ -15,7 +15,7 @@
*/
import { Incident, ChangeEvent, OnCall, Service } from '../components/types';
import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';
import { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api';
export type TriggerAlarmRequest = {
integrationKey: string;
@@ -84,7 +84,7 @@ export type OnCallsResponse = {
export type ClientApiConfig = {
eventsBaseUrl?: string;
discoveryApi: DiscoveryApi;
identityApi: IdentityApi;
fetchApi: FetchApi;
};
export type RequestOptions = {
+4 -4
View File
@@ -19,9 +19,9 @@ import {
createPlugin,
createRouteRef,
discoveryApiRef,
fetchApiRef,
configApiRef,
createComponentExtension,
identityApiRef,
} from '@backstage/core-plugin-api';
export const rootRouteRef = createRouteRef({
@@ -36,10 +36,10 @@ export const pagerDutyPlugin = createPlugin({
deps: {
discoveryApi: discoveryApiRef,
configApi: configApiRef,
identityApi: identityApiRef,
fetchApi: fetchApiRef,
},
factory: ({ configApi, discoveryApi, identityApi }) =>
PagerDutyClient.fromConfig(configApi, discoveryApi, identityApi),
factory: ({ configApi, discoveryApi, fetchApi }) =>
PagerDutyClient.fromConfig(configApi, discoveryApi, fetchApi),
}),
],
});