Import with #import "std/net_http_curl_linux".

CurlInitRoutine :: #type ()
CurlUrl :: 10002
CurlMethod :: 10036
CurlWriteData :: 10001
CurlWriteFunction :: 20011
CurlHeaders :: 10023
CurlAcceptEncoding :: 10102
CurlPostFields :: 10015
CurlPostSize :: 30120
CurlTimeoutMs :: 155
CurlConnectTimeoutMs :: 156
CurlNoSignal :: 99
CurlNoBody :: 44
CurlProxy :: 10004
CurlFollowLocation :: 52
CurlResponseCode :: 2097154
CurlMaxConnects :: 71
CurlPoolSlot :: struct { handle: *void; origin: [512]u8; direct: bool; busy: bool; }
CurlLease :: struct { handle: *void; slot: s32; }
curl_pool: [4]CurlPoolSlot
curl_once: s32
curl_init_result: s32
curl_pool_lock: [8]u64
LockCurlPool :: ()
UnlockCurlPool :: ()
InitCurl :: ()
CurlReady :: () -> bool
CurlOrigin :: (url: string) -> string

Credentials in URL authorities retain a private handle. Normal bearer requests pool by origin and proxy policy, with every option reset afterward.

AcquireCurl :: (url: string, direct: bool) -> CurlLease
ReleaseCurl :: (lease: CurlLease)
CloseCurlConnections :: ()
StartsWith :: (value: string, prefix: string) -> bool
MethodToken :: (value: string) -> bool
HeaderName :: (value: string) -> bool
CurlResult :: struct { status: s32; length: s64; code: s32; truncated: bool; }
CurlOutput :: struct { data: *u8; capacity: s64; length: s64; truncated: bool; }
CurlWriteCallback64 :: #type (data: *u8, size: u64, count: u64, user: *void) -> u64
CurlWriteCallback32 :: #type (data: *u8, size: u32, count: u32, user: *void) -> u32
AppendCurlOutput :: (data: *u8, size: u64, count: u64, context: *CurlOutput) -> u64
CurlWrite64 :: (data: *u8, size: u64, count: u64, user: *void) -> u64
CurlWrite32 :: (data: *u8, size: u32, count: u32, user: *void) -> u32
SetCurlLong :: (handle: *void, option: s32, value: s32) -> bool
ReadCurlStatus :: (handle: *void) -> s32
HeaderText :: (prefix: string, value: string, output: []u8) -> bool
AddCurlHeader :: (headers: **void, prefix: string, value: string, buffer: []u8) -> bool
AddNamedHeader :: (headers: **void, name: string, value: string, buffer: []u8) -> bool
SendCurl :: (request: HttpRequest, output: []u8) -> CurlResult

The caller owns output. It remains NUL terminated, including on failure. HTTP errors retain their status and body for protocol-level decisions.

SendCurlWithin :: (request: HttpRequest, output: []u8, timeout_ms: s32) -> CurlResult

The same request with its own total timeout, for slow services such as model generation. Connecting still has 10 seconds.

SendCurlDirectWithin :: (request: HttpRequest, output: []u8, timeout_ms: s32) -> CurlResult

Bypass inherited proxy settings and never follow redirects. Callers still own URL authorization; this is useful for private local service transports.

SendCurlConfigured :: (request: HttpRequest, output: []u8, timeout_ms: s32, direct: bool) -> CurlResult

Source ↗ · All modules