diff options
| author | Fuwn <[email protected]> | 2022-05-17 10:55:54 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2022-05-17 10:55:54 +0000 |
| commit | 8ffa9b9b44cd9366dc4a6c1e9e8925d8c3eb59cd (patch) | |
| tree | a0a2fe36dbb3df0f10ba16bc5aa82601b11c84c7 /src/request/status.rs | |
| parent | docs(cargo): bump version (diff) | |
| download | germ-8ffa9b9b44cd9366dc4a6c1e9e8925d8c3eb59cd.tar.xz germ-8ffa9b9b44cd9366dc4a6c1e9e8925d8c3eb59cd.zip | |
feat(request): make gemini requests
Diffstat (limited to 'src/request/status.rs')
| -rw-r--r-- | src/request/status.rs | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/src/request/status.rs b/src/request/status.rs new file mode 100644 index 0000000..b2065ed --- /dev/null +++ b/src/request/status.rs @@ -0,0 +1,103 @@ +// 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 + +/// 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, + _ => 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, + } + } +} |