summaryrefslogtreecommitdiff
path: root/file_server.ts
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2018-12-17 17:49:10 +0100
committerRyan Dahl <ry@tinyclouds.org>2018-12-17 11:49:10 -0500
commitf6dae45cd2bb0615c136188b4dba8a3272ac5d70 (patch)
tree9330a72a0c9eda2f668d00f07a7c6b11d2edd346 /file_server.ts
parent579b92de599b056c308a3b2d26f0b09188c4441b (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-xfile_server.ts20
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 {