summaryrefslogtreecommitdiff
path: root/http
diff options
context:
space:
mode:
Diffstat (limited to 'http')
-rwxr-xr-xhttp/file_server.ts53
-rw-r--r--http/file_server_test.ts6
-rw-r--r--http/racing_server.ts2
-rw-r--r--http/server.ts16
-rw-r--r--http/server_test.ts34
5 files changed, 60 insertions, 51 deletions
diff --git a/http/file_server.ts b/http/file_server.ts
index 83de37364..6a3fb9e45 100755
--- a/http/file_server.ts
+++ b/http/file_server.ts
@@ -76,9 +76,11 @@ function modeToString(isDir: boolean, maybeMode: number | null): string {
.split("")
.reverse()
.slice(0, 3)
- .forEach(v => {
- output = modeMap[+v] + output;
- });
+ .forEach(
+ (v): void => {
+ output = modeMap[+v] + output;
+ }
+ );
output = `(${isDir ? "d" : "-"}${output})`;
return output;
}
@@ -220,30 +222,33 @@ function setCORS(res: Response): void {
);
}
-listenAndServe(addr, async req => {
- const fileName = req.url.replace(/\/$/, "");
- const filePath = currentDir + fileName;
+listenAndServe(
+ addr,
+ async (req): Promise<void> => {
+ const fileName = req.url.replace(/\/$/, "");
+ const filePath = currentDir + fileName;
- let response: Response;
+ let response: Response;
- try {
- const fileInfo = await stat(filePath);
- if (fileInfo.isDirectory()) {
- // Bug with deno.stat: name and path not populated
- // Yuck!
- response = await serveDir(req, filePath, fileName);
- } else {
- response = await serveFile(req, filePath);
- }
- } catch (e) {
- response = await serveFallback(req, e);
- } finally {
- if (CORSEnabled) {
- setCORS(response);
+ try {
+ const fileInfo = await stat(filePath);
+ if (fileInfo.isDirectory()) {
+ // Bug with deno.stat: name and path not populated
+ // Yuck!
+ response = await serveDir(req, filePath, fileName);
+ } else {
+ response = await serveFile(req, filePath);
+ }
+ } catch (e) {
+ response = await serveFallback(req, e);
+ } finally {
+ if (CORSEnabled) {
+ setCORS(response);
+ }
+ serverLog(req, response);
+ req.respond(response);
}
- serverLog(req, response);
- req.respond(response);
}
-});
+);
console.log(`HTTP server listening on http://${addr}/`);
diff --git a/http/file_server_test.ts b/http/file_server_test.ts
index 31ddca08e..b976c0dc0 100644
--- a/http/file_server_test.ts
+++ b/http/file_server_test.ts
@@ -30,7 +30,7 @@ function killFileServer(): void {
fileServer.stdout.close();
}
-test(async function serveFile() {
+test(async function serveFile(): Promise<void> {
await startFileServer();
try {
const res = await fetch("http://localhost:4500/azure-pipelines.yml");
@@ -47,7 +47,7 @@ test(async function serveFile() {
}
});
-test(async function serveDirectory() {
+test(async function serveDirectory(): Promise<void> {
await startFileServer();
try {
const res = await fetch("http://localhost:4500/");
@@ -60,7 +60,7 @@ test(async function serveDirectory() {
}
});
-test(async function serveFallback() {
+test(async function serveFallback(): Promise<void> {
await startFileServer();
try {
const res = await fetch("http://localhost:4500/badfile.txt");
diff --git a/http/racing_server.ts b/http/racing_server.ts
index c44fc1216..0053fa428 100644
--- a/http/racing_server.ts
+++ b/http/racing_server.ts
@@ -8,7 +8,7 @@ const body = new TextEncoder().encode("Hello 1\n");
const body4 = new TextEncoder().encode("World 4\n");
function sleep(ms: number): Promise<void> {
- return new Promise(res => setTimeout(res, ms));
+ return new Promise((res): number => setTimeout(res, ms));
}
async function delayedRespond(request: ServerRequest): Promise<void> {
diff --git a/http/server.ts b/http/server.ts
index f1ef015ba..0892b26f7 100644
--- a/http/server.ts
+++ b/http/server.ts
@@ -16,10 +16,12 @@ interface Deferred {
function deferred(isResolved = false): Deferred {
let resolve, reject;
- const promise = new Promise((res, rej) => {
- resolve = res;
- reject = rej;
- });
+ const promise = new Promise(
+ (res, rej): void => {
+ resolve = res;
+ reject = rej;
+ }
+ );
if (isResolved) {
resolve();
}
@@ -181,7 +183,7 @@ export class ServerRequest {
const transferEncodings = this.headers
.get("transfer-encoding")
.split(",")
- .map(e => e.trim().toLowerCase());
+ .map((e): string => e.trim().toLowerCase());
if (transferEncodings.includes("chunked")) {
// Based on https://tools.ietf.org/html/rfc2616#section-19.4.6
const tp = new TextProtoReader(this.r);
@@ -341,10 +343,10 @@ export async function* serve(
let handleConn = (_conn: Conn): void => {};
let scheduleAccept = (): void => {};
const acceptRoutine = (): void => {
- scheduleAccept = () => {
+ scheduleAccept = (): void => {
listener.accept().then(handleConn);
};
- handleConn = (conn: Conn) => {
+ handleConn = (conn: Conn): void => {
const httpConn = createHttpConn(conn);
serveConn(env, httpConn); // don't block
scheduleAccept(); // schedule next accept
diff --git a/http/server_test.ts b/http/server_test.ts
index ed28025cd..36d704a4d 100644
--- a/http/server_test.ts
+++ b/http/server_test.ts
@@ -28,12 +28,14 @@ interface Deferred {
}
function deferred(isResolved = false): Deferred {
- let resolve: Handler = () => void 0;
- let reject: Handler = () => void 0;
- const promise = new Promise((res, rej) => {
- resolve = res;
- reject = rej;
- });
+ let resolve: Handler = (): void => void 0;
+ let reject: Handler = (): void => void 0;
+ const promise = new Promise(
+ (res, rej): void => {
+ resolve = res;
+ reject = rej;
+ }
+ );
if (isResolved) {
resolve();
}
@@ -64,7 +66,7 @@ const responseTests: ResponseTest[] = [
}
];
-test(async function responseWrite() {
+test(async function responseWrite(): Promise<void> {
for (const testCase of responseTests) {
const buf = new Buffer();
const bufw = new BufWriter(buf);
@@ -75,15 +77,15 @@ test(async function responseWrite() {
localAddr: "",
remoteAddr: "",
rid: -1,
- closeRead: () => {},
- closeWrite: () => {},
- read: async () => {
+ closeRead: (): void => {},
+ closeWrite: (): void => {},
+ read: async (): Promise<Deno.ReadResult> => {
return { eof: true, nread: 0 };
},
- write: async () => {
+ write: async (): Promise<number> => {
return -1;
},
- close: () => {},
+ close: (): void => {},
lastPipelineId: 0,
pendingDeferredMap: new Map([[0, deferred(true)], [1, deferred()]])
};
@@ -93,7 +95,7 @@ test(async function responseWrite() {
}
});
-test(async function requestBodyWithContentLength() {
+test(async function requestBodyWithContentLength(): Promise<void> {
{
const req = new ServerRequest();
req.headers = new Headers();
@@ -117,7 +119,7 @@ test(async function requestBodyWithContentLength() {
}
});
-test(async function requestBodyWithTransferEncoding() {
+test(async function requestBodyWithTransferEncoding(): Promise<void> {
{
const shortText = "Hello";
const req = new ServerRequest();
@@ -166,7 +168,7 @@ test(async function requestBodyWithTransferEncoding() {
}
});
-test(async function requestBodyStreamWithContentLength() {
+test(async function requestBodyStreamWithContentLength(): Promise<void> {
{
const shortText = "Hello";
const req = new ServerRequest();
@@ -201,7 +203,7 @@ test(async function requestBodyStreamWithContentLength() {
}
});
-test(async function requestBodyStreamWithTransferEncoding() {
+test(async function requestBodyStreamWithTransferEncoding(): Promise<void> {
{
const shortText = "Hello";
const req = new ServerRequest();