feignhttp 0.6.0

Declarative HTTP client for rust
Documentation
#![allow(unused_imports)]
use feignhttp::{HttpClient, HttpResponse, RequestBuilder};

#[tokio::test]
async fn test_send_multipart() {
    #[cfg(feature = "multipart")]
    {
        use feignhttp::multipart;

        // The Vec<u8> from https://www.rust-lang.org/static/images/rust-logo-blk.svg.
        let file_u8 = vec![
            60, 115, 118, 103, 32, 104, 101, 105, 103, 104, 116, 61, 34, 49, 52, 52, 34, 32, 119,
            105, 100, 116, 104, 61, 34, 49, 52, 52, 34, 32, 120, 109, 108, 110, 115, 61, 34, 104,
            116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48,
            48, 48, 47, 115, 118, 103, 34, 62, 60, 112, 97, 116, 104, 32, 100, 61, 34, 109, 55, 49,
            46, 48, 53, 32, 50, 51, 46, 54, 56, 99, 45, 50, 54, 46, 48, 54, 32, 48, 45, 52, 55, 46,
            50, 55, 32, 50, 49, 46, 50, 50, 45, 52, 55, 46, 50, 55, 32, 52, 55, 46, 50, 55, 115,
            50, 49, 46, 50, 50, 32, 52, 55, 46, 50, 55, 32, 52, 55, 46, 50, 55, 32, 52, 55, 46, 50,
            55, 32, 52, 55, 46, 50, 55, 45, 50, 49, 46, 50, 50, 32, 52, 55, 46, 50, 55, 45, 52, 55,
            46, 50, 55, 45, 50, 49, 46, 50, 50, 45, 52, 55, 46, 50, 55, 45, 52, 55, 46, 50, 55, 45,
            52, 55, 46, 50, 55, 122, 109, 45, 46, 48, 55, 32, 52, 46, 50, 97, 51, 46, 49, 32, 51,
            46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46,
            49, 49, 32, 51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32,
            51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46,
            49, 49, 122, 109, 55, 46, 49, 50, 32, 53, 46, 49, 50, 97, 51, 56, 46, 50, 55, 32, 51,
            56, 46, 50, 55, 32, 48, 32, 48, 32, 49, 32, 50, 54, 46, 50, 32, 49, 56, 46, 54, 54,
            108, 45, 51, 46, 54, 55, 32, 56, 46, 50, 56, 99, 45, 46, 54, 51, 32, 49, 46, 52, 51,
            46, 48, 50, 32, 51, 46, 49, 49, 32, 49, 46, 52, 52, 32, 51, 46, 55, 53, 108, 55, 46,
            48, 54, 32, 51, 46, 49, 51, 97, 51, 56, 46, 50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32,
            48, 32, 49, 32, 46, 48, 56, 32, 54, 46, 54, 52, 104, 45, 51, 46, 57, 51, 99, 45, 46,
            51, 57, 32, 48, 45, 46, 53, 53, 46, 50, 54, 45, 46, 53, 53, 46, 54, 52, 118, 49, 46,
            56, 99, 48, 32, 52, 46, 50, 52, 45, 50, 46, 51, 57, 32, 53, 46, 49, 55, 45, 52, 46, 52,
            57, 32, 53, 46, 52, 45, 50, 32, 46, 50, 51, 45, 52, 46, 50, 49, 45, 46, 56, 52, 45, 52,
            46, 52, 57, 45, 50, 46, 48, 54, 45, 49, 46, 49, 56, 45, 54, 46, 54, 51, 45, 51, 46, 49,
            52, 45, 56, 46, 48, 52, 45, 54, 46, 50, 52, 45, 49, 48, 46, 52, 57, 32, 51, 46, 56, 53,
            45, 50, 46, 52, 52, 32, 55, 46, 56, 53, 45, 54, 46, 48, 53, 32, 55, 46, 56, 53, 45, 49,
            48, 46, 56, 55, 32, 48, 45, 53, 46, 50, 49, 45, 51, 46, 53, 55, 45, 56, 46, 52, 57, 45,
            54, 45, 49, 48, 46, 49, 45, 51, 46, 52, 50, 45, 50, 46, 50, 53, 45, 55, 46, 50, 45, 50,
            46, 55, 45, 56, 46, 50, 50, 45, 50, 46, 55, 104, 45, 52, 48, 46, 54, 97, 51, 56, 46,
            50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32, 48, 32, 49, 32, 50, 49, 46, 52, 49, 45, 49,
            50, 46, 48, 56, 108, 52, 46, 55, 57, 32, 53, 46, 48, 50, 99, 49, 46, 48, 56, 32, 49,
            46, 49, 51, 32, 50, 46, 56, 55, 32, 49, 46, 49, 56, 32, 52, 32, 46, 48, 57, 122, 109,
            45, 52, 52, 46, 50, 32, 50, 51, 46, 48, 50, 97, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32,
            48, 32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 51,
            46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32, 51, 46, 49, 49,
            32, 51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46, 49, 49, 122,
            109, 55, 52, 46, 49, 53, 46, 49, 52, 97, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 48,
            32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 51, 46,
            49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32, 51, 46, 49, 49, 32,
            51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46, 49, 49, 122, 109,
            45, 54, 56, 46, 50, 57, 46, 53, 104, 53, 46, 52, 50, 118, 50, 52, 46, 52, 52, 104, 45,
            49, 48, 46, 57, 52, 97, 51, 56, 46, 50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32, 48, 32,
            49, 32, 45, 49, 46, 50, 52, 45, 49, 52, 46, 54, 49, 108, 54, 46, 55, 45, 50, 46, 57,
            56, 99, 49, 46, 52, 51, 45, 46, 54, 52, 32, 50, 46, 48, 56, 45, 50, 46, 51, 49, 32, 49,
            46, 52, 52, 45, 51, 46, 55, 52, 122, 109, 50, 50, 46, 54, 50, 46, 50, 54, 104, 49, 50,
            46, 57, 49, 99, 46, 54, 55, 32, 48, 32, 52, 46, 55, 49, 46, 55, 55, 32, 52, 46, 55, 49,
            32, 51, 46, 56, 32, 48, 32, 50, 46, 53, 49, 45, 51, 46, 49, 32, 51, 46, 52, 49, 45, 53,
            46, 54, 53, 32, 51, 46, 52, 49, 104, 45, 49, 49, 46, 57, 56, 122, 109, 48, 32, 49, 55,
            46, 53, 54, 104, 57, 46, 56, 57, 99, 46, 57, 32, 48, 32, 52, 46, 56, 51, 46, 50, 54,
            32, 54, 46, 48, 56, 32, 53, 46, 50, 56, 46, 51, 57, 32, 49, 46, 53, 52, 32, 49, 46, 50,
            54, 32, 54, 46, 53, 54, 32, 49, 46, 56, 53, 32, 56, 46, 49, 55, 46, 53, 57, 32, 49, 46,
            56, 32, 50, 46, 57, 56, 32, 53, 46, 52, 32, 53, 46, 53, 51, 32, 53, 46, 52, 104, 49,
            54, 46, 49, 52, 97, 51, 56, 46, 50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32, 48, 32, 49,
            32, 45, 51, 46, 53, 52, 32, 52, 46, 49, 108, 45, 54, 46, 53, 55, 45, 49, 46, 52, 49,
            99, 45, 49, 46, 53, 51, 45, 46, 51, 51, 45, 51, 46, 48, 52, 46, 54, 53, 45, 51, 46, 51,
            55, 32, 50, 46, 49, 56, 108, 45, 49, 46, 53, 54, 32, 55, 46, 50, 56, 97, 51, 56, 46,
            50, 55, 32, 51, 56, 46, 50, 55, 32, 48, 32, 48, 32, 49, 32, 45, 51, 49, 46, 57, 49, 45,
            46, 49, 53, 108, 45, 49, 46, 53, 54, 45, 55, 46, 50, 56, 99, 45, 46, 51, 51, 45, 49,
            46, 53, 51, 45, 49, 46, 56, 51, 45, 50, 46, 53, 49, 45, 51, 46, 51, 54, 45, 50, 46, 49,
            56, 108, 45, 54, 46, 52, 51, 32, 49, 46, 51, 56, 97, 51, 56, 46, 50, 55, 32, 51, 56,
            46, 50, 55, 32, 48, 32, 48, 32, 49, 32, 45, 51, 46, 51, 50, 45, 51, 46, 57, 50, 104,
            51, 49, 46, 50, 55, 99, 46, 51, 53, 32, 48, 32, 46, 53, 57, 45, 46, 48, 54, 46, 53, 57,
            45, 46, 51, 57, 118, 45, 49, 49, 46, 48, 54, 99, 48, 45, 46, 51, 50, 45, 46, 50, 52,
            45, 46, 51, 57, 45, 46, 53, 57, 45, 46, 51, 57, 104, 45, 57, 46, 49, 53, 122, 109, 45,
            49, 52, 46, 52, 51, 32, 50, 53, 46, 51, 51, 97, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32,
            48, 32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 51,
            46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32, 51, 46, 49, 49,
            32, 51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46, 49, 49, 122,
            109, 52, 54, 46, 48, 53, 46, 49, 52, 97, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 48,
            32, 48, 32, 49, 32, 51, 46, 48, 50, 32, 51, 46, 49, 49, 32, 51, 46, 49, 49, 32, 51, 46,
            49, 49, 32, 48, 32, 48, 32, 49, 32, 45, 54, 46, 50, 50, 32, 48, 32, 51, 46, 49, 49, 32,
            51, 46, 49, 49, 32, 48, 32, 48, 32, 49, 32, 51, 46, 50, 45, 51, 46, 49, 49, 122, 34,
            47, 62, 60, 112, 97, 116, 104, 32, 100, 61, 34, 109, 49, 49, 53, 46, 54, 56, 32, 55,
            48, 46, 57, 53, 97, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 48, 32, 48, 32, 49,
            32, 45, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 52, 52,
            46, 54, 51, 32, 48, 32, 48, 32, 49, 32, 45, 52, 52, 46, 54, 51, 45, 52, 52, 46, 54, 51,
            32, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 48, 32, 48, 32, 49, 32, 52, 52, 46,
            54, 51, 45, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 32, 48,
            32, 48, 32, 49, 32, 52, 52, 46, 54, 51, 32, 52, 52, 46, 54, 51, 122, 109, 45, 46, 56,
            52, 45, 52, 46, 51, 49, 32, 54, 46, 57, 54, 32, 52, 46, 51, 49, 45, 54, 46, 57, 54, 32,
            52, 46, 51, 49, 32, 53, 46, 57, 56, 32, 53, 46, 53, 57, 45, 55, 46, 54, 54, 32, 50, 46,
            56, 55, 32, 52, 46, 55, 56, 32, 54, 46, 54, 53, 45, 56, 46, 48, 57, 32, 49, 46, 51, 50,
            32, 51, 46, 52, 32, 55, 46, 52, 54, 45, 56, 46, 49, 57, 45, 46, 50, 57, 32, 49, 46, 56,
            56, 32, 55, 46, 57, 56, 45, 55, 46, 57, 56, 45, 49, 46, 56, 56, 46, 50, 57, 32, 56, 46,
            49, 57, 45, 55, 46, 52, 54, 45, 51, 46, 52, 45, 49, 46, 51, 50, 32, 56, 46, 48, 57, 45,
            54, 46, 54, 53, 45, 52, 46, 55, 56, 45, 50, 46, 56, 55, 32, 55, 46, 54, 54, 45, 53, 46,
            53, 57, 45, 53, 46, 57, 56, 45, 52, 46, 51, 49, 32, 54, 46, 57, 54, 45, 52, 46, 51, 49,
            45, 54, 46, 57, 54, 45, 53, 46, 53, 57, 32, 53, 46, 57, 56, 45, 50, 46, 56, 55, 45, 55,
            46, 54, 54, 45, 54, 46, 54, 53, 32, 52, 46, 55, 56, 45, 49, 46, 51, 50, 45, 56, 46, 48,
            57, 45, 55, 46, 52, 54, 32, 51, 46, 52, 46, 50, 57, 45, 56, 46, 49, 57, 45, 55, 46, 57,
            56, 32, 49, 46, 56, 56, 32, 49, 46, 56, 56, 45, 55, 46, 57, 56, 45, 56, 46, 49, 57, 46,
            50, 57, 32, 51, 46, 52, 45, 55, 46, 52, 54, 45, 56, 46, 48, 57, 45, 49, 46, 51, 50, 32,
            52, 46, 55, 56, 45, 54, 46, 54, 53, 45, 55, 46, 54, 54, 45, 50, 46, 56, 55, 32, 53, 46,
            57, 56, 45, 53, 46, 53, 57, 45, 54, 46, 57, 54, 45, 52, 46, 51, 49, 32, 54, 46, 57, 54,
            45, 52, 46, 51, 49, 45, 53, 46, 57, 56, 45, 53, 46, 53, 57, 32, 55, 46, 54, 54, 45, 50,
            46, 56, 55, 45, 52, 46, 55, 56, 45, 54, 46, 54, 53, 32, 56, 46, 48, 57, 45, 49, 46, 51,
            50, 45, 51, 46, 52, 45, 55, 46, 52, 54, 32, 56, 46, 49, 57, 46, 50, 57, 45, 49, 46, 56,
            56, 45, 55, 46, 57, 56, 32, 55, 46, 57, 56, 32, 49, 46, 56, 56, 45, 46, 50, 57, 45, 56,
            46, 49, 57, 32, 55, 46, 52, 54, 32, 51, 46, 52, 32, 49, 46, 51, 50, 45, 56, 46, 48, 57,
            32, 54, 46, 54, 53, 32, 52, 46, 55, 56, 32, 50, 46, 56, 55, 45, 55, 46, 54, 54, 32, 53,
            46, 53, 57, 32, 53, 46, 57, 56, 32, 52, 46, 51, 49, 45, 54, 46, 57, 54, 32, 52, 46, 51,
            49, 32, 54, 46, 57, 54, 32, 53, 46, 53, 57, 45, 53, 46, 57, 56, 32, 50, 46, 56, 55, 32,
            55, 46, 54, 54, 32, 54, 46, 54, 53, 45, 52, 46, 55, 56, 32, 49, 46, 51, 50, 32, 56, 46,
            48, 57, 32, 55, 46, 52, 54, 45, 51, 46, 52, 45, 46, 50, 57, 32, 56, 46, 49, 57, 32, 55,
            46, 57, 56, 45, 49, 46, 56, 56, 45, 49, 46, 56, 56, 32, 55, 46, 57, 56, 32, 56, 46, 49,
            57, 45, 46, 50, 57, 45, 51, 46, 52, 32, 55, 46, 52, 54, 32, 56, 46, 48, 57, 32, 49, 46,
            51, 50, 45, 52, 46, 55, 56, 32, 54, 46, 54, 53, 32, 55, 46, 54, 54, 32, 50, 46, 56, 55,
            122, 34, 32, 102, 105, 108, 108, 45, 114, 117, 108, 101, 61, 34, 101, 118, 101, 110,
            111, 100, 100, 34, 32, 115, 116, 114, 111, 107, 101, 61, 34, 35, 48, 48, 48, 34, 32,
            115, 116, 114, 111, 107, 101, 45, 108, 105, 110, 101, 99, 97, 112, 61, 34, 114, 111,
            117, 110, 100, 34, 32, 115, 116, 114, 111, 107, 101, 45, 108, 105, 110, 101, 106, 111,
            105, 110, 61, 34, 114, 111, 117, 110, 100, 34, 32, 115, 116, 114, 111, 107, 101, 45,
            119, 105, 100, 116, 104, 61, 34, 51, 34, 47, 62, 60, 47, 115, 118, 103, 62,
        ];
        let text_u8 = vec![97, 97, 97];
        let form = multipart::MultipartForm::new()
            .add_part(multipart::Part::text("name", "test"))
            .add_part(multipart::Part::file("logo", file_u8).unwrap())
            .add_part(
                multipart::Part::file_with_content_type("data", text_u8, Some("text/plain"), None)
                    .unwrap(),
            );

        let request = RequestBuilder::new(HttpClient::new().unwrap())
            .url("https://httpbin.org/post")
            .method("POST")
            .build()
            .unwrap();

        let r = request.send_multipart(form).await.unwrap();
        println!("multipart result: {}", r.text().await.unwrap());
    }
}