Contains functionality shared between the httpclient
and asynchttpserver
modules.
HttpHeaders = ref object table*: TableRef[string, seq[string]]
HttpHeaderValues = distinct seq[string]
HttpCode = distinct range[0 .. 599]
HttpVersion = enum HttpVer11, HttpVer10
HttpMethod = enum HttpHead, ## Asks for the response identical to the one that would ## correspond to a GET request, but without the response ## body. HttpGet, ## Retrieves the specified resource. HttpPost, ## Submits data to be processed to the identified ## resource. The data is included in the body of the ## request. HttpPut, ## Uploads a representation of the specified resource. HttpDelete, ## Deletes the specified resource. HttpTrace, ## Echoes back the received request, so that a client ## can see what intermediate servers are adding or ## changing in the request. HttpOptions, ## Returns the HTTP methods that the server supports ## for specified address. HttpConnect, ## Converts the request connection to a transparent ## TCP/IP tunnel, usually used for proxies. HttpPatch ## Applies partial modifications to a resource.
Http100 = 100
Http101 = 101
Http200 = 200
Http201 = 201
Http202 = 202
Http203 = 203
Http204 = 204
Http205 = 205
Http206 = 206
Http300 = 300
Http301 = 301
Http302 = 302
Http303 = 303
Http304 = 304
Http305 = 305
Http307 = 307
Http400 = 400
Http401 = 401
Http403 = 403
Http404 = 404
Http405 = 405
Http406 = 406
Http407 = 407
Http408 = 408
Http409 = 409
Http410 = 410
Http411 = 411
Http412 = 412
Http413 = 413
Http414 = 414
Http415 = 415
Http416 = 416
Http417 = 417
Http418 = 418
Http421 = 421
Http422 = 422
Http426 = 426
Http428 = 428
Http429 = 429
Http431 = 431
Http451 = 451
Http500 = 500
Http501 = 501
Http502 = 502
Http503 = 503
Http504 = 504
Http505 = 505
headerLimit = 10000
proc newHttpHeaders(): HttpHeaders {...}{.raises: [], tags: [].}
proc newHttpHeaders(keyValuePairs: openArray[tuple[key: string, val: string]]): HttpHeaders {...}{. raises: [], tags: [].}
proc `$`(headers: HttpHeaders): string {...}{.raises: [], tags: [].}
proc clear(headers: HttpHeaders) {...}{.raises: [], tags: [].}
proc `[]`(headers: HttpHeaders; key: string): HttpHeaderValues {...}{.raises: [KeyError], tags: [].}
Returns the values associated with the given key
. If the returned values are passed to a procedure expecting a string
, the first value is automatically picked. If there are no values associated with the key, an exception is raised.
To access multiple values of a key, use the overloaded []
below or to get all of them access the table
field directly.
proc `[]`(headers: HttpHeaders; key: string; i: int): string {...}{.raises: [KeyError], tags: [].}
i
'th value associated with the given key. If there are no values associated with the key or the i
'th value doesn't exist, an exception is raised. proc `[]=`(headers: HttpHeaders; key, value: string) {...}{.raises: [], tags: [].}
key
to the specified value. Replaces any existing values. proc `[]=`(headers: HttpHeaders; key: string; value: seq[string]) {...}{.raises: [], tags: [].}
key
to the specified list of values. Replaces any existing values. proc add(headers: HttpHeaders; key, value: string) {...}{.raises: [KeyError], tags: [].}
proc del(headers: HttpHeaders; key: string) {...}{.raises: [], tags: [].}
key
proc contains(values: HttpHeaderValues; value: string): bool {...}{.raises: [], tags: [].}
value
is one of the values inside values
. Comparison is performed without case sensitivity. proc hasKey(headers: HttpHeaders; key: string): bool {...}{.raises: [], tags: [].}
proc getOrDefault(headers: HttpHeaders; key: string; default = @[""].HttpHeaderValues): HttpHeaderValues {...}{. raises: [KeyError], tags: [].}
key
. If there are no values associated with the key, then default
is returned. proc len(headers: HttpHeaders): int {...}{.raises: [], tags: [].}
proc parseHeader(line: string): tuple[key: string, value: seq[string]] {...}{.raises: [], tags: [].}
Parses a single raw header HTTP line into key value pairs.
Used by asynchttpserver
and httpclient
internally and should not be used by you.
proc `==`(protocol: tuple[orig: string, major, minor: int]; ver: HttpVersion): bool {...}{. raises: [], tags: [].}
proc contains(methods: set[HttpMethod]; x: string): bool {...}{.raises: [ValueError], tags: [].}
proc `$`(code: HttpCode): string {...}{.raises: [], tags: [].}
Converts the specified HttpCode
into a HTTP status.
For example:
doAssert($Http404 == "404 Not Found")
proc `==`(a, b: HttpCode): bool {...}{.borrow.}
proc `==`(rawCode: string; code: HttpCode): bool {...}{.raises: [], tags: [].}
proc is2xx(code: HttpCode): bool {...}{.raises: [], tags: [].}
code
is a 2xx HTTP status code. proc is3xx(code: HttpCode): bool {...}{.raises: [], tags: [].}
code
is a 3xx HTTP status code. proc is4xx(code: HttpCode): bool {...}{.raises: [], tags: [].}
code
is a 4xx HTTP status code. proc is5xx(code: HttpCode): bool {...}{.raises: [], tags: [].}
code
is a 5xx HTTP status code. proc `$`(httpMethod: HttpMethod): string {...}{.raises: [], tags: [].}
iterator pairs(headers: HttpHeaders): tuple[key, value: string] {...}{.raises: [], tags: [].}
converter toString(values: HttpHeaderValues): string {...}{.raises: [], tags: [].}
© 2006–2018 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/httpcore.html