From 4d909268cb473f2e4ed8158532f34d49e5505048 Mon Sep 17 00:00:00 2001 From: Dominik Henneke Date: Thu, 19 Aug 2021 12:07:09 +0200 Subject: [PATCH] Read responses in `UrlReader#read()` as array buffer instead of as text to allow reading non-text locations Signed-off-by: Dominik Henneke --- .changeset/rude-chicken-deliver.md | 5 +++++ packages/backend-common/src/reading/AzureUrlReader.ts | 2 +- packages/backend-common/src/reading/BitbucketUrlReader.ts | 2 +- packages/backend-common/src/reading/FetchUrlReader.ts | 2 +- packages/backend-common/src/reading/GithubUrlReader.ts | 2 +- packages/backend-common/src/reading/GitlabUrlReader.ts | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 .changeset/rude-chicken-deliver.md diff --git a/.changeset/rude-chicken-deliver.md b/.changeset/rude-chicken-deliver.md new file mode 100644 index 0000000000..4afdcaa37b --- /dev/null +++ b/.changeset/rude-chicken-deliver.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Read responses in `UrlReader#read()` as array buffer instead of as text to allow reading non-text locations such as images. diff --git a/packages/backend-common/src/reading/AzureUrlReader.ts b/packages/backend-common/src/reading/AzureUrlReader.ts index d2c056508d..7b4b1e345e 100644 --- a/packages/backend-common/src/reading/AzureUrlReader.ts +++ b/packages/backend-common/src/reading/AzureUrlReader.ts @@ -70,7 +70,7 @@ export class AzureUrlReader implements UrlReader { // for private repos when PAT is not valid, Azure API returns a http status code 203 with sign in page html if (response.ok && response.status !== 203) { - return Buffer.from(await response.text()); + return Buffer.from(await response.arrayBuffer()); } const message = `${url} could not be read as ${builtUrl}, ${response.status} ${response.statusText}`; diff --git a/packages/backend-common/src/reading/BitbucketUrlReader.ts b/packages/backend-common/src/reading/BitbucketUrlReader.ts index 2a979a464f..7925212b20 100644 --- a/packages/backend-common/src/reading/BitbucketUrlReader.ts +++ b/packages/backend-common/src/reading/BitbucketUrlReader.ts @@ -86,7 +86,7 @@ export class BitbucketUrlReader implements UrlReader { } if (response.ok) { - return Buffer.from(await response.text()); + return Buffer.from(await response.arrayBuffer()); } const message = `${url} could not be read as ${bitbucketUrl}, ${response.status} ${response.statusText}`; diff --git a/packages/backend-common/src/reading/FetchUrlReader.ts b/packages/backend-common/src/reading/FetchUrlReader.ts index 3177ee1f8e..6b45d99cc3 100644 --- a/packages/backend-common/src/reading/FetchUrlReader.ts +++ b/packages/backend-common/src/reading/FetchUrlReader.ts @@ -82,7 +82,7 @@ export class FetchUrlReader implements UrlReader { if (response.ok) { return { - buffer: async () => Buffer.from(await response.text()), + buffer: async () => Buffer.from(await response.arrayBuffer()), etag: response.headers.get('ETag') ?? undefined, }; } diff --git a/packages/backend-common/src/reading/GithubUrlReader.ts b/packages/backend-common/src/reading/GithubUrlReader.ts index 40d36fb2a0..5dc1430ea8 100644 --- a/packages/backend-common/src/reading/GithubUrlReader.ts +++ b/packages/backend-common/src/reading/GithubUrlReader.ts @@ -119,7 +119,7 @@ export class GithubUrlReader implements UrlReader { if (response.ok) { return { - buffer: async () => Buffer.from(await response.text()), + buffer: async () => Buffer.from(await response.arrayBuffer()), etag: response.headers.get('ETag') ?? undefined, }; } diff --git a/packages/backend-common/src/reading/GitlabUrlReader.ts b/packages/backend-common/src/reading/GitlabUrlReader.ts index 27c31c7673..baee64fab2 100644 --- a/packages/backend-common/src/reading/GitlabUrlReader.ts +++ b/packages/backend-common/src/reading/GitlabUrlReader.ts @@ -84,7 +84,7 @@ export class GitlabUrlReader implements UrlReader { if (response.ok) { return { - buffer: async () => Buffer.from(await response.text()), + buffer: async () => Buffer.from(await response.arrayBuffer()), etag: response.headers.get('ETag') ?? undefined, }; }