chiark / gitweb /
wip request mime
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 31 Jul 2021 17:55:41 +0000 (18:55 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 31 Jul 2021 17:55:41 +0000 (18:55 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
macros/macros.rs
src/bin/client.rs

index c3175f3080d90caa09cf94101245b97c5451bf62..59a58235ce8e44ff7d3894e04f3b76e4b7537a64 100644 (file)
@@ -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::<proc_macro2::TokenStream>();
+  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::<String>();
+  //dbg!(&output);
+  let output = LitStr::new(&output, token.span());
+  let output = quote!(#output);
   output.into()
 }
index 40d1f62b2b230de61a7c74eeadf57c41db5b9583..ba311965fc67c097b0b6474074f4321d1cb2f19c 100644 (file)
@@ -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(