trillium_client/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(
3    clippy::dbg_macro,
4    missing_copy_implementations,
5    rustdoc::missing_crate_level_docs,
6    missing_debug_implementations,
7    missing_docs,
8    nonstandard_style,
9    unused_qualifications
10)]
11
12/*!
13trillium client is a http client that uses the same `conn` approach as
14[`trillium`](https://trillium.rs) but which can be used
15independently for any http client application.
16
17## Connector
18
19[`trillium_client::Client`] is built with a Connector. Each runtime crate
20([`trillium_smol`](https://docs.trillium.rs/trillium_smol),
21[`trillium_tokio`](https://docs.trillium.rs/trillium_tokio),
22[`trillium_async_std`](https://docs.trillium.rs/trillium_tokio)) offers
23a Connector implementation, which can optionally be combined with a
24tls crate such as
25[`trillium_rustls`](https://docs.trillium.rs/trillium_rustls) or
26[`trillium_native_tls`](https://docs.trillium.rs/trillium_native_tls).
27
28See the documentation for [`Client`] and [`Conn`] for further usage
29examples.
30
31*/
32
33mod conn;
34pub use conn::{Conn, UnexpectedStatusError, USER_AGENT};
35
36#[cfg(feature = "json")]
37pub use conn::ClientSerdeError;
38
39#[cfg(feature = "websockets")]
40pub mod websocket;
41#[cfg(feature = "websockets")]
42pub use trillium_websockets::{async_tungstenite, tungstenite, WebSocketConfig, WebSocketConn};
43#[cfg(feature = "websockets")]
44pub use websocket::WebSocketUpgradeError;
45
46mod pool;
47// open an issue if you have a reason for pool to be public
48pub(crate) use pool::Pool;
49
50mod client;
51pub use client::Client;
52
53pub use trillium_http::{
54    Body, Error, HeaderName, HeaderValue, HeaderValues, Headers, KnownHeaderName, Method, Result,
55    Status, Version,
56};
57
58mod util;
59
60pub use trillium_server_common::{async_trait, Connector, ObjectSafeConnector, Url};
61
62/// constructs a new [`Client`] -- alias for [`Client::new`]
63pub fn client(connector: impl Connector) -> Client {
64    Client::new(connector)
65}
66
67mod into_url;
68pub use into_url::IntoUrl;