//! Rejection response types. use axum_core::__composite_rejection as composite_rejection; use axum_core::__define_rejection as define_rejection; pub use crate::extract::path::{FailedToDeserializePathParams, InvalidUtf8InPathParam}; pub use axum_core::extract::rejection::*; #[cfg(feature = "json")] define_rejection! { #[status = UNPROCESSABLE_ENTITY] #[body = "Failed to deserialize the JSON body into the target type"] #[cfg_attr(docsrs, doc(cfg(feature = "json")))] /// Rejection type for [`Json`](super::Json). /// /// This rejection is used if the request body is syntactically valid JSON but couldn't be /// deserialized into the target type. pub struct JsonDataError(Error); } #[cfg(feature = "json")] define_rejection! { #[status = BAD_REQUEST] #[body = "Failed to parse the request body as JSON"] #[cfg_attr(docsrs, doc(cfg(feature = "json")))] /// Rejection type for [`Json`](super::Json). /// /// This rejection is used if the request body didn't contain syntactically valid JSON. pub struct JsonSyntaxError(Error); } #[cfg(feature = "json")] define_rejection! { #[status = UNSUPPORTED_MEDIA_TYPE] #[body = "Expected request with `Content-Type: application/json`"] #[cfg_attr(docsrs, doc(cfg(feature = "json")))] /// Rejection type for [`Json`](super::Json) used if the `Content-Type` /// header is missing. pub struct MissingJsonContentType; } define_rejection! { #[status = INTERNAL_SERVER_ERROR] #[body = "Missing request extension"] /// Rejection type for [`Extension`](super::Extension) if an expected /// request extension was not found. pub struct MissingExtension(Error); } define_rejection! { #[status = INTERNAL_SERVER_ERROR] #[body = "No paths parameters found for matched route"] /// Rejection type used if axum's internal representation of path parameters /// is missing. This is commonly caused by extracting `Request<_>`. `Path` /// must be extracted first. pub struct MissingPathParams; } define_rejection! { #[status = UNSUPPORTED_MEDIA_TYPE] #[body = "Form requests must have `Content-Type: application/x-www-form-urlencoded`"] /// Rejection type for [`Form`](super::Form) or [`RawForm`](super::RawForm) /// used if the `Content-Type` header is missing /// or its value is not `application/x-www-form-urlencoded`. pub struct InvalidFormContentType; } define_rejection! { #[status = BAD_REQUEST] #[body = "No host found in request"] /// Rejection type used if the [`Host`](super::Host) extractor is unable to /// resolve a host. pub struct FailedToResolveHost; } define_rejection! { #[status = BAD_REQUEST] #[body = "Failed to deserialize form"] /// Rejection type used if the [`Form`](super::Form) extractor is unable to /// deserialize the form into the target type. pub struct FailedToDeserializeForm(Error); } define_rejection! { #[status = UNPROCESSABLE_ENTITY] #[body = "Failed to deserialize form body"] /// Rejection type used if the [`Form`](super::Form) extractor is unable to /// deserialize the form body into the target type. pub struct FailedToDeserializeFormBody(Error); } define_rejection! { #[status = BAD_REQUEST] #[body = "Failed to deserialize query string"] /// Rejection type used if the [`Query`](super::Query) extractor is unable to /// deserialize the query string into the target type. pub struct FailedToDeserializeQueryString(Error); } composite_rejection! { /// Rejection used for [`Query`](super::Query). /// /// Contains one variant for each way the [`Query`](super::Query) extractor /// can fail. pub enum QueryRejection { FailedToDeserializeQueryString, } } composite_rejection! { /// Rejection used for [`Form`](super::Form). /// /// Contains one variant for each way the [`Form`](super::Form) extractor /// can fail. pub enum FormRejection { InvalidFormContentType, FailedToDeserializeForm, FailedToDeserializeFormBody, BytesRejection, } } composite_rejection! { /// Rejection used for [`RawForm`](super::RawForm). /// /// Contains one variant for each way the [`RawForm`](super::RawForm) extractor /// can fail. pub enum RawFormRejection { InvalidFormContentType, BytesRejection, } } #[cfg(feature = "json")] composite_rejection! { /// Rejection used for [`Json`](super::Json). /// /// Contains one variant for each way the [`Json`](super::Json) extractor /// can fail. #[cfg_attr(docsrs, doc(cfg(feature = "json")))] pub enum JsonRejection { JsonDataError, JsonSyntaxError, MissingJsonContentType, BytesRejection, } } composite_rejection! { /// Rejection used for [`Extension`](super::Extension). /// /// Contains one variant for each way the [`Extension`](super::Extension) extractor /// can fail. pub enum ExtensionRejection { MissingExtension, } } composite_rejection! { /// Rejection used for [`Path`](super::Path). /// /// Contains one variant for each way the [`Path`](super::Path) extractor /// can fail. pub enum PathRejection { FailedToDeserializePathParams, MissingPathParams, } } composite_rejection! { /// Rejection used for [`RawPathParams`](super::RawPathParams). /// /// Contains one variant for each way the [`RawPathParams`](super::RawPathParams) extractor /// can fail. pub enum RawPathParamsRejection { InvalidUtf8InPathParam, MissingPathParams, } } composite_rejection! { /// Rejection used for [`Host`](super::Host). /// /// Contains one variant for each way the [`Host`](super::Host) extractor /// can fail. pub enum HostRejection { FailedToResolveHost, } } #[cfg(feature = "matched-path")] define_rejection! { #[status = INTERNAL_SERVER_ERROR] #[body = "No matched path found"] /// Rejection if no matched path could be found. /// /// See [`MatchedPath`](super::MatchedPath) for more details. #[cfg_attr(docsrs, doc(cfg(feature = "matched-path")))] pub struct MatchedPathMissing; } #[cfg(feature = "matched-path")] composite_rejection! { /// Rejection used for [`MatchedPath`](super::MatchedPath). #[cfg_attr(docsrs, doc(cfg(feature = "matched-path")))] pub enum MatchedPathRejection { MatchedPathMissing, } } #[cfg(feature = "headers")] pub use crate::typed_header::{TypedHeaderRejection, TypedHeaderRejectionReason};