Browse Source

Add TaurusResult type alias

This patch adds the `TaurusResult` type alias, and replaces instances of
`error::TaurusError` with just `TaurusError`.

Signed-off-by: Josh Leeb-du Toit <mail@joshleeb.com>
master
Josh Leeb-du Toit 4 years ago committed by Garrit Franke
parent
commit
0b222e9639
  1. 2
      src/error.rs
  2. 8
      src/gemini.rs
  3. 18
      src/main.rs

2
src/error.rs

@ -1,6 +1,8 @@
use std::io;
use thiserror::Error;
pub type TaurusResult<T> = Result<T, TaurusError>;
#[derive(Error, Debug)]
pub enum TaurusError {
#[error("failed to read configuration file: {0:#?}")]

8
src/gemini.rs

@ -1,4 +1,4 @@
use crate::error;
use crate::error::{TaurusError, TaurusResult};
use native_tls::TlsStream;
use std::io::Write;
use std::net::TcpStream;
@ -55,7 +55,7 @@ impl GeminiResponse {
}
}
pub fn send(&self, mut stream: TlsStream<TcpStream>) -> Result<usize, error::TaurusError> {
pub fn send(&self, mut stream: TlsStream<TcpStream>) -> TaurusResult<usize> {
let mut buf: Vec<u8> = Vec::new();
// <Status>
@ -73,8 +73,6 @@ impl GeminiResponse {
buf.extend(body);
}
stream
.write(&buf)
.map_err(error::TaurusError::StreamWriteFailed)
stream.write(&buf).map_err(TaurusError::StreamWriteFailed)
}
}

18
src/main.rs

@ -7,6 +7,7 @@ mod gemini;
use gemini::GeminiResponse;
use error::{TaurusError, TaurusResult};
use native_tls::{Identity, TlsAcceptor, TlsStream};
use std::fs::File;
use std::io::{self, Read};
@ -24,7 +25,7 @@ fn main() {
}
}
fn run() -> Result<(), error::TaurusError> {
fn run() -> TaurusResult<()> {
// CLI
let matches = App::new(crate_name!())
.version(crate_version!())
@ -43,7 +44,7 @@ fn run() -> Result<(), error::TaurusError> {
let config_path = matches.value_of("config").unwrap();
let config: config::Config =
config::Config::load(config_path).map_err(error::TaurusError::InvalidConfig)?;
config::Config::load(config_path).map_err(TaurusError::InvalidConfig)?;
// Defaults for configuration file
let port = config.port.unwrap_or(1965);
@ -55,12 +56,12 @@ fn run() -> Result<(), error::TaurusError> {
.unwrap_or_else(|| "/var/www/gemini".to_owned());
// Read certificate
let identity = read_file(&cert_file).map_err(error::TaurusError::NoIdentity)?;
let identity = read_file(&cert_file).map_err(TaurusError::NoIdentity)?;
let identity = Identity::from_pkcs12(&identity, &config.certificate_password)?;
let address = format!("0.0.0.0:{}", port);
let listener = TcpListener::bind(address).map_err(error::TaurusError::BindFailed)?;
let listener = TcpListener::bind(address).map_err(TaurusError::BindFailed)?;
let acceptor = TlsAcceptor::new(identity).unwrap();
let acceptor = Arc::new(acceptor);
@ -101,7 +102,7 @@ fn read_file(file_path: &str) -> Result<Vec<u8>, io::Error> {
}
/// Send file as a response
fn write_file(path: &str) -> Result<GeminiResponse, error::TaurusError> {
fn write_file(path: &str) -> TaurusResult<GeminiResponse> {
let extension = path::Path::new(path)
.extension()
.unwrap_or_else(|| std::ffi::OsStr::new(""));
@ -125,15 +126,12 @@ fn write_file(path: &str) -> Result<GeminiResponse, error::TaurusError> {
}
}
fn handle_client(
mut stream: TlsStream<TcpStream>,
static_root: &str,
) -> Result<usize, error::TaurusError> {
fn handle_client(mut stream: TlsStream<TcpStream>, static_root: &str) -> TaurusResult<usize> {
let mut buffer = [0; 1024];
stream
.read(&mut buffer)
.map_err(error::TaurusError::StreamReadFailed)?;
.map_err(TaurusError::StreamReadFailed)?;
let mut raw_request = String::from_utf8_lossy(&buffer[..]).to_mut().to_owned();

Loading…
Cancel
Save