use std::any::type_name;
use crate::client::RetryOverride;
use crate::client::transport::retry::RetrySafety;
#[derive(Debug)]
pub enum BodyKind<'a> {
None,
Json(&'a serde_json::Value),
Bytes(&'a bytes::Bytes),
Multipart(&'a super::multipart::MultipartBodyFactory),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ResponseMode {
Json,
Binary,
}
pub struct PreparedRequest<'a> {
pub method: &'static str,
pub url: String,
pub body: BodyKind<'a>,
pub retry_safety: RetrySafety,
pub retry_override: Option<RetryOverride>,
pub response_mode: ResponseMode,
pub route_template: &'static str,
}
impl<'a> std::fmt::Debug for PreparedRequest<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("PreparedRequest")
.field("method", &self.method)
.field("route", &self.route_template)
.field("retry_safety", &self.retry_safety)
.field("retry_override", &self.retry_override.is_some())
.finish_non_exhaustive()
}
}
mod private {
pub trait Sealed {}
}
#[allow(unused)] pub trait RequestSpec: private::Sealed {
fn spec_name(&self) -> &'static str {
type_name::<Self>()
}
const METHOD: &'static str;
const PATH_TEMPLATE: &'static str;
const RETRY_SAFETY: RetrySafety;
const REQUEST_CONTENT_TYPE: &'static str;
const ACCEPT: &'static str;
const REQUIRES_DONE: bool;
}