use actix_web::{http::StatusCode, ResponseError}; use derive_more::Display; /// Errors which can occur when serving static files. #[derive(Debug, PartialEq, Eq, Display)] pub enum FilesError { /// Path is not a directory. #[allow(dead_code)] #[display(fmt = "path is not a directory. Unable to serve static files")] IsNotDirectory, /// Cannot render directory. #[display(fmt = "unable to render directory without index file")] IsDirectory, } impl ResponseError for FilesError { /// Returns `404 Not Found`. fn status_code(&self) -> StatusCode { StatusCode::NOT_FOUND } } #[derive(Debug, PartialEq, Eq, Display)] #[non_exhaustive] pub enum UriSegmentError { /// Segment started with the wrapped invalid character. #[display(fmt = "segment started with invalid character: ('{_0}')")] BadStart(char), /// Segment contained the wrapped invalid character. #[display(fmt = "segment contained invalid character ('{_0}')")] BadChar(char), /// Segment ended with the wrapped invalid character. #[display(fmt = "segment ended with invalid character: ('{_0}')")] BadEnd(char), /// Path is not a valid UTF-8 string after percent-decoding. #[display(fmt = "path is not a valid UTF-8 string after percent-decoding")] NotValidUtf8, } impl ResponseError for UriSegmentError { /// Returns `400 Bad Request`. fn status_code(&self) -> StatusCode { StatusCode::BAD_REQUEST } }