diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/fetch.ts | 7 | ||||
-rw-r--r-- | js/fetch_test.ts | 8 | ||||
-rw-r--r-- | js/util.ts | 2 |
3 files changed, 14 insertions, 3 deletions
diff --git a/js/fetch.ts b/js/fetch.ts index 4f225b507..48429ca19 100644 --- a/js/fetch.ts +++ b/js/fetch.ts @@ -20,6 +20,7 @@ import { FormData } from "./dom_types"; import { TextDecoder } from "./text_encoding"; +import { DenoBlob } from "./blob"; interface Header { name: string; @@ -134,8 +135,10 @@ class FetchResponse implements Response { } async blob(): Promise<Blob> { - notImplemented(); - return {} as Blob; + const arrayBuffer = await this.arrayBuffer(); + return new DenoBlob([arrayBuffer], { + type: this.headers.get("content-type") || "" + }); } async formData(): Promise<FormData> { diff --git a/js/fetch_test.ts b/js/fetch_test.ts index 2b7f32099..25d8c2ed0 100644 --- a/js/fetch_test.ts +++ b/js/fetch_test.ts @@ -35,3 +35,11 @@ test(async function headersAppend() { } assert(err instanceof TypeError); }); + +testPerm({ net: true }, async function fetchBlob() { + const response = await fetch("http://localhost:4545/package.json"); + const headers = response.headers; + const blob = await response.blob(); + assertEqual(blob.type, headers.get("Content-Type")); + assertEqual(blob.size, Number(headers.get("Content-Length"))); +}); diff --git a/js/util.ts b/js/util.ts index c4bada589..bfde01908 100644 --- a/js/util.ts +++ b/js/util.ts @@ -9,7 +9,7 @@ export function setLogDebug(debug: boolean): void { } /** - * Debug logging for deno. + * Debug logging for deno. * Enable with the `--log-debug` or `-D` command line flag. * @internal */ |