use crate::blueprint::constructor::Constructor;
use crate::blueprint::linter::Lint;
use crate::blueprint::middleware::PostProcessingMiddleware;
use crate::blueprint::Blueprint;
use crate::f;
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct CookieKit {
pub request_cookies: Option<Constructor>,
pub response_cookies: Option<Constructor>,
pub processor: Option<Constructor>,
pub processor_config: Option<Constructor>,
pub response_cookie_injector: Option<PostProcessingMiddleware>,
}
impl CookieKit {
pub fn new() -> Self {
let request_cookies = Constructor::request_scoped(f!(super::extract_request_cookies))
.error_handler(f!(super::errors::ExtractRequestCookiesError::into_response))
.ignore(Lint::Unused);
let response_cookies =
Constructor::request_scoped(f!(super::ResponseCookies::new)).ignore(Lint::Unused);
let response_cookie_injector =
PostProcessingMiddleware::new(f!(super::inject_response_cookies))
.error_handler(f!(super::errors::InjectResponseCookiesError::into_response));
let processor = Constructor::singleton(f!(<super::Processor as std::convert::From<
super::ProcessorConfig,
>>::from))
.ignore(Lint::Unused);
Self {
request_cookies: Some(request_cookies),
response_cookies: Some(response_cookies),
response_cookie_injector: Some(response_cookie_injector),
processor: Some(processor),
processor_config: None,
}
}
pub fn with_default_processor_config(mut self) -> Self {
let constructor = Constructor::singleton(f!(
<super::ProcessorConfig as std::default::Default>::default
))
.ignore(Lint::Unused);
self.processor_config = Some(constructor);
self
}
pub fn register(self, bp: &mut Blueprint) -> RegisteredCookieKit {
if let Some(request_cookies) = self.request_cookies {
request_cookies.register(bp);
}
if let Some(response_cookies) = self.response_cookies {
response_cookies.register(bp);
}
if let Some(response_cookie_injector) = self.response_cookie_injector {
response_cookie_injector.register(bp);
}
if let Some(processor) = self.processor {
processor.register(bp);
}
if let Some(processor_config) = self.processor_config {
processor_config.register(bp);
}
RegisteredCookieKit {}
}
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct RegisteredCookieKit {}