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