nightfly

Crates.ionightfly
lib.rsnightfly
version0.1.6
sourcesrc
created_at2022-11-17 12:01:26.789783
updated_at2023-05-09 12:42:30.969087
descriptionhigher level HTTP client library for the lunatic runtime
homepage
repositoryhttps://github.com/SquattingSocrates/nightfly
max_upload_size
id717160
size339,642
Yuriy Voshchepynets (SquattingSocrates)

documentation

https://docs.rs/nightfly

README

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.

Commit count: 919

cargo fmt