Types
BatchedRequest = object verb*: string url*: string headers*: HttpHeaders body*: string tag*: string
- Source Edit
RequestBatch = object
- Source Edit
RequestInfo = object verb*: string ## HTTP method / verb of the request url*: string ## Intitial request URL, before any redirects tag*: string ## Arbtitrary user-provided data when batching requests
- Source Edit
Response = object code*: int ## HTTP status code of the response url*: string ## Final URL, after any redirects headers*: HttpHeaders body*: string ## The response body (uncompressed if gzip'ed) request*: RequestInfo ## Info about the request this response is for
- Source Edit
ResponseBatch = seq[tuple[response: Response, error: string]]
- Source Edit
Procs
proc `[]`(batch: RequestBatch; i: int): lent BatchedRequest {....raises: [], tags: [], forbids: [].}
- Source Edit
proc addRequest(batch: var RequestBatch; verb: sink string; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); body: sink string = ""; tag: sink string = "") {....raises: [], tags: [], forbids: [].}
- Source Edit
proc clearQueue(curl: Curly) {....gcsafe, raises: [], tags: [], forbids: [].}
- Clears the request queue, unblocking any threads waiting on responses. All queued requests are completed with an error. Source Edit
proc delete(batch: var RequestBatch; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); tag: sink string = "") {....raises: [], tags: [], forbids: [].}
- Source Edit
proc delete(curl: Curly; url: string; headers: sink HttpHeaders = emptyHttpHeaders(); timeout = 60): Response {. ...raises: [ZippyError, CatchableError], tags: [], forbids: [].}
- Source Edit
proc get(batch: var RequestBatch; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); tag: sink string = "") {. ...raises: [], tags: [], forbids: [].}
- Source Edit
proc get(curl: Curly; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); timeout = 60): Response {. ...raises: [ZippyError, CatchableError], tags: [], forbids: [].}
- Source Edit
proc hasRequests(curl: Curly): bool {....gcsafe, raises: [], tags: [], forbids: [].}
- Returns true if there are requests in-flight or queued. Source Edit
proc head(batch: var RequestBatch; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); tag: sink string = "") {. ...raises: [], tags: [], forbids: [].}
- Source Edit
proc head(curl: Curly; url: string; headers: sink HttpHeaders = emptyHttpHeaders(); timeout = 60): Response {. ...raises: [ZippyError, CatchableError], tags: [], forbids: [].}
- Source Edit
proc len(batch: RequestBatch): int {....raises: [], tags: [], forbids: [].}
- Source Edit
proc makeRequest(curl: Curly; verb: sink string; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); body: openArray[char] = "".toOpenArray(0, -1); timeout = 60): Response {. ...gcsafe, raises: [ZippyError, CatchableError], tags: [], forbids: [].}
- Makes the HTTP request and blocks until the response is received. If a response cannot be received (due to timeout, DNS failure, broken connection, etc), an exception is raised. Source Edit
proc makeRequest(curl: PCurl; verb: string; url: string; headers = emptyHttpHeaders(); body: openArray[char] = "".toOpenArray(0, -1); timeout: float32 = 60.0): Response {. ...raises: [ZippyError, CatchableError], tags: [], forbids: [].}
- Source Edit
proc makeRequests(curl: Curly; batch: RequestBatch; timeout = 60): ResponseBatch {. ...raises: [], gcsafe, tags: [], forbids: [].}
- Make multiple HTTP requests in parallel. This proc blocks until all requests have either received a response or are unable to complete. The return value seq is in the same order as the request batch. Each request will have either a response or an error in the return seq. If error != "" then something prevented the request from completing. This may be a timeout, DNS error, connection interruption, etc. The error string provides more information. Source Edit
proc newCurlPool(size: int): CurlPool {....raises: [Exception], tags: [], forbids: [].}
- Creates a new thead-safe pool of libcurl handles. Source Edit
proc numInFlight(curl: Curly): int {....gcsafe, raises: [], tags: [], forbids: [].}
- Returns the number of requests currently in-flight. Source Edit
proc patch(batch: var RequestBatch; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); body: sink string = ""; tag: sink string = "") {....raises: [], tags: [], forbids: [].}
- Source Edit
proc patch(curl: Curly; url: string; headers: sink HttpHeaders = emptyHttpHeaders(); body: openArray[char] = "".toOpenArray(0, -1); timeout = 60): Response {. ...raises: [ZippyError, CatchableError], tags: [], forbids: [].}
- Source Edit
proc pollForResponse(curl: Curly): Option[RequestResult] {....raises: [], gcsafe, tags: [], forbids: [].}
- Returns a response to an HTTP request started by either startRequest or startRequests if one is available. Responses returned by this proc are in the order the responses are received, NOT in the order the requests were started. Source Edit
proc post(batch: var RequestBatch; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); body: sink string = ""; tag: sink string = "") {....raises: [], tags: [], forbids: [].}
- Source Edit
proc post(curl: Curly; url: string; headers: sink HttpHeaders = emptyHttpHeaders(); body: openArray[char] = "".toOpenArray(0, -1); timeout = 60): Response {. ...raises: [ZippyError, CatchableError], tags: [], forbids: [].}
- Source Edit
proc put(batch: var RequestBatch; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); body: sink string = ""; tag: sink string = "") {....raises: [], tags: [], forbids: [].}
- Source Edit
proc put(curl: Curly; url: string; headers: sink HttpHeaders = emptyHttpHeaders(); body: openArray[char] = "".toOpenArray(0, -1); timeout = 60): Response {. ...raises: [ZippyError, CatchableError], tags: [], forbids: [].}
- Source Edit
proc startRequest(curl: Curly; verb: sink string; url: sink string; headers: sink HttpHeaders = emptyHttpHeaders(); body: sink string = ""; timeout = 60; tag: sink string = "") {. ...raises: [], gcsafe, tags: [], forbids: [].}
- Starts an HTTP request. These requests are run in parallel. This proc does not block waiting for a response. NOTE: When the request completes, a response is stored until it is removed by a call to waitForResponse. If the responses are never removed, they will accumulate in memory. Source Edit
proc startRequests(curl: Curly; batch: sink RequestBatch; timeout = 60) {. ...raises: [], gcsafe, tags: [], forbids: [].}
- Starts one or more HTTP requests. These requests are run in parallel. This proc does not block waiting for responses. NOTE: When each request completes, a response is stored until it is removed by a call to waitForResponse or pollForResponse. If the responses are never removed, they will accumulate in memory. Source Edit
proc waitForResponse(curl: Curly): tuple[response: Response, error: string] {. ...raises: [], gcsafe, tags: [], forbids: [].}
- Blocks waiting for a response to an HTTP request started by either startRequest or startRequests. Responses returned by this proc are in the order the responses are received, NOT in the order the requests were started. Source Edit
Templates
template withHandle(pool: CurlPool; handle, body)
- Source Edit