aboutsummaryrefslogtreecommitdiff
path: root/src/response.rs
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-03-31 03:02:09 +0000
committerFuwn <[email protected]>2022-03-31 03:02:09 +0000
commit00f1d10de4f6597f22fec086c34265b322dd9ef3 (patch)
treeed12a2f9c6dec57193ea38124ce00b3cf36459b0 /src/response.rs
parentfix(router): use different certificate file (diff)
downloadwindmark-00f1d10de4f6597f22fec086c34265b322dd9ef3.tar.xz
windmark-00f1d10de4f6597f22fec086c34265b322dd9ef3.zip
feat(features): auto-deduce-mime
Diffstat (limited to 'src/response.rs')
-rw-r--r--src/response.rs110
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,