Don't use discovery API

Signed-off-by: Iain Billett <iain@roadie.io>
This commit is contained in:
Iain Billett
2021-12-15 11:50:44 +00:00
parent a91c4dd05a
commit 651d1e7696
6 changed files with 6 additions and 42 deletions
-3
View File
@@ -5,7 +5,6 @@
```ts
import express from 'express';
import { Logger as Logger_2 } from 'winston';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { SearchEngine } from '@backstage/plugin-search-backend-node';
// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
@@ -19,7 +18,5 @@ export function createRouter(options: RouterOptions): Promise<express.Router>;
export type RouterOptions = {
engine: SearchEngine;
logger: Logger_2;
discovery: PluginEndpointDiscovery;
allowedLocationProtocols?: string[];
};
```
@@ -14,10 +14,7 @@
* limitations under the License.
*/
import {
getVoidLogger,
PluginEndpointDiscovery,
} from '@backstage/backend-common';
import { getVoidLogger } from '@backstage/backend-common';
import {
IndexBuilder,
LunrSearchEngine,
@@ -30,22 +27,16 @@ import { createRouter } from './router';
describe('createRouter', () => {
let app: express.Express;
let mockDiscoveryApi: jest.Mocked<PluginEndpointDiscovery>;
let mockSearchEngine: jest.Mocked<SearchEngine>;
beforeAll(async () => {
const logger = getVoidLogger();
const searchEngine = new LunrSearchEngine({ logger });
const indexBuilder = new IndexBuilder({ logger, searchEngine });
mockDiscoveryApi = {
getBaseUrl: jest.fn(),
getExternalBaseUrl: jest.fn().mockResolvedValue('http://localhost:3000/'),
};
const router = await createRouter({
engine: indexBuilder.getSearchEngine(),
logger,
discovery: mockDiscoveryApi,
});
app = express().use(router);
});
@@ -65,12 +56,6 @@ describe('createRouter', () => {
describe('search result filtering', () => {
beforeAll(async () => {
const logger = getVoidLogger();
mockDiscoveryApi = {
getBaseUrl: jest.fn(),
getExternalBaseUrl: jest
.fn()
.mockResolvedValue('http://localhost:3000/'),
};
mockSearchEngine = {
index: jest.fn(),
setTranslator: jest.fn(),
@@ -84,7 +69,6 @@ describe('createRouter', () => {
const router = await createRouter({
engine: indexBuilder.getSearchEngine(),
logger,
discovery: mockDiscoveryApi,
});
app = express().use(router);
});
+4 -12
View File
@@ -19,32 +19,24 @@ import Router from 'express-promise-router';
import { Logger } from 'winston';
import { SearchQuery, SearchResultSet } from '@backstage/search-common';
import { SearchEngine } from '@backstage/plugin-search-backend-node';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
export type RouterOptions = {
engine: SearchEngine;
logger: Logger;
discovery: PluginEndpointDiscovery;
allowedLocationProtocols?: string[];
};
const defaultAllowedLocationProtocols = ['http:', 'https:'];
const allowedLocationProtocols = ['http:', 'https:'];
export async function createRouter(
options: RouterOptions,
): Promise<express.Router> {
const {
engine,
logger,
discovery,
allowedLocationProtocols = defaultAllowedLocationProtocols,
} = options;
const baseUrl = await discovery.getExternalBaseUrl('');
const { engine, logger } = options;
const filterResultSet = ({ results, ...resultSet }: SearchResultSet) => ({
...resultSet,
results: results.filter(result => {
const protocol = new URL(result.document.location, baseUrl).protocol;
const protocol = new URL(result.document.location, 'https://example.com')
.protocol;
const isAllowed = allowedLocationProtocols.includes(protocol);
if (!isAllowed) {
logger.info(
@@ -14,11 +14,7 @@
* limitations under the License.
*/
import {
createServiceBuilder,
loadBackendConfig,
SingleHostDiscovery,
} from '@backstage/backend-common';
import { createServiceBuilder } from '@backstage/backend-common';
import { Server } from 'http';
import { Logger } from 'winston';
import { createRouter } from './router';
@@ -37,8 +33,6 @@ export async function startStandaloneServer(
options: ServerOptions,
): Promise<Server> {
const logger = options.logger.child({ service: 'search-backend' });
const config = await loadBackendConfig({ logger, argv: process.argv });
const discovery = SingleHostDiscovery.fromConfig(config);
const searchEngine = new LunrSearchEngine({ logger });
const indexBuilder = new IndexBuilder({ logger, searchEngine });
logger.debug('Starting application server...');
@@ -48,7 +42,6 @@ export async function startStandaloneServer(
const router = await createRouter({
engine: indexBuilder.getSearchEngine(),
logger,
discovery,
});
let service = createServiceBuilder(module)