From 67b54449a1bbde257e9454419e7bb70ebc515c0f Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Thu, 14 Nov 2024 21:43:54 +0000 Subject: implement artwork upload --- src/error.rs | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'src/error.rs') diff --git a/src/error.rs b/src/error.rs index ef8ddd3..2704519 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,6 +1,9 @@ use std::fmt::Display; -use poem::{error::ResponseError, http::StatusCode}; +use poem::{ + error::{ParseMultipartError, ResponseError}, + http::StatusCode, +}; use sqlx::postgres::PgDatabaseError; #[derive(Debug)] @@ -11,6 +14,11 @@ pub enum Error { DatabaseError(sqlx::Error), NotFound, MissingField, + Unauthorized, + MultipartError, + BadRequest, + UnsupportedFileType(String), + UploadDirectory(String), } impl Display for Error { @@ -22,6 +30,15 @@ impl Display for Error { Error::DatabaseError(error) => write!(f, "database error: {}", error), Error::NotFound => write!(f, "not found"), Error::MissingField => write!(f, "missing field in row"), + Error::Unauthorized => write!(f, "user unauthorized"), + Error::MultipartError => write!(f, "error parsing multipart form data"), + Error::BadRequest => write!(f, "bad request"), + Error::UnsupportedFileType(filetype) => { + write!(f, "unsupported file upload type: {}", filetype) + } + Error::UploadDirectory(directory) => { + write!(f, "invalid uploads directory: {}", directory) + } } } } @@ -37,6 +54,11 @@ impl ResponseError for Error { Error::NotFound => StatusCode::NOT_FOUND, Error::SQLError(_) => StatusCode::INTERNAL_SERVER_ERROR, Error::MissingField => StatusCode::INTERNAL_SERVER_ERROR, + Error::Unauthorized => StatusCode::UNAUTHORIZED, + Error::MultipartError => StatusCode::BAD_REQUEST, + Error::BadRequest => StatusCode::BAD_REQUEST, + Error::UnsupportedFileType(_) => StatusCode::BAD_REQUEST, + Error::UploadDirectory(_) => StatusCode::INTERNAL_SERVER_ERROR, } } } @@ -67,3 +89,9 @@ impl From for Error { } } } + +impl From for Error { + fn from(e: ParseMultipartError) -> Self { + Error::MultipartError + } +} -- cgit