axum_core/extract/
rejection.rs1use crate::__composite_rejection as composite_rejection;
4use crate::__define_rejection as define_rejection;
5
6use crate::{BoxError, Error};
7
8composite_rejection! {
9 pub enum FailedToBufferBody {
12 LengthLimitError,
13 UnknownBodyError,
14 }
15}
16
17impl FailedToBufferBody {
18 pub(crate) fn from_err<E>(err: E) -> Self
19 where
20 E: Into<BoxError>,
21 {
22 let box_error = match err.into().downcast::<Error>() {
26 Ok(err) => err.into_inner(),
27 Err(err) => err,
28 };
29 let box_error = match box_error.downcast::<Error>() {
30 Ok(err) => err.into_inner(),
31 Err(err) => err,
32 };
33 match box_error.downcast::<http_body_util::LengthLimitError>() {
34 Ok(err) => Self::LengthLimitError(LengthLimitError::from_err(err)),
35 Err(err) => Self::UnknownBodyError(UnknownBodyError::from_err(err)),
36 }
37 }
38}
39
40define_rejection! {
41 #[status = PAYLOAD_TOO_LARGE]
42 #[body = "Failed to buffer the request body"]
43 pub struct LengthLimitError(Error);
48}
49
50define_rejection! {
51 #[status = BAD_REQUEST]
52 #[body = "Failed to buffer the request body"]
53 pub struct UnknownBodyError(Error);
55}
56
57define_rejection! {
58 #[status = BAD_REQUEST]
59 #[body = "Request body didn't contain valid UTF-8"]
60 pub struct InvalidUtf8(Error);
63}
64
65composite_rejection! {
66 pub enum BytesRejection {
71 FailedToBufferBody,
72 }
73}
74
75composite_rejection! {
76 pub enum StringRejection {
80 FailedToBufferBody,
81 InvalidUtf8,
82 }
83}