#http #client #curl #sync

idcurl

Idiomatic synchronous http client based on curl

6 releases

✓ Uses Rust 2018 edition

0.2.3 Jun 20, 2019
0.2.2 Jun 19, 2019
0.1.1 Jun 17, 2019

#4 in #sync

35 downloads per month

BSD-2-Clause

28KB
766 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(
	url::Url::parse("http://example.com").unwrap()
)
	.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(
    url::Url::parse("http://example.com").unwrap()
)
    .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

~13MB
~255K SLoC