HTTP
twilight-http
is an HTTP client wrapping all of the documented Discord HTTP API.
It is built on top of Reqwest, and supports taking any generic Reqwest client,
allowing you to pick your own TLS backend. By default, it uses RusTLS a Rust TLS implementation,
but it can be changed to use NativeTLS which uses the TLS native to the platform, and on Unix uses OpenSSL.
Ratelimiting is included out-of-the-box, along with support for proxies.
Features
Deserialization
twilight-gateway
supports serde_json
and simd-json
for deserializing
and serializing events.
SIMD
The simd-json
feature enables usage of simd-json
, which uses modern CPU
features to more efficiently deserialize JSON data. It is not enabled by
default.
In addition to enabling the feature, you will need to add the following to your
<project_root>/.cargo/config
:
[build]
rustflags = ["-C", "target-cpu=native"]
TLS
twilight-http
has features to enable certain HTTPS TLS connectors.
These features are mutually exclusive. rustls
is enabled by default.
Native
The native
feature causes the client to use hyper-tls
. This will use the
native TLS backend, such as OpenSSL on Linux.
RusTLS
The rustls
feature causes the client to use hyper-rustls
. This enables
usage of the RusTLS crate as the TLS backend.
This is enabled by default.
Example
A quick example showing how to get the current user's name:
use std::{env, error::Error}; use twilight_http::Client; #[tokio::main] async fn main() -> Result<(), Box<dyn Error + Send + Sync>> { // Initialize the tracing subscriber. tracing_subscriber::fmt::init(); let client = Client::new(env::var("DISCORD_TOKEN")?); let me = client.current_user().exec().await?.model().await?; println!("Current user: {}#{}", me.name, me.discriminator); Ok(()) }
Links
source: https://github.com/twilight-rs/twilight/tree/main/http
docs: https://docs.rs/twilight-http
crates.io: https://crates.io/crates/twilight-http