7 releases
0.1.6 | May 9, 2023 |
---|---|
0.1.5 | Apr 17, 2023 |
0.1.4 | Nov 17, 2022 |
#283 in HTTP client
38 downloads per month
Used in lucidity
195KB
3.5K
SLoC
nightfly
This project is an ongoing effort to port the reqwest library to the lunatic runtime
What works:
- json, text and bytes for request and response bodies
- decompression with brotli, gzip and deflate
- redirect handling
- cookies
- chunked responses
- handling of multiple open tcp streams per client
- timeouts (needs some more testing)
- Piping of responses (requires chunk-encoding)
- pooling of connections (needs more usage of lib to find a good approach)
- proxy handling
- upgrade, socks5 support and websockets
- custom dns resolver
An ergonomic, batteries-included HTTP Client for the lunatic runtime written in Rust.
- Plain bodies, JSON, urlencoded, multipart (see examples)
- Redirects with different policies
- HTTPS via lunatic-native TLS (see examples)
- Cookie Store
- Customizable function-based redirect policy (IN PROGRESS)
- HTTP Proxies (IN PROGRESS)
Example
This example uses Lunatic and enables some
optional features, so your Cargo.toml
could look like this:
[dependencies]
nightfly = { "0.1.0" }
lunatic = { "0.12.0" }
And then the code:
use std::collections::HashMap;
#[lunatic::main]
fn main() {
let resp = nightfly::get("https://httpbin.org/ip")
.unwrap()
.json::<HashMap<String, String>>()
.unwrap();
println!("{:#?}", resp);
Ok(())
}
Requirements
- A running version of the lunatic VM.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~19MB
~539K SLoC