use serde::{Serialize, Deserialize};
use serde_json::Value as JsonValue;
use std::borrow::Cow;
pub type CacheId<'a> = Cow<'a, str>;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum CachedResponseType {
#[default]
#[serde(rename = "basic")]
Basic,
#[serde(rename = "cors")]
Cors,
#[serde(rename = "default")]
Default,
#[serde(rename = "error")]
Error,
#[serde(rename = "opaqueResponse")]
OpaqueResponse,
#[serde(rename = "opaqueRedirect")]
OpaqueRedirect,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct DataEntry<'a> {
#[serde(rename = "requestURL")]
request_url: Cow<'a, str>,
#[serde(rename = "requestMethod")]
request_method: Cow<'a, str>,
#[serde(rename = "requestHeaders")]
request_headers: Vec<Header<'a>>,
#[serde(rename = "responseTime")]
response_time: f64,
#[serde(rename = "responseStatus")]
response_status: i64,
#[serde(rename = "responseStatusText")]
response_status_text: Cow<'a, str>,
#[serde(rename = "responseType")]
response_type: CachedResponseType,
#[serde(rename = "responseHeaders")]
response_headers: Vec<Header<'a>>,
}
impl<'a> DataEntry<'a> {
pub fn builder(request_url: impl Into<Cow<'a, str>>, request_method: impl Into<Cow<'a, str>>, request_headers: Vec<Header<'a>>, response_time: f64, response_status: i64, response_status_text: impl Into<Cow<'a, str>>, response_type: impl Into<CachedResponseType>, response_headers: Vec<Header<'a>>) -> DataEntryBuilder<'a> {
DataEntryBuilder {
request_url: request_url.into(),
request_method: request_method.into(),
request_headers: request_headers,
response_time: response_time,
response_status: response_status,
response_status_text: response_status_text.into(),
response_type: response_type.into(),
response_headers: response_headers,
}
}
pub fn request_url(&self) -> &str { self.request_url.as_ref() }
pub fn request_method(&self) -> &str { self.request_method.as_ref() }
pub fn request_headers(&self) -> &[Header<'a>] { &self.request_headers }
pub fn response_time(&self) -> f64 { self.response_time }
pub fn response_status(&self) -> i64 { self.response_status }
pub fn response_status_text(&self) -> &str { self.response_status_text.as_ref() }
pub fn response_type(&self) -> &CachedResponseType { &self.response_type }
pub fn response_headers(&self) -> &[Header<'a>] { &self.response_headers }
}
pub struct DataEntryBuilder<'a> {
request_url: Cow<'a, str>,
request_method: Cow<'a, str>,
request_headers: Vec<Header<'a>>,
response_time: f64,
response_status: i64,
response_status_text: Cow<'a, str>,
response_type: CachedResponseType,
response_headers: Vec<Header<'a>>,
}
impl<'a> DataEntryBuilder<'a> {
pub fn build(self) -> DataEntry<'a> {
DataEntry {
request_url: self.request_url,
request_method: self.request_method,
request_headers: self.request_headers,
response_time: self.response_time,
response_status: self.response_status,
response_status_text: self.response_status_text,
response_type: self.response_type,
response_headers: self.response_headers,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Cache<'a> {
#[serde(rename = "cacheId")]
cache_id: CacheId<'a>,
#[serde(rename = "securityOrigin")]
security_origin: Cow<'a, str>,
#[serde(rename = "storageKey")]
storage_key: Cow<'a, str>,
#[serde(skip_serializing_if = "Option::is_none", rename = "storageBucket")]
storage_bucket: Option<crate::storage::StorageBucket<'a>>,
#[serde(rename = "cacheName")]
cache_name: Cow<'a, str>,
}
impl<'a> Cache<'a> {
pub fn builder(cache_id: impl Into<CacheId<'a>>, security_origin: impl Into<Cow<'a, str>>, storage_key: impl Into<Cow<'a, str>>, cache_name: impl Into<Cow<'a, str>>) -> CacheBuilder<'a> {
CacheBuilder {
cache_id: cache_id.into(),
security_origin: security_origin.into(),
storage_key: storage_key.into(),
storage_bucket: None,
cache_name: cache_name.into(),
}
}
pub fn cache_id(&self) -> &CacheId<'a> { &self.cache_id }
pub fn security_origin(&self) -> &str { self.security_origin.as_ref() }
pub fn storage_key(&self) -> &str { self.storage_key.as_ref() }
pub fn storage_bucket(&self) -> Option<&crate::storage::StorageBucket<'a>> { self.storage_bucket.as_ref() }
pub fn cache_name(&self) -> &str { self.cache_name.as_ref() }
}
pub struct CacheBuilder<'a> {
cache_id: CacheId<'a>,
security_origin: Cow<'a, str>,
storage_key: Cow<'a, str>,
storage_bucket: Option<crate::storage::StorageBucket<'a>>,
cache_name: Cow<'a, str>,
}
impl<'a> CacheBuilder<'a> {
pub fn storage_bucket(mut self, storage_bucket: crate::storage::StorageBucket<'a>) -> Self { self.storage_bucket = Some(storage_bucket); self }
pub fn build(self) -> Cache<'a> {
Cache {
cache_id: self.cache_id,
security_origin: self.security_origin,
storage_key: self.storage_key,
storage_bucket: self.storage_bucket,
cache_name: self.cache_name,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Header<'a> {
name: Cow<'a, str>,
value: Cow<'a, str>,
}
impl<'a> Header<'a> {
pub fn builder(name: impl Into<Cow<'a, str>>, value: impl Into<Cow<'a, str>>) -> HeaderBuilder<'a> {
HeaderBuilder {
name: name.into(),
value: value.into(),
}
}
pub fn name(&self) -> &str { self.name.as_ref() }
pub fn value(&self) -> &str { self.value.as_ref() }
}
pub struct HeaderBuilder<'a> {
name: Cow<'a, str>,
value: Cow<'a, str>,
}
impl<'a> HeaderBuilder<'a> {
pub fn build(self) -> Header<'a> {
Header {
name: self.name,
value: self.value,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CachedResponse<'a> {
body: Cow<'a, str>,
}
impl<'a> CachedResponse<'a> {
pub fn builder(body: impl Into<Cow<'a, str>>) -> CachedResponseBuilder<'a> {
CachedResponseBuilder {
body: body.into(),
}
}
pub fn body(&self) -> &str { self.body.as_ref() }
}
pub struct CachedResponseBuilder<'a> {
body: Cow<'a, str>,
}
impl<'a> CachedResponseBuilder<'a> {
pub fn build(self) -> CachedResponse<'a> {
CachedResponse {
body: self.body,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct DeleteCacheParams<'a> {
#[serde(rename = "cacheId")]
cache_id: CacheId<'a>,
}
impl<'a> DeleteCacheParams<'a> {
pub fn builder(cache_id: impl Into<CacheId<'a>>) -> DeleteCacheParamsBuilder<'a> {
DeleteCacheParamsBuilder {
cache_id: cache_id.into(),
}
}
pub fn cache_id(&self) -> &CacheId<'a> { &self.cache_id }
}
pub struct DeleteCacheParamsBuilder<'a> {
cache_id: CacheId<'a>,
}
impl<'a> DeleteCacheParamsBuilder<'a> {
pub fn build(self) -> DeleteCacheParams<'a> {
DeleteCacheParams {
cache_id: self.cache_id,
}
}
}
impl<'a> DeleteCacheParams<'a> { pub const METHOD: &'static str = "CacheStorage.deleteCache"; }
impl<'a> crate::CdpCommand<'a> for DeleteCacheParams<'a> {
const METHOD: &'static str = "CacheStorage.deleteCache";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct DeleteEntryParams<'a> {
#[serde(rename = "cacheId")]
cache_id: CacheId<'a>,
request: Cow<'a, str>,
}
impl<'a> DeleteEntryParams<'a> {
pub fn builder(cache_id: impl Into<CacheId<'a>>, request: impl Into<Cow<'a, str>>) -> DeleteEntryParamsBuilder<'a> {
DeleteEntryParamsBuilder {
cache_id: cache_id.into(),
request: request.into(),
}
}
pub fn cache_id(&self) -> &CacheId<'a> { &self.cache_id }
pub fn request(&self) -> &str { self.request.as_ref() }
}
pub struct DeleteEntryParamsBuilder<'a> {
cache_id: CacheId<'a>,
request: Cow<'a, str>,
}
impl<'a> DeleteEntryParamsBuilder<'a> {
pub fn build(self) -> DeleteEntryParams<'a> {
DeleteEntryParams {
cache_id: self.cache_id,
request: self.request,
}
}
}
impl<'a> DeleteEntryParams<'a> { pub const METHOD: &'static str = "CacheStorage.deleteEntry"; }
impl<'a> crate::CdpCommand<'a> for DeleteEntryParams<'a> {
const METHOD: &'static str = "CacheStorage.deleteEntry";
type Response = crate::EmptyReturns;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RequestCacheNamesParams<'a> {
#[serde(skip_serializing_if = "Option::is_none", rename = "securityOrigin")]
security_origin: Option<Cow<'a, str>>,
#[serde(skip_serializing_if = "Option::is_none", rename = "storageKey")]
storage_key: Option<Cow<'a, str>>,
#[serde(skip_serializing_if = "Option::is_none", rename = "storageBucket")]
storage_bucket: Option<crate::storage::StorageBucket<'a>>,
}
impl<'a> RequestCacheNamesParams<'a> {
pub fn builder() -> RequestCacheNamesParamsBuilder<'a> {
RequestCacheNamesParamsBuilder {
security_origin: None,
storage_key: None,
storage_bucket: None,
}
}
pub fn security_origin(&self) -> Option<&str> { self.security_origin.as_deref() }
pub fn storage_key(&self) -> Option<&str> { self.storage_key.as_deref() }
pub fn storage_bucket(&self) -> Option<&crate::storage::StorageBucket<'a>> { self.storage_bucket.as_ref() }
}
#[derive(Default)]
pub struct RequestCacheNamesParamsBuilder<'a> {
security_origin: Option<Cow<'a, str>>,
storage_key: Option<Cow<'a, str>>,
storage_bucket: Option<crate::storage::StorageBucket<'a>>,
}
impl<'a> RequestCacheNamesParamsBuilder<'a> {
pub fn security_origin(mut self, security_origin: impl Into<Cow<'a, str>>) -> Self { self.security_origin = Some(security_origin.into()); self }
pub fn storage_key(mut self, storage_key: impl Into<Cow<'a, str>>) -> Self { self.storage_key = Some(storage_key.into()); self }
pub fn storage_bucket(mut self, storage_bucket: crate::storage::StorageBucket<'a>) -> Self { self.storage_bucket = Some(storage_bucket); self }
pub fn build(self) -> RequestCacheNamesParams<'a> {
RequestCacheNamesParams {
security_origin: self.security_origin,
storage_key: self.storage_key,
storage_bucket: self.storage_bucket,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RequestCacheNamesReturns<'a> {
caches: Vec<Cache<'a>>,
}
impl<'a> RequestCacheNamesReturns<'a> {
pub fn builder(caches: Vec<Cache<'a>>) -> RequestCacheNamesReturnsBuilder<'a> {
RequestCacheNamesReturnsBuilder {
caches: caches,
}
}
pub fn caches(&self) -> &[Cache<'a>] { &self.caches }
}
pub struct RequestCacheNamesReturnsBuilder<'a> {
caches: Vec<Cache<'a>>,
}
impl<'a> RequestCacheNamesReturnsBuilder<'a> {
pub fn build(self) -> RequestCacheNamesReturns<'a> {
RequestCacheNamesReturns {
caches: self.caches,
}
}
}
impl<'a> RequestCacheNamesParams<'a> { pub const METHOD: &'static str = "CacheStorage.requestCacheNames"; }
impl<'a> crate::CdpCommand<'a> for RequestCacheNamesParams<'a> {
const METHOD: &'static str = "CacheStorage.requestCacheNames";
type Response = RequestCacheNamesReturns<'a>;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RequestCachedResponseParams<'a> {
#[serde(rename = "cacheId")]
cache_id: CacheId<'a>,
#[serde(rename = "requestURL")]
request_url: Cow<'a, str>,
#[serde(rename = "requestHeaders")]
request_headers: Vec<Header<'a>>,
}
impl<'a> RequestCachedResponseParams<'a> {
pub fn builder(cache_id: impl Into<CacheId<'a>>, request_url: impl Into<Cow<'a, str>>, request_headers: Vec<Header<'a>>) -> RequestCachedResponseParamsBuilder<'a> {
RequestCachedResponseParamsBuilder {
cache_id: cache_id.into(),
request_url: request_url.into(),
request_headers: request_headers,
}
}
pub fn cache_id(&self) -> &CacheId<'a> { &self.cache_id }
pub fn request_url(&self) -> &str { self.request_url.as_ref() }
pub fn request_headers(&self) -> &[Header<'a>] { &self.request_headers }
}
pub struct RequestCachedResponseParamsBuilder<'a> {
cache_id: CacheId<'a>,
request_url: Cow<'a, str>,
request_headers: Vec<Header<'a>>,
}
impl<'a> RequestCachedResponseParamsBuilder<'a> {
pub fn build(self) -> RequestCachedResponseParams<'a> {
RequestCachedResponseParams {
cache_id: self.cache_id,
request_url: self.request_url,
request_headers: self.request_headers,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RequestCachedResponseReturns<'a> {
response: CachedResponse<'a>,
}
impl<'a> RequestCachedResponseReturns<'a> {
pub fn builder(response: CachedResponse<'a>) -> RequestCachedResponseReturnsBuilder<'a> {
RequestCachedResponseReturnsBuilder {
response: response,
}
}
pub fn response(&self) -> &CachedResponse<'a> { &self.response }
}
pub struct RequestCachedResponseReturnsBuilder<'a> {
response: CachedResponse<'a>,
}
impl<'a> RequestCachedResponseReturnsBuilder<'a> {
pub fn build(self) -> RequestCachedResponseReturns<'a> {
RequestCachedResponseReturns {
response: self.response,
}
}
}
impl<'a> RequestCachedResponseParams<'a> { pub const METHOD: &'static str = "CacheStorage.requestCachedResponse"; }
impl<'a> crate::CdpCommand<'a> for RequestCachedResponseParams<'a> {
const METHOD: &'static str = "CacheStorage.requestCachedResponse";
type Response = RequestCachedResponseReturns<'a>;
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RequestEntriesParams<'a> {
#[serde(rename = "cacheId")]
cache_id: CacheId<'a>,
#[serde(skip_serializing_if = "Option::is_none", rename = "skipCount")]
skip_count: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none", rename = "pageSize")]
page_size: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none", rename = "pathFilter")]
path_filter: Option<Cow<'a, str>>,
}
impl<'a> RequestEntriesParams<'a> {
pub fn builder(cache_id: impl Into<CacheId<'a>>) -> RequestEntriesParamsBuilder<'a> {
RequestEntriesParamsBuilder {
cache_id: cache_id.into(),
skip_count: None,
page_size: None,
path_filter: None,
}
}
pub fn cache_id(&self) -> &CacheId<'a> { &self.cache_id }
pub fn skip_count(&self) -> Option<u64> { self.skip_count }
pub fn page_size(&self) -> Option<u64> { self.page_size }
pub fn path_filter(&self) -> Option<&str> { self.path_filter.as_deref() }
}
pub struct RequestEntriesParamsBuilder<'a> {
cache_id: CacheId<'a>,
skip_count: Option<u64>,
page_size: Option<u64>,
path_filter: Option<Cow<'a, str>>,
}
impl<'a> RequestEntriesParamsBuilder<'a> {
pub fn skip_count(mut self, skip_count: u64) -> Self { self.skip_count = Some(skip_count); self }
pub fn page_size(mut self, page_size: u64) -> Self { self.page_size = Some(page_size); self }
pub fn path_filter(mut self, path_filter: impl Into<Cow<'a, str>>) -> Self { self.path_filter = Some(path_filter.into()); self }
pub fn build(self) -> RequestEntriesParams<'a> {
RequestEntriesParams {
cache_id: self.cache_id,
skip_count: self.skip_count,
page_size: self.page_size,
path_filter: self.path_filter,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct RequestEntriesReturns<'a> {
#[serde(rename = "cacheDataEntries")]
cache_data_entries: Vec<DataEntry<'a>>,
#[serde(rename = "returnCount")]
return_count: f64,
}
impl<'a> RequestEntriesReturns<'a> {
pub fn builder(cache_data_entries: Vec<DataEntry<'a>>, return_count: f64) -> RequestEntriesReturnsBuilder<'a> {
RequestEntriesReturnsBuilder {
cache_data_entries: cache_data_entries,
return_count: return_count,
}
}
pub fn cache_data_entries(&self) -> &[DataEntry<'a>] { &self.cache_data_entries }
pub fn return_count(&self) -> f64 { self.return_count }
}
pub struct RequestEntriesReturnsBuilder<'a> {
cache_data_entries: Vec<DataEntry<'a>>,
return_count: f64,
}
impl<'a> RequestEntriesReturnsBuilder<'a> {
pub fn build(self) -> RequestEntriesReturns<'a> {
RequestEntriesReturns {
cache_data_entries: self.cache_data_entries,
return_count: self.return_count,
}
}
}
impl<'a> RequestEntriesParams<'a> { pub const METHOD: &'static str = "CacheStorage.requestEntries"; }
impl<'a> crate::CdpCommand<'a> for RequestEntriesParams<'a> {
const METHOD: &'static str = "CacheStorage.requestEntries";
type Response = RequestEntriesReturns<'a>;
}