#request #http-request #request-response #http #client

nightfly-twitchax-patch

higher level HTTP client library for the lunatic runtime

1 unstable release

0.1.6 Jan 20, 2024

#466 in HTTP client

MIT/Apache

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

MIT/Apache-2 licensed CI

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

License

Licensed under either of

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
~545K SLoC