From 9b78509ceb975df3dc9d795c7310dcc4c73436a3 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Thu, 8 Nov 2018 18:15:26 -0500 Subject: [PATCH] wip Original: https://github.com/denoland/deno_std/commit/ad578ab6fe75dd41585be741e378b92645258b28 --- bufio.ts | 10 ++++++++++ http.ts | 23 +++++++---------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/bufio.ts b/bufio.ts index 8ff02b7e9c..dccd3afc0d 100644 --- a/bufio.ts +++ b/bufio.ts @@ -323,3 +323,13 @@ export class BufReader implements Reader { return [this.buf.subarray(this.r, this.r + n), err]; } } + +/** BufWriter implements buffering for an deno.Writer object. + * If an error occurs writing to a Writer, no more data will be + * accepted and all subsequent writes, and flush(), will return the error. + * After all data has been written, the client should call the + * flush() method to guarantee all data has been forwarded to + * the underlying deno.Writer. + */ +export class BufWriter implements Writer { +} diff --git a/http.ts b/http.ts index c7ac888796..c33bc97a2d 100644 --- a/http.ts +++ b/http.ts @@ -33,8 +33,9 @@ class ServerRequest { url: string; method: string; proto: string; + headers: Headers; - respond(r: Response = { status: 200 }): Promise { + respond(r: Response): Promise { throw Error("not implemented"); } } @@ -43,25 +44,15 @@ async function readRequest(b: BufReader): Promise { const tp = new TextProtoReader(b); const req = new ServerRequest(); - // First line: GET /index.html HTTP/1.0 let s: string; let err: BufState; - [s, err] = await tp.readLine(); - const { method, url, proto } = parseRequestLine(s); - req.method = method; - req.url = url; - req.proto = proto; - let headers: Headers; - [headers, err] = await tp.readMIMEHeader(); + // First line: GET /index.html HTTP/1.0 + [s, err] = await tp.readLine(); + [req.method, req.url, req.proto] = s.split(" ", 3); + + [req.headers, err] = await tp.readMIMEHeader(); return req; } -// Returns [method, url, proto] -function parseRequestLine( - line: string -): { method: string; url: string; proto: string } { - let [method, url, proto] = line.split(" ", 3); - return { method, url, proto }; -}