aboutsummaryrefslogtreecommitdiff
path: root/src/request
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-06-14 08:45:09 +0000
committerFuwn <[email protected]>2022-06-14 08:45:09 +0000
commitb5703a59c59bfe95143cf8dc6cc54f20f67fb4fd (patch)
tree44022e3944119c39df5b9082aaac3a77841c8c10 /src/request
parentfix(ast): list ast construction (diff)
downloadgerm-b5703a59c59bfe95143cf8dc6cc54f20f67fb4fd.tar.xz
germ-b5703a59c59bfe95143cf8dc6cc54f20f67fb4fd.zip
feat(macros): general utility macros
Diffstat (limited to 'src/request')
-rw-r--r--src/request/response.rs71
-rw-r--r--src/request/status.rs110
-rw-r--r--src/request/verifier.rs39
3 files changed, 0 insertions, 220 deletions
diff --git a/src/request/response.rs b/src/request/response.rs
deleted file mode 100644
index 5e1f436..0000000
--- a/src/request/response.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-// This file is part of Germ <https://github.com/gemrest/germ>.
-// Copyright (C) 2022-2022 Fuwn <[email protected]>
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 3.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-// Copyright (C) 2022-2022 Fuwn <[email protected]>
-// SPDX-License-Identifier: GPL-3.0-only
-
-use rustls::SupportedCipherSuite;
-
-use crate::request::Status;
-
-#[derive(Debug)]
-pub struct Response {
- status: Status,
- meta: String,
- content: Option<String>,
- size: usize,
- suite: Option<SupportedCipherSuite>,
-}
-impl Response {
- pub(super) fn new(data: &[u8], suite: Option<SupportedCipherSuite>) -> Self {
- let string_form = String::from_utf8_lossy(data).to_string();
- let mut content = None;
- let header;
-
- if string_form.ends_with("\r\n") {
- header = string_form;
- } else {
- let mut string_split = string_form.split("\r\n");
-
- header = string_split.next().unwrap_or("").to_string();
- content = Some(string_split.collect());
- }
-
- let header_split = header.split_at(2);
-
- Self {
- status: Status::from(header_split.0.parse::<i32>().unwrap_or(0)),
- meta: header_split.1.trim_start().to_string(),
- content,
- size: data.len(),
- suite,
- }
- }
-
- #[must_use]
- pub const fn status(&self) -> &Status { &self.status }
-
- #[must_use]
- pub fn meta(&self) -> &str { &self.meta }
-
- #[must_use]
- pub const fn content(&self) -> &Option<String> { &self.content }
-
- #[must_use]
- pub const fn size(&self) -> &usize { &self.size }
-
- #[must_use]
- pub const fn suite(&self) -> &Option<SupportedCipherSuite> { &self.suite }
-}
diff --git a/src/request/status.rs b/src/request/status.rs
deleted file mode 100644
index f46059a..0000000
--- a/src/request/status.rs
+++ /dev/null
@@ -1,110 +0,0 @@
-// This file is part of Germ <https://github.com/gemrest/germ>.
-// Copyright (C) 2022-2022 Fuwn <[email protected]>
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 3.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-// Copyright (C) 2022-2022 Fuwn <[email protected]>
-// SPDX-License-Identifier: GPL-3.0-only
-
-use std::{fmt, fmt::Formatter};
-
-/// Simple Gemini status reporting
-///
-/// # Examples
-///
-/// ```rust
-/// use germ::request::Status;
-///
-/// assert_eq!(Status::from(10), Status::Input);
-/// assert_eq!(i32::from(Status::Input), 10);
-/// ```
-#[derive(Debug, PartialEq)]
-pub enum Status {
- Input,
- SensitiveInput,
- Success,
- TemporaryRedirect,
- PermanentRedirect,
- TemporaryFailure,
- ServerUnavailable,
- CGIError,
- ProxyError,
- SlowDown,
- PermanentFailure,
- NotFound,
- Gone,
- ProxyRefused,
- BadRequest,
- ClientCertificateRequired,
- CertificateNotAuthorised,
- CertificateNotValid,
- Unsupported,
-}
-impl Default for Status {
- fn default() -> Self { Self::Success }
-}
-impl From<Status> for i32 {
- fn from(n: Status) -> Self {
- match n {
- Status::Input => 10,
- Status::SensitiveInput => 11,
- Status::Success => 20,
- Status::TemporaryRedirect => 30,
- Status::PermanentRedirect => 31,
- Status::TemporaryFailure => 40,
- Status::ServerUnavailable => 41,
- Status::CGIError => 42,
- Status::ProxyError => 43,
- Status::SlowDown => 44,
- Status::PermanentFailure => 50,
- Status::NotFound => 51,
- Status::Gone => 52,
- Status::ProxyRefused => 53,
- Status::BadRequest => 59,
- Status::ClientCertificateRequired => 60,
- Status::CertificateNotAuthorised => 61,
- Status::CertificateNotValid => 62,
- Status::Unsupported => 0,
- }
- }
-}
-impl From<i32> for Status {
- fn from(n: i32) -> Self {
- match n {
- 10 => Self::Input,
- 11 => Self::SensitiveInput,
- 20 => Self::Success,
- 30 => Self::TemporaryRedirect,
- 31 => Self::PermanentRedirect,
- 40 => Self::TemporaryFailure,
- 41 => Self::ServerUnavailable,
- 42 => Self::CGIError,
- 43 => Self::ProxyError,
- 44 => Self::SlowDown,
- 50 => Self::PermanentFailure,
- 51 => Self::NotFound,
- 52 => Self::Gone,
- 53 => Self::ProxyRefused,
- 59 => Self::BadRequest,
- 60 => Self::ClientCertificateRequired,
- 61 => Self::CertificateNotAuthorised,
- 62 => Self::CertificateNotValid,
- _ => Self::Unsupported,
- }
- }
-}
-impl fmt::Display for Status {
- fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
- write!(f, "{:?}", self)
- }
-}
diff --git a/src/request/verifier.rs b/src/request/verifier.rs
deleted file mode 100644
index d6511c3..0000000
--- a/src/request/verifier.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-// This file is part of Germ <https://github.com/gemrest/germ>.
-// Copyright (C) 2022-2022 Fuwn <[email protected]>
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, version 3.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-// Copyright (C) 2022-2022 Fuwn <[email protected]>
-// SPDX-License-Identifier: GPL-3.0-only
-
-use std::time::SystemTime;
-
-use rustls::{client, client::ServerCertVerified, Certificate};
-
-pub(super) struct GermVerifier;
-impl GermVerifier {
- pub const fn new() -> Self { Self {} }
-}
-impl client::ServerCertVerifier for GermVerifier {
- fn verify_server_cert(
- &self,
- _end_entity: &Certificate,
- _intermediates: &[Certificate],
- _server_name: &client::ServerName,
- _scts: &mut dyn Iterator<Item = &[u8]>,
- _ocsp_response: &[u8],
- _now: SystemTime,
- ) -> Result<ServerCertVerified, rustls::Error> {
- Ok(ServerCertVerified::assertion())
- }
-}