diff --git a/packages/app/package.json b/packages/app/package.json index 0a3d68603b..41a4dace53 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -72,6 +72,13 @@ "pathRewrite": { "^/circleci/api/": "/" } + }, + "/catalog/api": { + "target": "http://localhost:3003", + "changeOrigin": true, + "pathRewrite": { + "^/catalog/api/": "/" + } } } } diff --git a/plugins/catalog/src/data/component.ts b/plugins/catalog/src/data/component.ts index ec6e2368b8..9a073f0a42 100644 --- a/plugins/catalog/src/data/component.ts +++ b/plugins/catalog/src/data/component.ts @@ -15,6 +15,7 @@ */ export type Component = { name: string; + status: string; }; export interface ComponentFactory { diff --git a/plugins/catalog/src/data/mock-factory.ts b/plugins/catalog/src/data/mock-factory.ts index bf39fa436c..15be051fb0 100644 --- a/plugins/catalog/src/data/mock-factory.ts +++ b/plugins/catalog/src/data/mock-factory.ts @@ -14,35 +14,33 @@ * limitations under the License. */ import { Component, ComponentFactory } from './component'; -import mock from './mock-factory-data.json'; +import { DescriptorEnvelope } from '../../../catalog-backend/src/ingestion/types'; + +function transformEnvelopeToComponent(data: DescriptorEnvelope): Component { + return { + name: data.metadata?.name ?? '', + status: data.metadata?.labels?.status ?? 'Up and running', + }; +} + +let inMemoryStore: Promise; -const ARTIFICIAL_TIMEOUT = 800; -let inMemoryStore = [...mock]; export const MockComponentFactory: ComponentFactory = { getAllComponents(): Promise { - return new Promise((resolve) => - setTimeout(() => resolve(inMemoryStore), ARTIFICIAL_TIMEOUT), - ); + inMemoryStore = + inMemoryStore ?? + fetch('//localhost:3000/catalog/api/entities') + .then(response => response.json()) + .then(data => data.map(transformEnvelopeToComponent)); + return inMemoryStore; }, - getComponentByName(name: string): Promise { - return new Promise((resolve, reject) => - setTimeout(() => { - const mockComponent = inMemoryStore.find( - (component) => component.name === name, - ); - if (mockComponent) return resolve(mockComponent); - return reject({ code: 'Component not found!' }); - }, ARTIFICIAL_TIMEOUT), - ); + async getComponentByName(name: string): Promise { + const components = await this.getAllComponents(); + const mockComponent = components.find(component => component.name === name); + if (mockComponent) return mockComponent; + throw new Error(`'Component not found: ${name}`); }, - removeComponentByName(name: string): Promise { - return new Promise((resolve) => - setTimeout(() => { - inMemoryStore = inMemoryStore.filter( - (component) => component.name !== name, - ); - resolve(true); - }, ARTIFICIAL_TIMEOUT), - ); + async removeComponentByName(_: string): Promise { + return true; }, }; diff --git a/plugins/circleci/src/index.ts b/plugins/circleci/src/index.ts index 41cde5e83a..11f2c80b88 100644 --- a/plugins/circleci/src/index.ts +++ b/plugins/circleci/src/index.ts @@ -16,6 +16,5 @@ export { plugin } from './plugin'; export * from './api'; -export * from './proxy'; export * from './route-refs'; export { CircleCIWidget } from './components/App'; diff --git a/plugins/circleci/src/proxy.ts b/plugins/circleci/src/proxy.ts deleted file mode 100644 index 8a5ae460ab..0000000000 --- a/plugins/circleci/src/proxy.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2020 Spotify AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export const proxySettings = { - '/circleci/api': { - target: 'https://circleci.com/api/v1.1', - changeOrigin: true, - logLevel: 'debug', - pathRewrite: { - '^/circleci/api/': '/', - }, - }, -};