Crate cabot[][src]

cabot

cabot is a command line tool and a rust library for sending HTTP query. It is a simple implementation of HTTP based on the rust standard library to perform TCP and DNS query, and use rustls for handling HTTPS connection. No tiers library are used for HTTP protocol.

cabot is inspired by the cURL command line tool, but focus on the http protocol which is the referent in HTTP client library.

Examples:

Command Line:

$ cargo run -- https://www.rust-lang.org/ 2>&1| head -n 20 | grep 'name="description"'
    <meta name="description" content="A language empowering everyone to build reliable and efficient software.">

Library:

use async_std::task;
use cabot::{RequestBuilder, Client};

let request = RequestBuilder::new("https://www.rust-lang.org/")
    .build()
    .unwrap();
let client = Client::new();
let response = task::block_on(async {client.execute(&request).await.unwrap()});
assert!(response.body_as_string().unwrap().contains("Rust is blazingly fast and memory-efficient"));

Features

There is no default features set.

  • pretty_log: add pretty_env_logger dependency.

If set, pretty_env_logger is initalize for the CLI command, it has no effect as using cabot as a library.

Usage:

RUST_LOG=cabot cargo run --features=pretty_log --

  • json: add serde_json dependency.

If set, the RequestBuilder struct as a method set_body_as_json(), in order to serialize a struct that implement serde Serialize using serde_json, and the Response structure a method json() that deserialize a json to an object implementing serde Deserialize using serde_json.

Why cabot ?

To get a simple rust native https client. No binding to OpenSSL.

License

BSD 3-Clause License

Re-exports

pub use client::Client;
pub use request::RequestBuilder;

Modules

client

The HTTP Client that perform query

constants

Default values

errors

Define results and error. Result<T, CabotError>

http

Low level and internal http and https implementation.

request

HTTP Request handling.

response

HTTP Response handling. The TCP response stream is converted to a Response structure.

results