Crate cabot

Source
Expand description

§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§

Modules§

  • The HTTP Client that perform query
  • Default values
  • Define results and error. Result<T, CabotError>
  • Low level and internal http and https implementation.
  • HTTP Request handling.
  • HTTP Response handling. The TCP response stream is converted to a Response structure.