From 26eeefed3ab70dbf2b7f8d2ce97edb791d9c230f Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Wed, 28 Aug 2024 15:16:45 +0200 Subject: [PATCH] update custom url reader example Signed-off-by: Johan Haals --- .../core-services/url-reader.md | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/backend-system/core-services/url-reader.md b/docs/backend-system/core-services/url-reader.md index 6c2b8451ff..27b9658eda 100644 --- a/docs/backend-system/core-services/url-reader.md +++ b/docs/backend-system/core-services/url-reader.md @@ -51,29 +51,33 @@ createBackendPlugin({ You can also create an internal or bespoke reader and provide it to the backend using a service factory. The following example shows how to create a custom URL reader and provide it to the backend. ```ts title="packages/backend/src/index.ts" -import { urlReaderFactoriesServiceRef } from '@backstage/backend-defaults/urlReader'; +import { createBackend } from '@backstage/backend-defaults'; +import { + ReaderFactory, + urlReaderFactoriesServiceRef, +} from '@backstage/backend-defaults/urlReader'; import { - createBackendFeatureLoader, createServiceFactory, + UrlReaderService, } from '@backstage/backend-plugin-api'; +import { ScmIntegrations } from '@backstage/integration'; +type CustomIntegrationConfig = { + // custom config fields +}; class CustomUrlReader implements UrlReaderService { static factory: ReaderFactory = ({ config, treeResponseFactory }) => { const integrations = ScmIntegrations.fromConfig(config); - const reader = new GithubUrlReader(integration, { treeResponseFactory }); - const predicate = (url: URL) => url.host === integration.config.host; - return { reader, predicate }; - }); - - constructor( - private readonly integration: BitbucketServerIntegration, - private readonly deps: { treeResponseFactory: ReadTreeResponseFactory }, - ) {} - - // implementations of read, readTree and search methods skipped for this example + const integrationsConfig = integrations.byHost('myCustomDomain') ?? {}; + const reader = new CustomUrlReader(integrationsConfig); + const predicate = (url: URL) => url.host === 'myCustomDomain'; + return [{ reader, predicate }]; }; + constructor(private readonly integrationConfig: CustomIntegrationConfig) {} + // implementations of read, readTree and search methods skipped for this example +} const customReader = createServiceFactory({ service: urlReaderFactoriesServiceRef,