KEEL 1.0.0
Minimal C11 HTTP client/server library built on epoll/kqueue/io_uring/poll
Loading...
Searching...
No Matches
redirect.h
Go to the documentation of this file.
1
10#ifndef KEEL_REDIRECT_H
11#define KEEL_REDIRECT_H
12
13#include <keel/allocator.h>
14#include <keel/client.h>
15#include <keel/client_pool.h>
16#include <keel/error.h>
17#include <keel/event_ctx.h>
18#include <keel/url.h>
19
20/* ── Constants ────────────────────────────────────────────────────── */
21
23#define KL_REDIRECT_DEFAULT_MAX 10
24
25/* ── Config ───────────────────────────────────────────────────────── */
26
27typedef struct {
30
31/* ── Sync API ─────────────────────────────────────────────────────── */
32
43 const KlRedirectConfig *redir,
44 const char *method, const char *url,
45 const KlClientHeader *headers, int num_headers,
46 const char *body, size_t body_len,
47 KlClientResponse *resp);
48
53 KlAllocator *alloc, const KlClientConfig *cfg,
54 const KlRedirectConfig *redir,
55 const char *method, const char *url,
56 const KlClientHeader *headers, int num_headers,
57 const char *body, size_t body_len,
58 KlClientResponse *resp);
59
60/* ── Async API ────────────────────────────────────────────────────── */
61
63
67typedef void (*KlRedirectDoneFn)(KlRedirectClient *rc, void *user_data);
68
74 const KlClientConfig *cfg,
75 const KlRedirectConfig *redir,
76 const char *method, const char *url,
77 const KlClientHeader *headers, int num_headers,
78 const char *body, size_t body_len,
79 KlRedirectDoneFn on_done, void *user_data);
80
86 KlEventCtx *ev_ctx, KlAllocator *alloc,
87 const KlClientConfig *cfg,
88 const KlRedirectConfig *redir,
89 const char *method, const char *url,
90 const KlClientHeader *headers, int num_headers,
91 const char *body, size_t body_len,
92 KlRedirectDoneFn on_done, void *user_data);
93
99
105
110
115
120
121#endif /* KEEL_REDIRECT_H */
HTTP/1.1 client (sync + async).
HTTP client connection pool.
KlError
Diagnostic error codes for Keel public functions.
Definition error.h:11
KlError kl_redirect_last_error(const KlRedirectClient *rc)
Get the specific error code from a completed redirect request.
void kl_redirect_free(KlRedirectClient *rc)
Free all redirect client resources.
struct KlRedirectClient KlRedirectClient
Definition redirect.h:62
int kl_redirect_error(const KlRedirectClient *rc)
Check if the redirect request completed with an error.
KlRedirectClient * kl_redirect_start_pooled(KlClientPool *pool, KlEventCtx *ev_ctx, KlAllocator *alloc, const KlClientConfig *cfg, const KlRedirectConfig *redir, const char *method, const char *url, const KlClientHeader *headers, int num_headers, const char *body, size_t body_len, KlRedirectDoneFn on_done, void *user_data)
Start an asynchronous pooled HTTP request with redirect following.
int kl_redirect_request(KlAllocator *alloc, const KlClientConfig *cfg, const KlRedirectConfig *redir, const char *method, const char *url, const KlClientHeader *headers, int num_headers, const char *body, size_t body_len, KlClientResponse *resp)
Synchronous HTTP request with automatic redirect following.
const KlClientResponse * kl_redirect_response(const KlRedirectClient *rc)
Get the final response from a completed redirect client.
void kl_redirect_cancel(KlRedirectClient *rc)
Cancel an in-flight redirect request.
KlRedirectClient * kl_redirect_start(KlEventCtx *ev_ctx, KlAllocator *alloc, const KlClientConfig *cfg, const KlRedirectConfig *redir, const char *method, const char *url, const KlClientHeader *headers, int num_headers, const char *body, size_t body_len, KlRedirectDoneFn on_done, void *user_data)
Start an asynchronous HTTP request with automatic redirect following.
int kl_redirect_request_pooled(KlClientPool *pool, KlAllocator *alloc, const KlClientConfig *cfg, const KlRedirectConfig *redir, const char *method, const char *url, const KlClientHeader *headers, int num_headers, const char *body, size_t body_len, KlClientResponse *resp)
Synchronous pooled HTTP request with automatic redirect following.
void(* KlRedirectDoneFn)(KlRedirectClient *rc, void *user_data)
Callback invoked when an async redirect-following request completes.
Definition redirect.h:67
Bring-your-own allocator vtable.
Definition allocator.h:12
Definition client.h:73
Definition client.h:58
Definition client_pool.h:71
Definition client.h:63
Composable event loop context.
Definition event_ctx.h:42
Definition redirect.h:27
int max_redirects
Definition redirect.h:28