Ensure error is Send
This commit is contained in:
parent
1be6074cf4
commit
46e5834b60
|
@ -1,7 +1,7 @@
|
|||
[package]
|
||||
name = "actix-form-data"
|
||||
description = "Multipart Form Data for Actix Web"
|
||||
version = "0.7.0-beta.1"
|
||||
version = "0.7.0-beta.2"
|
||||
license = "GPL-3.0"
|
||||
authors = ["asonix <asonix@asonix.dog>"]
|
||||
repository = "https://git.asonix.dog/asonix/actix-form-data.git"
|
||||
|
|
70
src/error.rs
70
src/error.rs
|
@ -22,9 +22,8 @@ use std::{
|
|||
string::FromUtf8Error,
|
||||
};
|
||||
|
||||
use actix_multipart::MultipartError;
|
||||
use actix_web::{
|
||||
error::{PayloadError, ResponseError},
|
||||
error::{PayloadError, ResponseError, ParseError},
|
||||
http::StatusCode,
|
||||
HttpResponse,
|
||||
};
|
||||
|
@ -34,7 +33,7 @@ pub enum Error {
|
|||
#[error("Error parsing payload")]
|
||||
Payload(#[from] PayloadError),
|
||||
#[error("Error in multipart creation")]
|
||||
Multipart(MultipartError),
|
||||
Multipart(#[from] MultipartError),
|
||||
#[error("Failed to parse field")]
|
||||
ParseField(#[from] FromUtf8Error),
|
||||
#[error("Failed to parse int")]
|
||||
|
@ -61,9 +60,57 @@ pub enum Error {
|
|||
FileSize,
|
||||
}
|
||||
|
||||
impl From<MultipartError> for Error {
|
||||
fn from(m: MultipartError) -> Self {
|
||||
Error::Multipart(m)
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum MultipartError {
|
||||
#[error("No Content-Disposition `form-data` header")]
|
||||
NoContentDisposition,
|
||||
#[error("No Content-Type header found")]
|
||||
NoContentType,
|
||||
#[error("Cannot parse Content-Type header")]
|
||||
ParseContentType,
|
||||
#[error("Multipart boundary is not found")]
|
||||
Boundary,
|
||||
#[error("Nested multipart is not supported")]
|
||||
Nested,
|
||||
#[error("Multipart stream is incomplete")]
|
||||
Incomplete,
|
||||
#[error("Failed parsing")]
|
||||
Parse(#[source] ParseError),
|
||||
#[error("Multipart stream is not consumed")]
|
||||
NotConsumed,
|
||||
#[error("An error occured processing field `{field_name}`: `{zource}`")]
|
||||
Field {
|
||||
field_name: String,
|
||||
zource: String,
|
||||
},
|
||||
#[error("Duplicate field found for: `{0}")]
|
||||
DuplicateField(String),
|
||||
#[error("Field with name `{0}` is required")]
|
||||
MissingField(String),
|
||||
#[error("Unsupported field `{0}`")]
|
||||
UnsupportedField(String),
|
||||
#[error("Unknown error occured: {0}")]
|
||||
Unknown(String),
|
||||
}
|
||||
|
||||
impl From<actix_multipart::MultipartError> for Error {
|
||||
fn from(value: actix_multipart::MultipartError) -> Self {
|
||||
match value {
|
||||
actix_multipart::MultipartError::NoContentDisposition => Error::Multipart(MultipartError::NoContentDisposition),
|
||||
actix_multipart::MultipartError::NoContentType => Error::Multipart(MultipartError::NoContentType),
|
||||
actix_multipart::MultipartError::ParseContentType => Error::Multipart(MultipartError::ParseContentType),
|
||||
actix_multipart::MultipartError::Boundary => Error::Multipart(MultipartError::Boundary),
|
||||
actix_multipart::MultipartError::Nested => Error::Multipart(MultipartError::Nested),
|
||||
actix_multipart::MultipartError::Incomplete => Error::Multipart(MultipartError::Incomplete),
|
||||
actix_multipart::MultipartError::Parse(e) => Error::Multipart(MultipartError::Parse(e)),
|
||||
actix_multipart::MultipartError::Payload(e) => Error::Payload(e),
|
||||
actix_multipart::MultipartError::NotConsumed => Error::Multipart(MultipartError::NotConsumed),
|
||||
actix_multipart::MultipartError::Field { field_name, source } => Error::Multipart(MultipartError::Field { field_name, zource: source.to_string() }),
|
||||
actix_multipart::MultipartError::DuplicateField(s) => Error::Multipart(MultipartError::DuplicateField(s)),
|
||||
actix_multipart::MultipartError::MissingField(s) => Error::Multipart(MultipartError::MissingField(s)),
|
||||
actix_multipart::MultipartError::UnsupportedField(s) => Error::Multipart(MultipartError::UnsupportedField(s)),
|
||||
e => Error::Multipart(MultipartError::Unknown(e.to_string())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,3 +141,14 @@ impl ResponseError for Error {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::Error;
|
||||
|
||||
#[test]
|
||||
fn assert_send() {
|
||||
fn is_send<E: Send>() {}
|
||||
is_send::<Error>();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue