diff options
| author | Fuwn <[email protected]> | 2023-04-02 01:57:26 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-04-02 01:57:26 +0000 |
| commit | 5e6ea230ab98f4a2761876ebe1646c13588e36b1 (patch) | |
| tree | 1eb43a5723483c4fb13f25951a61a703989ed1b1 | |
| parent | feat(respones): accept generic bytes for binary_success (diff) | |
| download | windmark-5e6ea230ab98f4a2761876ebe1646c13588e36b1.tar.xz windmark-5e6ea230ab98f4a2761876ebe1646c13588e36b1.zip | |
feat(response): add 'auto' functionality to binary_success raw
| -rw-r--r-- | examples/windmark.rs | 2 | ||||
| -rw-r--r-- | src/response/macros.rs | 32 |
2 files changed, 33 insertions, 1 deletions
diff --git a/examples/windmark.rs b/examples/windmark.rs index 4b2b1fc..50914f4 100644 --- a/examples/windmark.rs +++ b/examples/windmark.rs @@ -181,7 +181,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { ); #[cfg(feature = "auto-deduce-mime")] router.mount("/auto-file", { - windmark::binary_success_auto!(include_bytes!("../LICENSE")) + windmark::binary_success!(include_bytes!("../LICENSE")) }); router.mount("/file", { windmark::binary_success!(include_bytes!("../LICENSE"), "text/plain") diff --git a/src/response/macros.rs b/src/response/macros.rs index e04b0ee..f49da2d 100644 --- a/src/response/macros.rs +++ b/src/response/macros.rs @@ -61,9 +61,41 @@ macro_rules! binary_success { ::windmark::Response::binary_success($body, $mime) }) }; + ($body:expr) => {{ + #[cfg(not(feature = "auto-deduce-mime"))] + compile_error!( + "`binary_success` without a MIME type requires the `auto-deduce-mime` \ + feature to be enabled" + ); + + ::std::boxed::Box::new(|_| { + #[cfg(feature = "auto-deduce-mime")] + return ::windmark::Response::binary_success_auto($body); + + // Suppress item not found warning + #[cfg(not(feature = "auto-deduce-mime"))] + ::windmark::Response::binary_success($body, "application/octet-stream") + }) + }}; ($context:ident, $body:expr, $mime:expr) => { ::std::boxed::Box::new(|$context| { ::windmark::Response::binary_success($body, $mime) }) }; + ($context:ident, $body:expr) => {{ + #[cfg(not(feature = "auto-deduce-mime"))] + compile_error!( + "`binary_success` without a MIME type requires the `auto-deduce-mime` \ + feature to be enabled" + ); + + ::std::boxed::Box::new(|$context| { + #[cfg(feature = "auto-deduce-mime")] + return ::windmark::Response::binary_success_auto($body); + + // Suppress item not found warning + #[cfg(not(feature = "auto-deduce-mime"))] + ::windmark::Response::binary_success($body, "application/octet-stream") + }) + }}; } |