diff options
Diffstat (limited to 'http')
| -rwxr-xr-x | http/file_server.ts | 53 | ||||
| -rw-r--r-- | http/file_server_test.ts | 6 | ||||
| -rw-r--r-- | http/racing_server.ts | 2 | ||||
| -rw-r--r-- | http/server.ts | 16 | ||||
| -rw-r--r-- | http/server_test.ts | 34 |
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(); |
