use super::*;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum CibouletteResponseStatus {
Ok,
OkEmpty,
OkAsync,
Created,
Unsupported,
NotFound,
Conflict,
}
impl CibouletteResponseStatus {
pub fn is_success(&self) -> bool {
match self {
CibouletteResponseStatus::Ok
| CibouletteResponseStatus::OkEmpty
| CibouletteResponseStatus::OkAsync
| CibouletteResponseStatus::Created => true,
CibouletteResponseStatus::Unsupported
| CibouletteResponseStatus::NotFound
| CibouletteResponseStatus::Conflict => false,
}
}
pub fn get_status_for_ok_response<'request, 'response, B>(
request: &dyn CibouletteRequestCommons<'request>,
response_body: &CibouletteResponseBody<'response, B>,
) -> Self {
match (request.intention(), response_body.data()) {
(CibouletteIntention::Create, CibouletteOptionalData::Object(_)) => {
CibouletteResponseStatus::Created
}
(CibouletteIntention::Create, CibouletteOptionalData::Null(_)) => {
CibouletteResponseStatus::Ok
}
(CibouletteIntention::Delete, _) => CibouletteResponseStatus::Ok,
(CibouletteIntention::Read, CibouletteOptionalData::Object(_)) => {
CibouletteResponseStatus::Ok
}
(CibouletteIntention::Read, CibouletteOptionalData::Null(_)) => {
CibouletteResponseStatus::NotFound
}
(CibouletteIntention::Update, CibouletteOptionalData::Object(_)) => {
CibouletteResponseStatus::Ok
}
(CibouletteIntention::Update, CibouletteOptionalData::Null(_)) => {
CibouletteResponseStatus::Ok
}
}
}
}