summaryrefslogtreecommitdiff
path: root/http
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2019-07-08 04:20:41 +0900
committerRyan Dahl <ry@tinyclouds.org>2019-07-07 15:20:41 -0400
commit9a01d6455ec3cfa955967102f576cb542999321a (patch)
tree82a4ab5776a09432f23b9ed99a31306c884c833e /http
parent6a0858bd5d9d327ac7f46bee5f5b2fab642f2a3f (diff)
Upgrade to v0.11.0 (update Reader interface) (denoland/deno_std#527)
Original: https://github.com/denoland/deno_std/commit/3ea90d54f6dad4bcc3d32e63601096a6c0ff3ce4
Diffstat (limited to 'http')
-rw-r--r--http/file_server_test.ts4
-rw-r--r--http/racing_server_test.ts4
-rw-r--r--http/server.ts34
-rw-r--r--http/server_test.ts15
4 files changed, 29 insertions, 28 deletions
diff --git a/http/file_server_test.ts b/http/file_server_test.ts
index 1bd4e8160..52d6ec688 100644
--- a/http/file_server_test.ts
+++ b/http/file_server_test.ts
@@ -3,7 +3,7 @@ const { readFile, run } = Deno;
import { test } from "../testing/mod.ts";
import { assert, assertEquals } from "../testing/asserts.ts";
-import { BufReader, EOF } from "../io/bufio.ts";
+import { BufReader } from "../io/bufio.ts";
import { TextProtoReader } from "../textproto/mod.ts";
let fileServer: Deno.Process;
@@ -24,7 +24,7 @@ async function startFileServer(): Promise<void> {
// Once fileServer is ready it will write to its stdout.
const r = new TextProtoReader(new BufReader(fileServer.stdout!));
const s = await r.readLine();
- assert(s !== EOF && s.includes("server listening"));
+ assert(s !== Deno.EOF && s.includes("server listening"));
}
function killFileServer(): void {
diff --git a/http/racing_server_test.ts b/http/racing_server_test.ts
index 543366501..428e339a5 100644
--- a/http/racing_server_test.ts
+++ b/http/racing_server_test.ts
@@ -2,7 +2,7 @@ const { dial, run } = Deno;
import { test, runIfMain } from "../testing/mod.ts";
import { assert, assertEquals } from "../testing/asserts.ts";
-import { BufReader, EOF } from "../io/bufio.ts";
+import { BufReader } from "../io/bufio.ts";
import { TextProtoReader } from "../textproto/mod.ts";
let server: Deno.Process;
@@ -14,7 +14,7 @@ async function startServer(): Promise<void> {
// Once fileServer is ready it will write to its stdout.
const r = new TextProtoReader(new BufReader(server.stdout!));
const s = await r.readLine();
- assert(s !== EOF && s.includes("Racing server listening..."));
+ assert(s !== Deno.EOF && s.includes("Racing server listening..."));
}
function killServer(): void {
server.close();
diff --git a/http/server.ts b/http/server.ts
index 5c56a2ec2..265dde943 100644
--- a/http/server.ts
+++ b/http/server.ts
@@ -4,7 +4,7 @@ type Listener = Deno.Listener;
type Conn = Deno.Conn;
type Reader = Deno.Reader;
type Writer = Deno.Writer;
-import { BufReader, BufWriter, EOF, UnexpectedEOFError } from "../io/bufio.ts";
+import { BufReader, BufWriter, UnexpectedEOFError } from "../io/bufio.ts";
import { TextProtoReader } from "../textproto/mod.ts";
import { STATUS_TEXT } from "./http_status.ts";
import { assert } from "../testing/asserts.ts";
@@ -116,14 +116,16 @@ export class ServerRequest {
}
let buf = new Uint8Array(1024);
let rr = await this.r.read(buf);
- let nread = rr.nread;
- while (!rr.eof && nread < len) {
- yield buf.subarray(0, rr.nread);
+ let nread = rr === Deno.EOF ? 0 : rr;
+ let nreadTotal = nread;
+ while (rr !== Deno.EOF && nreadTotal < len) {
+ yield buf.subarray(0, nread);
buf = new Uint8Array(1024);
rr = await this.r.read(buf);
- nread += rr.nread;
+ nread = rr === Deno.EOF ? 0 : rr;
+ nreadTotal += nread;
}
- yield buf.subarray(0, rr.nread);
+ yield buf.subarray(0, nread);
} else {
if (this.headers.has("transfer-encoding")) {
const transferEncodings = this.headers
@@ -134,7 +136,7 @@ export class ServerRequest {
// Based on https://tools.ietf.org/html/rfc2616#section-19.4.6
const tp = new TextProtoReader(this.r);
let line = await tp.readLine();
- if (line === EOF) throw new UnexpectedEOFError();
+ if (line === Deno.EOF) throw new UnexpectedEOFError();
// TODO: handle chunk extension
let [chunkSizeString] = line.split(";");
let chunkSize = parseInt(chunkSizeString, 16);
@@ -143,17 +145,17 @@ export class ServerRequest {
}
while (chunkSize > 0) {
const data = new Uint8Array(chunkSize);
- if ((await this.r.readFull(data)) === EOF) {
+ if ((await this.r.readFull(data)) === Deno.EOF) {
throw new UnexpectedEOFError();
}
yield data;
await this.r.readLine(); // Consume \r\n
line = await tp.readLine();
- if (line === EOF) throw new UnexpectedEOFError();
+ if (line === Deno.EOF) throw new UnexpectedEOFError();
chunkSize = parseInt(line, 16);
}
const entityHeaders = await tp.readMIMEHeader();
- if (entityHeaders !== EOF) {
+ if (entityHeaders !== Deno.EOF) {
for (let [k, v] of entityHeaders) {
this.headers.set(k, v);
}
@@ -282,12 +284,12 @@ export function parseHTTPVersion(vers: string): [number, number] {
export async function readRequest(
bufr: BufReader
-): Promise<ServerRequest | EOF> {
+): Promise<ServerRequest | Deno.EOF> {
const tp = new TextProtoReader(bufr);
const firstLine = await tp.readLine(); // e.g. GET /index.html HTTP/1.0
- if (firstLine === EOF) return EOF;
+ if (firstLine === Deno.EOF) return Deno.EOF;
const headers = await tp.readMIMEHeader();
- if (headers === EOF) throw new UnexpectedEOFError();
+ if (headers === Deno.EOF) throw new UnexpectedEOFError();
const req = new ServerRequest();
req.r = bufr;
@@ -314,7 +316,7 @@ export class Server implements AsyncIterable<ServerRequest> {
): AsyncIterableIterator<ServerRequest> {
const bufr = new BufReader(conn);
const w = new BufWriter(conn);
- let req: ServerRequest | EOF;
+ let req: ServerRequest | Deno.EOF;
let err: Error | undefined;
while (!this.closing) {
@@ -324,7 +326,7 @@ export class Server implements AsyncIterable<ServerRequest> {
err = e;
break;
}
- if (req === EOF) {
+ if (req === Deno.EOF) {
break;
}
@@ -336,7 +338,7 @@ export class Server implements AsyncIterable<ServerRequest> {
await req!.done;
}
- if (req! === EOF) {
+ if (req! === Deno.EOF) {
// The connection was gracefully closed.
} else if (err) {
// An error was thrown while parsing request headers.
diff --git a/http/server_test.ts b/http/server_test.ts
index 6b50057ea..04ff4ba15 100644
--- a/http/server_test.ts
+++ b/http/server_test.ts
@@ -18,14 +18,13 @@ import {
import {
BufReader,
BufWriter,
- EOF,
ReadLineResult,
UnexpectedEOFError
} from "../io/bufio.ts";
import { StringReader } from "../io/readers.ts";
-function assertNotEOF<T extends {}>(val: T | EOF): T {
- assertNotEquals(val, EOF);
+function assertNotEOF<T extends {}>(val: T | Deno.EOF): T {
+ assertNotEquals(val, Deno.EOF);
return val as T;
}
@@ -276,7 +275,7 @@ test(async function writeUint8ArrayResponse(): Promise<void> {
assertEquals(r.more, false);
const eof = await reader.readLine();
- assertEquals(eof, EOF);
+ assertEquals(eof, Deno.EOF);
});
test(async function writeStringReaderResponse(): Promise<void> {
@@ -345,7 +344,7 @@ test(async function testReadRequestError(): Promise<void> {
in: "GET / HTTP/1.1\r\nheader:foo\r\n",
err: UnexpectedEOFError
},
- { in: "", err: EOF },
+ { in: "", err: Deno.EOF },
{
in: "HEAD / HTTP/1.1\r\nContent-Length:4\r\n\r\n",
err: "http: method cannot contain a Content-Length"
@@ -407,15 +406,15 @@ test(async function testReadRequestError(): Promise<void> {
} catch (e) {
err = e;
}
- if (test.err === EOF) {
- assertEquals(req, EOF);
+ if (test.err === Deno.EOF) {
+ assertEquals(req, Deno.EOF);
} else if (typeof test.err === "string") {
assertEquals(err.message, test.err);
} else if (test.err) {
assert(err instanceof (test.err as typeof UnexpectedEOFError));
} else {
assertEquals(err, undefined);
- assertNotEquals(req, EOF);
+ assertNotEquals(req, Deno.EOF);
for (const h of test.headers!) {
assertEquals((req! as ServerRequest).headers.get(h.key), h.value);
}