aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-03-27 04:16:22 +0000
committerFuwn <[email protected]>2022-03-27 04:16:22 +0000
commitc01d0ae46a4a3a1d85cab9a49442283718b1fb88 (patch)
tree2dd7576792a406d8264c39fcaaf5728826102673 /src
parentrefactor(router): more generic errors (diff)
downloadwindmark-c01d0ae46a4a3a1d85cab9a49442283718b1fb88.tar.xz
windmark-c01d0ae46a4a3a1d85cab9a49442283718b1fb88.zip
feat(response): implement many more responses
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs8
-rw-r--r--src/response.rs66
2 files changed, 67 insertions, 7 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 0814667..cb28717 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -328,12 +328,12 @@ impl Router {
"{}{}\r\n{}",
response_status,
match response_status {
- 10 | 11 | 40 | 50 | 51 => &*content,
- _ => " text/gemini; charset=utf-8",
+ 20 => " text/gemini; charset=utf-8",
+ _ => &*content,
},
match response_status {
- 10 | 11 | 40 | 50 | 51 => "".to_string(),
- _ => format!("{}{}{}", header, content, footer),
+ 20 => format!("{}{}{}", header, content, footer),
+ _ => "".to_string(),
}
)
.as_bytes(),
diff --git a/src/response.rs b/src/response.rs
index 8720eb6..239f8da 100644
--- a/src/response.rs
+++ b/src/response.rs
@@ -20,9 +20,19 @@ pub enum Response {
Input(String),
SensitiveInput(String),
Success(String),
- NotFound(String),
TemporaryFailure(String),
+ ServerUnavailable(String),
+ CGIError(String),
+ ProxyError(String),
+ SlowDown(String),
PermanentFailure(String),
+ NotFound(String),
+ Gone(String),
+ ProxyRefused(String),
+ BadRequest(String),
+ ClientCertificateRequired(String),
+ CertificateNotAuthorised(String),
+ CertificateNotValid(String),
}
pub(crate) fn to_value_set_status(
@@ -50,8 +60,23 @@ pub(crate) fn to_value_set_status(
value
}
- Response::NotFound(value) => {
- *status = 51;
+ Response::ServerUnavailable(value) => {
+ *status = 41;
+
+ value
+ }
+ Response::CGIError(value) => {
+ *status = 42;
+
+ value
+ }
+ Response::ProxyError(value) => {
+ *status = 43;
+
+ value
+ }
+ Response::SlowDown(value) => {
+ *status = 44;
value
}
@@ -60,5 +85,40 @@ pub(crate) fn to_value_set_status(
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
+ }
}
}