diff options
| author | Fuwn <[email protected]> | 2022-03-31 03:02:09 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2022-03-31 03:02:09 +0000 |
| commit | 00f1d10de4f6597f22fec086c34265b322dd9ef3 (patch) | |
| tree | ed12a2f9c6dec57193ea38124ce00b3cf36459b0 /src/response.rs | |
| parent | fix(router): use different certificate file (diff) | |
| download | windmark-00f1d10de4f6597f22fec086c34265b322dd9ef3.tar.xz windmark-00f1d10de4f6597f22fec086c34265b322dd9ef3.zip | |
feat(features): auto-deduce-mime
Diffstat (limited to 'src/response.rs')
| -rw-r--r-- | src/response.rs | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/src/response.rs b/src/response.rs index b9c5354..0459c06 100644 --- a/src/response.rs +++ b/src/response.rs @@ -23,7 +23,10 @@ pub enum Response<'a> { Input(String), SensitiveInput(String), Success(String), + #[cfg(feature = "auto-deduce-mime")] SuccessFile(&'a [u8]), + #[cfg(not(feature = "auto-deduce-mime"))] + SuccessFile(&'a [u8], String), TemporaryRedirect(String), PermanentRedirect(String), TemporaryFailure(String), @@ -41,6 +44,113 @@ pub enum Response<'a> { CertificateNotValid(String), } +#[cfg(not(feature = "auto-deduce-mime"))] +pub(crate) fn to_value_set_status( + response: Response<'_>, + status: &mut i32, + mime: &mut String, +) -> String { + match response { + Response::Input(value) => { + *status = 10; + + value + } + Response::SensitiveInput(value) => { + *status = 11; + + value + } + Response::Success(value) => { + *status = 20; + + value + } + Response::SuccessFile(value, value_mime) => { + *status = 21; // Internal status code, not real. + *mime = value_mime; + + String::from_utf8(value.to_vec()).unwrap() + } + Response::TemporaryRedirect(value) => { + *status = 30; + + value + } + Response::PermanentRedirect(value) => { + *status = 31; + + value + } + Response::TemporaryFailure(value) => { + *status = 40; + + value + } + Response::ServerUnavailable(value) => { + *status = 41; + + value + } + Response::CGIError(value) => { + *status = 42; + + value + } + Response::ProxyError(value) => { + *status = 43; + + value + } + Response::SlowDown(value) => { + *status = 44; + + value + } + Response::PermanentFailure(value) => { + *status = 50; + + value + } + Response::NotFound(value) => { + *status = 51; + + value + } + Response::Gone(value) => { + *status = 52; + + value + } + Response::ProxyRefused(value) => { + *status = 53; + + value + } + Response::BadRequest(value) => { + *status = 59; + + value + } + Response::ClientCertificateRequired(value) => { + *status = 60; + + value + } + Response::CertificateNotAuthorised(value) => { + *status = 61; + + value + } + Response::CertificateNotValid(value) => { + *status = 62; + + value + } + } +} + +#[cfg(feature = "auto-deduce-mime")] pub(crate) fn to_value_set_status( response: Response<'_>, status: &mut i32, |