updated httpclient to use tables.getOrDefault

This commit is contained in:
Araq 2015-10-14 00:41:04 +02:00
commit f4bfa076ae

View file

@ -166,12 +166,12 @@ proc parseChunks(s: Socket, timeout: int): string =
proc parseBody(s: Socket, headers: StringTableRef, timeout: int): string = proc parseBody(s: Socket, headers: StringTableRef, timeout: int): string =
result = "" result = ""
if headers["Transfer-Encoding"] == "chunked": if headers.getOrDefault"Transfer-Encoding" == "chunked":
result = parseChunks(s, timeout) result = parseChunks(s, timeout)
else: else:
# -REGION- Content-Length # -REGION- Content-Length
# (http://tools.ietf.org/html/rfc2616#section-4.4) NR.3 # (http://tools.ietf.org/html/rfc2616#section-4.4) NR.3
var contentLengthHeader = headers["Content-Length"] var contentLengthHeader = headers.getOrDefault"Content-Length"
if contentLengthHeader != "": if contentLengthHeader != "":
var length = contentLengthHeader.parseint() var length = contentLengthHeader.parseint()
if length > 0: if length > 0:
@ -190,7 +190,7 @@ proc parseBody(s: Socket, headers: StringTableRef, timeout: int): string =
# -REGION- Connection: Close # -REGION- Connection: Close
# (http://tools.ietf.org/html/rfc2616#section-4.4) NR.5 # (http://tools.ietf.org/html/rfc2616#section-4.4) NR.5
if headers["Connection"] == "close": if headers.getOrDefault"Connection" == "close":
var buf = "" var buf = ""
while true: while true:
buf = newString(4000) buf = newString(4000)
@ -456,7 +456,7 @@ proc redirection(status: string): bool =
return true return true
proc getNewLocation(lastUrl: string, headers: StringTableRef): string = proc getNewLocation(lastUrl: string, headers: StringTableRef): string =
result = headers["Location"] result = headers.getOrDefault"Location"
if result == "": httpError("location header expected") if result == "": httpError("location header expected")
# Relative URLs. (Not part of the spec, but soon will be.) # Relative URLs. (Not part of the spec, but soon will be.)
let r = parseUri(result) let r = parseUri(result)
@ -679,12 +679,12 @@ proc parseChunks(client: AsyncHttpClient): Future[string] {.async.} =
proc parseBody(client: AsyncHttpClient, proc parseBody(client: AsyncHttpClient,
headers: StringTableRef): Future[string] {.async.} = headers: StringTableRef): Future[string] {.async.} =
result = "" result = ""
if headers["Transfer-Encoding"] == "chunked": if headers.getOrDefault"Transfer-Encoding" == "chunked":
result = await parseChunks(client) result = await parseChunks(client)
else: else:
# -REGION- Content-Length # -REGION- Content-Length
# (http://tools.ietf.org/html/rfc2616#section-4.4) NR.3 # (http://tools.ietf.org/html/rfc2616#section-4.4) NR.3
var contentLengthHeader = headers["Content-Length"] var contentLengthHeader = headers.getOrDefault"Content-Length"
if contentLengthHeader != "": if contentLengthHeader != "":
var length = contentLengthHeader.parseint() var length = contentLengthHeader.parseint()
if length > 0: if length > 0:
@ -699,7 +699,7 @@ proc parseBody(client: AsyncHttpClient,
# -REGION- Connection: Close # -REGION- Connection: Close
# (http://tools.ietf.org/html/rfc2616#section-4.4) NR.5 # (http://tools.ietf.org/html/rfc2616#section-4.4) NR.5
if headers["Connection"] == "close": if headers.getOrDefault"Connection" == "close":
var buf = "" var buf = ""
while true: while true:
buf = await client.socket.recvFull(4000) buf = await client.socket.recvFull(4000)