isahc 0.9.11

The practical HTTP client that is fun to use.
Documentation
use isahc::prelude::*;
use std::{io, time::Duration};
use testserver::mock;

#[test]
fn metrics_are_disabled_by_default() {
    let m = mock!();

    let response = isahc::get(m.url()).unwrap();

    assert!(!m.requests().is_empty());
    assert!(response.metrics().is_none());
}

#[test]
fn enabling_metrics_causes_metrics_to_be_collected() {
    let m = mock! {
        delay: 10ms,
        body: "hello world",
    };

    let client = isahc::HttpClient::builder()
        .metrics(true)
        .build()
        .unwrap();

    let mut response = client.send(Request::post(m.url())
        .body("hello server")
        .unwrap())
        .unwrap();

    let metrics = response.metrics().unwrap().clone();

    assert_eq!(metrics.upload_progress(), (12, 12));

    io::copy(response.body_mut(), &mut io::sink()).unwrap();

    assert_eq!(metrics.download_progress().0, 11);
    assert!(metrics.total_time() > Duration::default());
}