use crate::blueprint::constructor::Constructor;
use crate::blueprint::linter::Lint;
use crate::blueprint::Blueprint;
use crate::request::body::{BodySizeLimit, BufferedBody, JsonBody};
use crate::request::path::PathParams;
use crate::request::query::QueryParams;
use crate::telemetry::ServerRequestId;
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct ApiKit {
pub path_params: Option<Constructor>,
pub query_params: Option<Constructor>,
pub json_body: Option<Constructor>,
pub buffered_body: Option<Constructor>,
pub body_size_limit: Option<Constructor>,
pub server_request_id: Option<Constructor>,
}
impl ApiKit {
pub fn new() -> Self {
Self {
path_params: Some(PathParams::default_constructor().ignore(Lint::Unused)),
query_params: Some(QueryParams::default_constructor().ignore(Lint::Unused)),
json_body: Some(JsonBody::default_constructor().ignore(Lint::Unused)),
buffered_body: Some(BufferedBody::default_constructor().ignore(Lint::Unused)),
body_size_limit: Some(BodySizeLimit::default_constructor().ignore(Lint::Unused)),
server_request_id: Some(ServerRequestId::default_constructor().ignore(Lint::Unused)),
}
}
pub fn register(self, bp: &mut Blueprint) -> RegisteredApiKit {
if let Some(path_params) = self.path_params {
path_params.register(bp);
}
if let Some(query_params) = self.query_params {
query_params.register(bp);
}
if let Some(json_body) = self.json_body {
json_body.register(bp);
}
if let Some(buffered_body) = self.buffered_body {
buffered_body.register(bp);
}
if let Some(body_size_limit) = self.body_size_limit {
body_size_limit.register(bp);
}
if let Some(server_request_id) = self.server_request_id {
server_request_id.register(bp);
}
RegisteredApiKit {}
}
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct RegisteredApiKit {}