diff options
Diffstat (limited to 'std/multipart')
m--------- | std | 0 | ||||
-rw-r--r-- | std/multipart/fixtures/sample.txt | 27 | ||||
-rw-r--r-- | std/multipart/formfile.ts | 24 | ||||
-rw-r--r-- | std/multipart/formfile_test.ts | 32 |
4 files changed, 83 insertions, 0 deletions
diff --git a/std b/std deleted file mode 160000 -Subproject 43aafbf33285753e7b42230f0eb7969b300f71c diff --git a/std/multipart/fixtures/sample.txt b/std/multipart/fixtures/sample.txt new file mode 100644 index 000000000..97e9bf553 --- /dev/null +++ b/std/multipart/fixtures/sample.txt @@ -0,0 +1,27 @@ +----------------------------434049563556637648550474
+content-disposition: form-data; name="foo"
+content-type: application/octet-stream
+
+foo
+----------------------------434049563556637648550474
+content-disposition: form-data; name="bar"
+content-type: application/octet-stream
+
+bar
+----------------------------434049563556637648550474
+content-disposition: form-data; name="file"; filename="tsconfig.json"
+content-type: application/octet-stream
+
+{ + "compilerOptions": { + "target": "es2018", + "baseUrl": ".", + "paths": { + "deno": ["./deno.d.ts"], + "https://*": ["../../.deno/deps/https/*"], + "http://*": ["../../.deno/deps/http/*"] + } + } +} +
+----------------------------434049563556637648550474--
diff --git a/std/multipart/formfile.ts b/std/multipart/formfile.ts new file mode 100644 index 000000000..a0e721a15 --- /dev/null +++ b/std/multipart/formfile.ts @@ -0,0 +1,24 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +import { hasOwnProperty } from "../util/has_own_property.ts"; + +/** FormFile object */ +export interface FormFile { + /** filename */ + filename: string; + /** content-type header value of file */ + type: string; + /** byte size of file */ + size: number; + /** in-memory content of file. Either content or tempfile is set */ + content?: Uint8Array; + /** temporal file path. + * Set if file size is bigger than specified max-memory size at reading form + * */ + tempfile?: string; +} + +/** Type guard for FormFile */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function isFormFile(x: any): x is FormFile { + return hasOwnProperty(x, "filename") && hasOwnProperty(x, "type"); +} diff --git a/std/multipart/formfile_test.ts b/std/multipart/formfile_test.ts new file mode 100644 index 000000000..52dd3addd --- /dev/null +++ b/std/multipart/formfile_test.ts @@ -0,0 +1,32 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +import { test } from "../testing/mod.ts"; +import { assertEquals } from "../testing/asserts.ts"; +import { isFormFile } from "./formfile.ts"; + +test(function multipartIsFormFile(): void { + assertEquals( + isFormFile({ + filename: "foo", + type: "application/json" + }), + true + ); + assertEquals( + isFormFile({ + filename: "foo" + }), + false + ); +}); + +test(function isFormFileShouldNotThrow(): void { + assertEquals( + isFormFile({ + filename: "foo", + type: "application/json", + hasOwnProperty: "bar" + }), + true + ); + assertEquals(isFormFile(Object.create(null)), false); +}); |