diff options
| -rw-r--r-- | bufio.ts | 10 | ||||
| -rw-r--r-- | http.ts | 21 |
2 files changed, 16 insertions, 15 deletions
@@ -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 { +} @@ -33,8 +33,9 @@ class ServerRequest { url: string; method: string; proto: string; + headers: Headers; - respond(r: Response = { status: 200 }): Promise<void> { + respond(r: Response): Promise<void> { throw Error("not implemented"); } } @@ -43,25 +44,15 @@ async function readRequest(b: BufReader): Promise<ServerRequest> { const tp = new TextProtoReader(b); const req = new ServerRequest(); - // First line: GET /index.html HTTP/1.0 let s: string; let err: BufState; + + // First line: GET /index.html HTTP/1.0 [s, err] = await tp.readLine(); - const { method, url, proto } = parseRequestLine(s); - req.method = method; - req.url = url; - req.proto = proto; + [req.method, req.url, req.proto] = s.split(" ", 3); - let headers: Headers; - [headers, err] = await tp.readMIMEHeader(); + [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 }; -} |
