1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-30 16:40:57 -05:00
This commit is contained in:
Ryan Dahl 2018-11-08 18:15:26 -05:00
parent 9377d154c5
commit ad578ab6fe
2 changed files with 17 additions and 16 deletions

View file

@ -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 {
}

23
http.ts
View file

@ -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;
[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 };
}