cli_engine/transport/
mod.rs1use std::borrow::Cow;
10
11use serde::{Deserialize, Serialize};
12
13use crate::DetailedError;
14
15pub mod client;
17pub mod injector;
19
20pub use client::{
21 HttpClient, HttpClientBuilder, NoopTransportLogger, TransportLogEvent, TransportLogger,
22 set_default_user_agent,
23};
24pub use injector::{
25 ApiKeyInjector, AuthInjector, BasicAuthInjector, BearerTokenInjector,
26 ClientCredentialsInjector, CookieInjector, NoopInjector, ProviderBearerInjector, TokenFunc,
27};
28
29#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, thiserror::Error)]
31#[error("{message}")]
32pub struct Error {
33 pub code: String,
35 pub message: String,
37 #[serde(default, skip_serializing_if = "String::is_empty")]
39 pub system: String,
40 #[serde(default, skip_serializing_if = "String::is_empty")]
42 pub request_id: String,
43}
44
45impl DetailedError for Error {
46 fn error_code(&self) -> Cow<'static, str> {
47 Cow::Owned(self.code.clone())
48 }
49
50 fn error_system(&self) -> Option<Cow<'static, str>> {
51 (!self.system.is_empty()).then(|| Cow::Owned(self.system.clone()))
52 }
53
54 fn error_request_id(&self) -> Option<Cow<'static, str>> {
55 (!self.request_id.is_empty()).then(|| Cow::Owned(self.request_id.clone()))
56 }
57}