From b64e81b80d4cd7e50d9beb6bd55ef3253025e048 Mon Sep 17 00:00:00 2001 From: alde Date: Mon, 19 Apr 2021 13:59:04 -0400 Subject: [PATCH] use discoveryApi to find code-coverage-backend api MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/code-coverage/src/api.ts | 25 ++++++++++++------------- plugins/code-coverage/src/plugin.ts | 6 +++--- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/plugins/code-coverage/src/api.ts b/plugins/code-coverage/src/api.ts index 1a1bd542ae..2fa2dab05a 100644 --- a/plugins/code-coverage/src/api.ts +++ b/plugins/code-coverage/src/api.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { createApiRef } from '@backstage/core'; +import { createApiRef, DiscoveryApi } from '@backstage/core'; import { Config } from '@backstage/config'; import { EntityName, stringifyEntityRef } from '@backstage/catalog-model'; import { @@ -38,7 +38,7 @@ export class FetchError extends Error { } export type CodeCoverageApi = { - url: string; + discovery: DiscoveryApi; getCoverageForEntity: (entity: EntityName) => Promise; getFileContentFromEntity: ( entity: EntityName, @@ -56,17 +56,18 @@ export const codeCoverageApiRef = createApiRef({ }); export class CodeCoverageRestApi implements CodeCoverageApi { - static fromConfig(config: Config) { - return new CodeCoverageRestApi(config.getString('backend.baseUrl')); - } + url: string = ''; - constructor(public url: string) {} + constructor(public discovery: DiscoveryApi) {} private async fetch( - input: string, + path: string, init?: RequestInit, ): Promise { - const resp = await fetch(`${this.url}${input}`, init); + if (!this.url) { + this.url = await this.discovery.getBaseUrl('code-coverage'); + } + const resp = await fetch(`${this.url}${path}`, init); if (!resp.ok) { throw await ResponseError.fromResponse(resp); } @@ -81,7 +82,7 @@ export class CodeCoverageRestApi implements CodeCoverageApi { ): Promise { const entity = encodeURI(stringifyEntityRef(entityName)); return (await this.fetch( - `/api/code-coverage/report?entity=${entity}`, + `/report?entity=${entity}`, )) as JsonCodeCoverage; } @@ -91,9 +92,7 @@ export class CodeCoverageRestApi implements CodeCoverageApi { ): Promise { const entity = encodeURI(stringifyEntityRef(entityName)); return await this.fetch( - `/api/code-coverage/file-content?entity=${entity}&path=${encodeURI( - filePath, - )}`, + `/file-content?entity=${entity}&path=${encodeURI(filePath)}`, ); } @@ -104,7 +103,7 @@ export class CodeCoverageRestApi implements CodeCoverageApi { const entity = encodeURI(stringifyEntityRef(entityName)); const hasValidLimit = limit && limit > 0; return (await this.fetch( - `/api/code-coverage/history?entity=${entity}${ + `/history?entity=${entity}${ hasValidLimit ? `&limit=${encodeURI(`${limit}`)}` : '' }`, )) as JsonCoverageHistory; diff --git a/plugins/code-coverage/src/plugin.ts b/plugins/code-coverage/src/plugin.ts index fa5f31d9cc..68e8291bc4 100644 --- a/plugins/code-coverage/src/plugin.ts +++ b/plugins/code-coverage/src/plugin.ts @@ -14,10 +14,10 @@ * limitations under the License. */ import { - configApiRef, createApiFactory, createPlugin, createRoutableExtension, + discoveryApiRef, } from '@backstage/core'; import { codeCoverageApiRef, CodeCoverageRestApi } from './api'; @@ -31,8 +31,8 @@ export const codeCoveragePlugin = createPlugin({ apis: [ createApiFactory({ api: codeCoverageApiRef, - deps: { configApi: configApiRef }, - factory: ({ configApi }) => CodeCoverageRestApi.fromConfig(configApi), + deps: { discoveryApi: discoveryApiRef }, + factory: ({ discoveryApi }) => new CodeCoverageRestApi(discoveryApi), }), ], });