objectiveai_api/vector/completions/
error.rs1#[derive(Debug, thiserror::Error)]
5pub enum Error {
6 #[error("invalid profile: {0}")]
8 InvalidProfile(String),
9 #[error("fetch retry error: {0}")]
11 FetchRetry(objectiveai::error::ResponseError),
12 #[error("retry not found")]
14 RetryNotFound,
15 #[error("fetch cache vote error: {0}")]
17 FetchCacheVote(objectiveai::error::ResponseError),
18 #[error("fetch ensemble error: {0}")]
20 FetchEnsemble(objectiveai::error::ResponseError),
21 #[error("ensemble not found")]
23 EnsembleNotFound,
24 #[error("invalid ensemble: {0}")]
26 InvalidEnsemble(String),
27 #[error("expected two or more request vector responses, got {0}")]
29 ExpectedTwoOrMoreRequestVectorResponses(usize),
30}
31
32impl objectiveai::error::StatusError for Error {
33 fn status(&self) -> u16 {
34 match self {
35 Error::InvalidProfile(_) => 400,
36 Error::FetchRetry(e) => e.status(),
37 Error::RetryNotFound => 404,
38 Error::FetchCacheVote(e) => e.status(),
39 Error::FetchEnsemble(e) => e.status(),
40 Error::EnsembleNotFound => 404,
41 Error::InvalidEnsemble(_) => 400,
42 Error::ExpectedTwoOrMoreRequestVectorResponses(_) => 400,
43 }
44 }
45
46 fn message(&self) -> Option<serde_json::Value> {
47 Some(serde_json::json!({
48 "kind": "vector",
49 "error": match self {
50 Error::InvalidProfile(msg) => serde_json::json!({
51 "kind": "invalid_profile",
52 "error": msg,
53 }),
54 Error::FetchRetry(e) => serde_json::json!({
55 "kind": "fetch_retry",
56 "error": e.message(),
57 }),
58 Error::RetryNotFound => serde_json::json!({
59 "kind": "retry_not_found",
60 "error": "retry not found",
61 }),
62 Error::FetchCacheVote(e) => serde_json::json!({
63 "kind": "fetch_cache_vote",
64 "error": e.message(),
65 }),
66 Error::FetchEnsemble(e) => serde_json::json!({
67 "kind": "fetch_ensemble",
68 "error": e.message(),
69 }),
70 Error::EnsembleNotFound => serde_json::json!({
71 "kind": "ensemble_not_found",
72 "error": "ensemble not found",
73 }),
74 Error::InvalidEnsemble(msg) => serde_json::json!({
75 "kind": "invalid_ensemble",
76 "error": msg,
77 }),
78 Error::ExpectedTwoOrMoreRequestVectorResponses(n) => serde_json::json!({
79 "kind": "expected_two_or_more_request_vector_responses",
80 "error": format!("expected two or more request vector responses, got {}", n),
81 }),
82 }
83 }))
84 }
85}