HTTP support for the twilight ecosystem.
There are a few usage examples located in the root of the twilight
repository.
The decompression
feature enables brotli decompression support via the [brotli
] crate.
This is enabled by default.
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" }
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
.
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.