#http-request #http #curl #client #sync

idcurl

Idiomatic synchronous http client based on curl

14 releases

0.5.0 May 10, 2024
0.4.3 Jul 12, 2022
0.4.2 Dec 21, 2020
0.4.0 Feb 15, 2020
0.1.1 Jun 17, 2019

#124 in HTTP client

Download history 47/week @ 2024-02-24 1/week @ 2024-03-02 47/week @ 2024-03-30 15/week @ 2024-04-06 102/week @ 2024-05-04 42/week @ 2024-05-11

144 downloads per month

BSD-2-Clause

28KB
724 lines

GitHub license Crates.io

Introduction

idcurl is a synchronous HTTP client using curl (and inheriting all of its protocol support).

It's useful if you absolutely don't want to use futures.

Examples

The most basic request:

let mut output = vec!();
idcurl::get("http://example.com")
	.expect("error making request")
	.copy_to(&mut output)
	.unwrap();

You can also configure your request:

let body = r#"{ "hello": "world" }"#;

let mut response = idcurl::Request::post(
	"http://example.com".to_string()
)
	.header("Content-Type", "application/json")
	.body(std::io::Cursor::new(body))
	.send()
	.expect("http request");
assert!(response.status().is_success());
std::io::copy(&mut response, &mut std::io::stdout())
	.expect("reading response");

lib.rs:

An idiomatic synchronous Rust library for making HTTP requests.

It's implemented in terms of curl.

Example

let mut output = vec!();
idcurl::get("http://example.com")
    .expect("error making request")
    .copy_to(&mut output)
    .unwrap();
let body = r#"{ "hello": "world" }"#;

let mut response = idcurl::Request::post(
    "http://example.com".to_string()
)
    .header("Content-Type", "application/json")
    .body(std::io::Cursor::new(body))
    .send()
    .expect("http request");
assert!(response.status().is_success());
std::io::copy(&mut response, &mut std::io::stdout())
    .expect("reading response");

Dependencies

~14–21MB
~313K SLoC