aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/response.rs110
-rw-r--r--src/router.rs10
2 files changed, 9 insertions, 111 deletions
diff --git a/src/response.rs b/src/response.rs
index 0459c06..ed320b5 100644
--- a/src/response.rs
+++ b/src/response.rs
@@ -24,8 +24,9 @@ pub enum Response<'a> {
SensitiveInput(String),
Success(String),
#[cfg(feature = "auto-deduce-mime")]
- SuccessFile(&'a [u8]),
- #[cfg(not(feature = "auto-deduce-mime"))]
+ /// A successful response where the MIME type of the response is
+ /// automatically deduced from the provided bytes
+ SuccessFileAuto(&'a [u8]),
SuccessFile(&'a [u8], String),
TemporaryRedirect(String),
PermanentRedirect(String),
@@ -44,7 +45,6 @@ pub enum Response<'a> {
CertificateNotValid(String),
}
-#[cfg(not(feature = "auto-deduce-mime"))]
pub(crate) fn to_value_set_status(
response: Response<'_>,
status: &mut i32,
@@ -72,107 +72,9 @@ pub(crate) fn to_value_set_status(
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,
-) -> String {
- match response {
- Response::Input(value) => {
- *status = 10;
-
- value
- }
- Response::SensitiveInput(value) => {
- *status = 11;
-
- value
- }
- Response::Success(value) => {
- *status = 20;
-
- value
- }
- Response::SuccessFile(value) => {
- *status = 21; // Internal status code, not real.
+ #[cfg(feature = "auto-deduce-mime")]
+ Response::SuccessFileAuto(value) => {
+ *status = 22; // Internal status code, not real.
String::from_utf8(value.to_vec()).unwrap()
}
diff --git a/src/router.rs b/src/router.rs
index 3fb1ca5..10a8f92 100644
--- a/src/router.rs
+++ b/src/router.rs
@@ -261,7 +261,6 @@ impl Router {
let mut buffer = [0u8; 1024];
let mut url = Url::parse("gemini://fuwn.me/")?;
let mut response_status = 0;
- #[cfg(not(feature = "auto-deduce-mime"))]
let mut response_mime_type = "".to_string();
let mut footer = String::new();
let mut header = String::new();
@@ -364,7 +363,6 @@ impl Router {
&stream.ssl().peer_certificate(),
),)),
&mut response_status,
- #[cfg(not(feature = "auto-deduce-mime"))]
&mut response_mime_type,
)
} else {
@@ -378,7 +376,6 @@ impl Router {
&stream.ssl().peer_certificate(),
),)),
&mut response_status,
- #[cfg(not(feature = "auto-deduce-mime"))]
&mut response_mime_type,
)
};
@@ -387,7 +384,7 @@ impl Router {
.write_all(
format!(
"{}{}\r\n{}",
- if response_status == 21 {
+ if response_status == 21 || response_status == 22 {
20
} else {
response_status
@@ -399,14 +396,13 @@ impl Router {
self.charset, self.language
),
#[cfg(feature = "auto-deduce-mime")]
- 21 => format!(" {}", tree_magic::from_u8(&*content.as_bytes())),
- #[cfg(not(feature = "auto-deduce-mime"))]
+ 22 => format!(" {}", tree_magic::from_u8(&*content.as_bytes())),
21 => response_mime_type,
_ => format!(" {}", content),
},
match response_status {
20 => format!("{}{}\n{}", header, content, footer),
- 21 => content.to_string(),
+ 21 | 22 => content.to_string(),
_ => "".to_string(),
}
)