summaryrefslogtreecommitdiff
path: root/std/multipart
diff options
context:
space:
mode:
Diffstat (limited to 'std/multipart')
m---------std0
-rw-r--r--std/multipart/fixtures/sample.txt27
-rw-r--r--std/multipart/formfile.ts24
-rw-r--r--std/multipart/formfile_test.ts32
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);
+});