diff options
| author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2018-12-17 17:49:10 +0100 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2018-12-17 11:49:10 -0500 |
| commit | f6dae45cd2bb0615c136188b4dba8a3272ac5d70 (patch) | |
| tree | 9330a72a0c9eda2f668d00f07a7c6b11d2edd346 /file_server.ts | |
| parent | 579b92de599b056c308a3b2d26f0b09188c4441b (diff) | |
First pass at streaming http response (denoland/deno_std#16)
Original: https://github.com/denoland/deno_std/commit/269665873a9219423085418d605b8af8ac2565dc
Diffstat (limited to 'file_server.ts')
| -rwxr-xr-x | file_server.ts | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/file_server.ts b/file_server.ts index 5cd87e2ec..bd1c52b88 100755 --- a/file_server.ts +++ b/file_server.ts @@ -5,8 +5,13 @@ // TODO Add tests like these: // https://github.com/indexzero/http-server/blob/master/test/http-server-test.js -import { listenAndServe, ServerRequest, setContentLength, Response } from "./http"; -import { cwd, readFile, DenoError, ErrorKind, args, stat, readDir } from "deno"; +import { + listenAndServe, + ServerRequest, + setContentLength, + Response +} from "./http"; +import { cwd, DenoError, ErrorKind, args, stat, readDir, open } from "deno"; const dirViewerTemplate = ` <!DOCTYPE html> @@ -146,9 +151,10 @@ async function serveDir(req: ServerRequest, dirPath: string, dirName: string) { } async function serveFile(req: ServerRequest, filename: string) { - let file = await readFile(filename); + const file = await open(filename); + const fileInfo = await stat(filename); const headers = new Headers(); - headers.set("content-type", "octet-stream"); + headers.set("content-length", fileInfo.len.toString()); const res = { status: 200, @@ -163,9 +169,9 @@ async function serveFallback(req: ServerRequest, e: Error) { e instanceof DenoError && (e as DenoError<any>).kind === ErrorKind.NotFound ) { - return { - status: 404, - body: encoder.encode("Not found") + return { + status: 404, + body: encoder.encode("Not found") }; } else { return { |
