diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2019-10-03 16:45:45 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-10-04 09:48:45 +0200 |
commit | 68ce808db131081a565e9fb2dfca3d66197d8175 (patch) | |
tree | 05c58e873f67a8514957bf08a0d6da49b35a7bbb /lib | |
parent | 64acc9dbfba5a59a65b496c0b4a2d41be4ba5a23 (diff) | |
download | Nim-68ce808db131081a565e9fb2dfca3d66197d8175.tar.gz |
minor optimization for asynchttpserver.nim
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/asynchttpserver.nim | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/lib/pure/asynchttpserver.nim b/lib/pure/asynchttpserver.nim index 2f0420cd7..186f0da41 100644 --- a/lib/pure/asynchttpserver.nim +++ b/lib/pure/asynchttpserver.nim @@ -128,20 +128,6 @@ proc parseProtocol(protocol: string): tuple[orig: string, major, minor: int] = proc sendStatus(client: AsyncSocket, status: string): Future[void] = client.send("HTTP/1.1 " & status & "\c\L\c\L") -proc parseUppercaseMethod(name: string): HttpMethod = - result = - case name - of "GET": HttpGet - of "POST": HttpPost - of "HEAD": HttpHead - of "PUT": HttpPut - of "DELETE": HttpDelete - of "PATCH": HttpPatch - of "OPTIONS": HttpOptions - of "CONNECT": HttpConnect - of "TRACE": HttpTrace - else: raise newException(ValueError, "Invalid HTTP method " & name) - proc processRequest( server: AsyncHttpServer, req: FutureVar[Request], @@ -187,9 +173,17 @@ proc processRequest( for linePart in lineFut.mget.split(' '): case i of 0: - try: - request.reqMethod = parseUppercaseMethod(linePart) - except ValueError: + case linePart + of "GET": request.reqMethod = HttpGet + of "POST": request.reqMethod = HttpPost + of "HEAD": request.reqMethod = HttpHead + of "PUT": request.reqMethod = HttpPut + of "DELETE": request.reqMethod = HttpDelete + of "PATCH": request.reqMethod = HttpPatch + of "OPTIONS": request.reqMethod = HttpOptions + of "CONNECT": request.reqMethod = HttpConnect + of "TRACE": request.reqMethod = HttpTrace + else: asyncCheck request.respondError(Http400) return true # Retry processing of request of 1: @@ -242,8 +236,7 @@ proc processRequest( # - Check for Content-length header if request.headers.hasKey("Content-Length"): var contentLength = 0 - if parseSaturatedNatural(request.headers["Content-Length"], - contentLength) == 0: + if parseSaturatedNatural(request.headers["Content-Length"], contentLength) == 0: await request.respond(Http400, "Bad Request. Invalid Content-Length.") return true else: |