12 releases

0.2.1 Oct 3, 2025
0.1.10 Dec 11, 2024
0.1.8 Oct 28, 2024
0.1.6 Jul 23, 2024
0.1.1 Mar 6, 2024

#1105 in Network programming

Download history 269/week @ 2025-08-13 204/week @ 2025-08-20 192/week @ 2025-08-27 206/week @ 2025-09-03 151/week @ 2025-09-10 124/week @ 2025-09-17 170/week @ 2025-09-24 237/week @ 2025-10-01 148/week @ 2025-10-08 99/week @ 2025-10-15 110/week @ 2025-10-22 93/week @ 2025-10-29 135/week @ 2025-11-05 165/week @ 2025-11-12 107/week @ 2025-11-19 81/week @ 2025-11-26

488 downloads per month

BSD-2-Clause

63KB
862 lines

🛰️ Fibreq (FIBer REQuests)

Fibreq is non-blocking HTTP client designed specifically for the Tarantool ecosystem, leveraging the Tarantool's fiber capabilities. It aims to provide a robust, feature-rich alternative for making HTTP(S) requests directly from Tarantool instances, inspired by the ease of use seen in libraries like reqwest but tailored for Tarantool's unique environment.

✨Features

  • Non-blocking Nature: Utilizes Tarantool's fiber system for efficient, non-blocking I/O operations.
  • Connection Pooling: Enhances performance by reusing connections across multiple requests, minimizing the overhead of establishing new connections.
  • Comprehensive Timeout Controls: Offers detailed timeout configurations for connection establishment, request sending, and response reading to avoid hanging requests.
  • HTTPS Support: Secures your data with TLS support for HTTPS requests, ensuring your connections are encrypted and safe.
  • Flexible Request Building: Simplifies creating complex requests with a convenient builder pattern, supporting various content types, headers, and body content.
  • Error Handling: Provides clear and actionable errors, making debugging and error resolution straightforward.

📦 Installation

Add Fibreq to your Cargo.toml:

[dependencies]
fibreq = "0.1.0"

🚀 Quick Start

fn request() -> Result<(), fibreq::error::Error> {
    let client = fibreq::ClientBuilder::new().build();
    let response = client.get("https://google.ru").unwrap().send().unwrap();

    println!("Status: {}", response.status());
    if let Ok(text) = response.text() {
        println!("Body: {}", text);
    }
    Ok(())
}

Dependencies

~14–31MB
~448K SLoC