twilight-http

codecov badge discord badge github badge license badge ![rust badge]

HTTP support for the twilight ecosystem.

Examples

There are a few usage examples located in the root of the twilight repository.

Features

Decompression

The decompression feature enables brotli decompression support via the [brotli] crate.

This is enabled by default.

Deserialization

twilight-http supports [serde_json] and [simd-json] for deserializing responses.

simd-json

The simd-json feature enables [simd-json] support to use simd features of modern cpus to deserialize responses faster. It is not enabled by default.

To use this feature you need to also add these lines to <project root>/.cargo/config:

toml [build] rustflags = ["-C", "target-cpu=native"]

You can also set the environment variable RUSTFLAGS="-C target-cpu=native". If you enable both serde_json and simd-json at the same time, then simd-json will be used.

To enable simd-json, do something like this in your Cargo.toml:

toml [dependencies] twilight-http = { default-features = false, features = ["rustls-native-roots", "simd-json"], version = "0.2" }

TLS

Note: not enabling any TLS feature is supported for use behind a proxy; Discord's API is HTTPS only.

twilight-http has features to enable HTTPS connectivity with [hyper]. These features are mutually exclusive. rustls-native-roots is enabled by default.

native

The native feature uses a HTTPS connector provided by [hyper-tls].

To enable native, do something like this in your Cargo.toml:

toml [dependencies] twilight-http = { default-features = false, features = ["native"], version = "0.2" }

rustls-native-roots

The rustls-native-roots feature uses a HTTPS connector provided by [hyper-rustls], which uses [rustls] as the TLS backend, and enables its native-tokio feature, which uses [rustls-native-certs] for root certificates.

This is enabled by default.

rustls-webpki-roots

The rustls-webpki-roots feature uses a HTTPS connector provided by [hyper-rustls], which uses [rustls] as the TLS backend, and enables its webpki-tokio feature, which uses [webpki-roots] for root certificates.

This should be preferred over rustls-native-roots in Docker containers based on scratch.

Trust-DNS

The trust-dns enables [hyper-trust-dns], which replaces the default GaiResolver in [hyper]. [hyper-trust-dns] instead provides a fully async DNS resolver on the application level.