From 3db328dfc99e37582b4f14160b9d95a3e71ef64e Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 31 Jul 2021 18:55:41 +0100 Subject: [PATCH] wip request mime Signed-off-by: Ian Jackson --- macros/macros.rs | 19 ++++++++++++++----- src/bin/client.rs | 2 ++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/macros/macros.rs b/macros/macros.rs index c3175f3..59a5823 100644 --- a/macros/macros.rs +++ b/macros/macros.rs @@ -3,7 +3,7 @@ // There is NO WARRANTY. use syn::{parse_macro_input, parse_quote}; -use syn::{Data, DataStruct, DeriveInput, Meta, NestedMeta}; +use syn::{Data, DataStruct, DeriveInput, LitStr, Meta, NestedMeta}; use quote::{quote, quote_spanned, ToTokens}; use proc_macro2::{Literal, TokenStream}; @@ -113,9 +113,18 @@ pub fn resolve(input: proc_macro::TokenStream) -> proc_macro::TokenStream { #[proc_macro] pub fn into_crlfs(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input: proc_macro2::TokenStream = input.into(); - let output = input.into_iter().map(|token| { - dbg!(&token); - token - }).collect::(); + let token: LitStr = syn::parse2(input).expect("expected literal"); + let input = token.value(); + let output = input.split_inclusive('\n') + .map(|s| s.trim_start_matches(&[' ','\t'][..])) + .map(|s| match s.strip_suffix("\n") { + None => [s, ""], + Some(l) => [l, "\r\n"], + }) + .flatten() + .collect::(); + //dbg!(&output); + let output = LitStr::new(&output, token.span()); + let output = quote!(#output); output.into() } diff --git a/src/bin/client.rs b/src/bin/client.rs index 40d1f62..ba31196 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -49,6 +49,7 @@ fn submit_request<'r, 'c:'r, C:HCC>( -- Content-Type: application/octet-stream Content-Disposition: form-data; name="d" + "#), ); let suffix = format!(into_crlfs!( @@ -56,6 +57,7 @@ fn submit_request<'r, 'c:'r, C:HCC>( --b-- "#), ); +eprintln!(">{}[{}D]{}<", &prefix, &prefix2, &suffix); let body = hyper::body::Body::wrap_stream( futures::stream::iter( -- 2.30.2