rig-http 0.45.0

Rig's transport contracts: the HTTP client and websocket traits a transport implements, and the wasm-compatible bounds they are written with.
Documentation

rig-http

The transport contracts every Rig provider sends through:

  • http_client: HttpClientExt, the trait a transport implements; DynHttpClient, an erased client with middleware (HttpMiddleware); request framing, multipart forms and the error type;
  • ws_client (feature websocket): the websocket connection contract the Responses WebSocket session is written against;
  • wasm_compat: the Send/Sync bounds and boxed futures that relax on browser wasm;
  • runtime (feature tokio, native): the tokio runtime the bundled transports poll their I/O in, from any executor.

This crate has no transport of its own. rig-reqwest (HTTP) and rig-tungstenite (websocket) are the bundled transports, and depend only on this crate. rig-core re-exports these modules at rig_core::http_client, rig_core::ws_client and rig_core::wasm_compat, so provider code and users reach them there.

A transport author depends on rig-http alone and implements HttpClientExt:

use rig_http::http_client::{HttpClientExt, DynHttpClient};

fn erase(client: impl HttpClientExt + Clone + 'static) -> DynHttpClient {
    DynHttpClient::new(client)
}

The test-utils feature adds HTTP client doubles for tests.