diff --git a/crates/meilisearch-types/src/error.rs b/crates/meilisearch-types/src/error.rs index 458034c00..491f87cf7 100644 --- a/crates/meilisearch-types/src/error.rs +++ b/crates/meilisearch-types/src/error.rs @@ -236,9 +236,11 @@ InvalidDocumentFields , InvalidRequest , BAD_REQU InvalidDocumentRetrieveVectors , InvalidRequest , BAD_REQUEST ; MissingDocumentFilter , InvalidRequest , BAD_REQUEST ; MissingDocumentEditionFunction , InvalidRequest , BAD_REQUEST ; +InconsistentDocumentChangeHeaders , InvalidRequest , BAD_REQUEST ; InvalidDocumentFilter , InvalidRequest , BAD_REQUEST ; InvalidDocumentSort , InvalidRequest , BAD_REQUEST ; InvalidDocumentGeoField , InvalidRequest , BAD_REQUEST ; +InvalidHeaderValue , InvalidRequest , BAD_REQUEST ; InvalidVectorDimensions , InvalidRequest , BAD_REQUEST ; InvalidVectorsType , InvalidRequest , BAD_REQUEST ; InvalidDocumentId , InvalidRequest , BAD_REQUEST ; @@ -267,7 +269,9 @@ InvalidMultiSearchRemote , InvalidRequest , BAD_REQU InvalidMultiSearchWeight , InvalidRequest , BAD_REQUEST ; InvalidNetworkRemotes , InvalidRequest , BAD_REQUEST ; InvalidNetworkSelf , InvalidRequest , BAD_REQUEST ; +InvalidNetworkSharding , InvalidRequest , BAD_REQUEST ; InvalidNetworkSearchApiKey , InvalidRequest , BAD_REQUEST ; +InvalidNetworkWriteApiKey , InvalidRequest , BAD_REQUEST ; InvalidNetworkUrl , InvalidRequest , BAD_REQUEST ; InvalidSearchAttributesToSearchOn , InvalidRequest , BAD_REQUEST ; InvalidSearchAttributesToCrop , InvalidRequest , BAD_REQUEST ; diff --git a/crates/meilisearch/src/error.rs b/crates/meilisearch/src/error.rs index 8d4430f07..c90c7c226 100644 --- a/crates/meilisearch/src/error.rs +++ b/crates/meilisearch/src/error.rs @@ -9,6 +9,8 @@ use meilisearch_types::milli::OrderBy; use serde_json::Value; use tokio::task::JoinError; +use crate::routes::indexes::{PROXY_ORIGIN_REMOTE_HEADER, PROXY_ORIGIN_TASK_UID_HEADER}; + #[derive(Debug, thiserror::Error)] pub enum MeilisearchHttpError { #[error("A Content-Type header is missing. Accepted values for the Content-Type header are: {}", @@ -80,6 +82,16 @@ pub enum MeilisearchHttpError { MissingSearchHybrid, #[error("Invalid request: both `media` and `vector` parameters are present.")] MediaAndVector, + #[error("Inconsistent `Origin` headers: {} was provided but {} is missing.\n - Hint: Either both headers should be provided, or none of them", if *is_remote_missing { + PROXY_ORIGIN_TASK_UID_HEADER + } else { PROXY_ORIGIN_REMOTE_HEADER }, + if *is_remote_missing { + PROXY_ORIGIN_REMOTE_HEADER + } else { PROXY_ORIGIN_TASK_UID_HEADER } +)] + InconsistentOriginHeaders { is_remote_missing: bool }, + #[error("Invalid value for header {header_name}: {msg}")] + InvalidHeaderValue { header_name: &'static str, msg: String }, } impl MeilisearchHttpError { @@ -124,6 +136,10 @@ impl ErrorCode for MeilisearchHttpError { MeilisearchHttpError::InconsistentFacetOrder { .. } => { Code::InvalidMultiSearchFacetOrder } + MeilisearchHttpError::InconsistentOriginHeaders { .. } => { + Code::InconsistentDocumentChangeHeaders + } + MeilisearchHttpError::InvalidHeaderValue { .. } => Code::InvalidHeaderValue, } } }