Read responses in UrlReader#read() as array buffer instead of as text to allow reading non-text locations

Signed-off-by: Dominik Henneke <dominik.henneke@sda-se.com>
This commit is contained in:
Dominik Henneke
2021-08-19 12:07:09 +02:00
parent ad7bbbd9b2
commit 4d909268cb
6 changed files with 10 additions and 5 deletions
+5
View File
@@ -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.
@@ -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}`;
@@ -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}`;
@@ -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,
};
}
@@ -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,
};
}
@@ -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,
};
}