Skip to content

lunatic-solutions/nightfly-rs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%