mirror of
https://github.com/denoland/deno.git
synced 2025-01-21 21:50:00 -05:00
parent
c4e8ed3c44
commit
9d5f0f2d23
6 changed files with 29 additions and 63 deletions
|
@ -8,13 +8,35 @@ type Writer = Deno.Writer;
|
|||
import { equal, findIndex, findLastIndex, hasPrefix } from "../bytes/mod.ts";
|
||||
import { copyN } from "../io/ioutil.ts";
|
||||
import { MultiReader } from "../io/readers.ts";
|
||||
import { FormFile } from "../multipart/formfile.ts";
|
||||
import { extname } from "../path/mod.ts";
|
||||
import { tempFile } from "../io/util.ts";
|
||||
import { BufReader, BufWriter, UnexpectedEOFError } from "../io/bufio.ts";
|
||||
import { encoder } from "../strings/mod.ts";
|
||||
import { assertStrictEq } from "../testing/asserts.ts";
|
||||
import { TextProtoReader } from "../textproto/mod.ts";
|
||||
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");
|
||||
}
|
||||
|
||||
function randomBoundary(): string {
|
||||
let boundary = "--------------------------";
|
||||
|
|
|
@ -10,12 +10,13 @@ import {
|
|||
import { test, runIfMain } from "../testing/mod.ts";
|
||||
import * as path from "../path/mod.ts";
|
||||
import {
|
||||
matchAfterPrefix,
|
||||
FormFile,
|
||||
MultipartReader,
|
||||
MultipartWriter,
|
||||
isFormFile,
|
||||
matchAfterPrefix,
|
||||
scanUntilBoundary
|
||||
} from "./multipart.ts";
|
||||
import { FormFile, isFormFile } from "../multipart/formfile.ts";
|
||||
import { StringWriter } from "../io/writers.ts";
|
||||
|
||||
const e = new TextEncoder();
|
||||
|
@ -94,7 +95,7 @@ test(async function multipartMultipartWriter(): Promise<void> {
|
|||
const mw = new MultipartWriter(buf);
|
||||
await mw.writeField("foo", "foo");
|
||||
await mw.writeField("bar", "bar");
|
||||
const f = await open(path.resolve("./multipart/fixtures/sample.txt"), "r");
|
||||
const f = await open(path.resolve("./mime/testdata/sample.txt"), "r");
|
||||
await mw.writeFile("file", "sample.txt", f);
|
||||
await mw.close();
|
||||
});
|
||||
|
@ -173,7 +174,7 @@ test(async function multipartMultipartWriter3(): Promise<void> {
|
|||
|
||||
test(async function multipartMultipartReader(): Promise<void> {
|
||||
// FIXME: path resolution
|
||||
const o = await open(path.resolve("./multipart/fixtures/sample.txt"));
|
||||
const o = await open(path.resolve("./mime/testdata/sample.txt"));
|
||||
const mr = new MultipartReader(
|
||||
o,
|
||||
"--------------------------434049563556637648550474"
|
||||
|
@ -187,7 +188,7 @@ test(async function multipartMultipartReader(): Promise<void> {
|
|||
});
|
||||
|
||||
test(async function multipartMultipartReader2(): Promise<void> {
|
||||
const o = await open(path.resolve("./multipart/fixtures/sample.txt"));
|
||||
const o = await open(path.resolve("./mime/testdata/sample.txt"));
|
||||
const mr = new MultipartReader(
|
||||
o,
|
||||
"--------------------------434049563556637648550474"
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
// Copyright 2018-2020 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");
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
// Copyright 2018-2020 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);
|
||||
});
|
|
@ -1 +0,0 @@
|
|||
export * from "./formfile.ts";
|
Loading…
Add table
Reference in a new issue