You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
288 lines
7.6 KiB
Python
288 lines
7.6 KiB
Python
# DO NOT EDIT THIS FILE!
|
|
#
|
|
# This file is generated from the CDP specification. If you need to make
|
|
# changes, edit the generator and regenerate all of the modules.
|
|
#
|
|
# CDP domain: CacheStorage (experimental)
|
|
from __future__ import annotations
|
|
from .util import event_class, T_JSON_DICT
|
|
from dataclasses import dataclass
|
|
import enum
|
|
import typing
|
|
|
|
class CacheId(str):
|
|
'''
|
|
Unique identifier of the Cache object.
|
|
'''
|
|
def to_json(self) -> str:
|
|
return self
|
|
|
|
@classmethod
|
|
def from_json(cls, json: str) -> CacheId:
|
|
return cls(json)
|
|
|
|
def __repr__(self):
|
|
return 'CacheId({})'.format(super().__repr__())
|
|
|
|
|
|
class CachedResponseType(enum.Enum):
|
|
'''
|
|
type of HTTP response cached
|
|
'''
|
|
BASIC = "basic"
|
|
CORS = "cors"
|
|
DEFAULT = "default"
|
|
ERROR = "error"
|
|
OPAQUE_RESPONSE = "opaqueResponse"
|
|
OPAQUE_REDIRECT = "opaqueRedirect"
|
|
|
|
def to_json(self):
|
|
return self.value
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(json)
|
|
|
|
|
|
@dataclass
|
|
class DataEntry:
|
|
'''
|
|
Data entry.
|
|
'''
|
|
#: Request URL.
|
|
request_url: str
|
|
|
|
#: Request method.
|
|
request_method: str
|
|
|
|
#: Request headers
|
|
request_headers: typing.List[Header]
|
|
|
|
#: Number of seconds since epoch.
|
|
response_time: float
|
|
|
|
#: HTTP response status code.
|
|
response_status: int
|
|
|
|
#: HTTP response status text.
|
|
response_status_text: str
|
|
|
|
#: HTTP response type
|
|
response_type: CachedResponseType
|
|
|
|
#: Response headers
|
|
response_headers: typing.List[Header]
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['requestURL'] = self.request_url
|
|
json['requestMethod'] = self.request_method
|
|
json['requestHeaders'] = [i.to_json() for i in self.request_headers]
|
|
json['responseTime'] = self.response_time
|
|
json['responseStatus'] = self.response_status
|
|
json['responseStatusText'] = self.response_status_text
|
|
json['responseType'] = self.response_type.to_json()
|
|
json['responseHeaders'] = [i.to_json() for i in self.response_headers]
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
request_url=str(json['requestURL']),
|
|
request_method=str(json['requestMethod']),
|
|
request_headers=[Header.from_json(i) for i in json['requestHeaders']],
|
|
response_time=float(json['responseTime']),
|
|
response_status=int(json['responseStatus']),
|
|
response_status_text=str(json['responseStatusText']),
|
|
response_type=CachedResponseType.from_json(json['responseType']),
|
|
response_headers=[Header.from_json(i) for i in json['responseHeaders']],
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class Cache:
|
|
'''
|
|
Cache identifier.
|
|
'''
|
|
#: An opaque unique id of the cache.
|
|
cache_id: CacheId
|
|
|
|
#: Security origin of the cache.
|
|
security_origin: str
|
|
|
|
#: The name of the cache.
|
|
cache_name: str
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['cacheId'] = self.cache_id.to_json()
|
|
json['securityOrigin'] = self.security_origin
|
|
json['cacheName'] = self.cache_name
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
cache_id=CacheId.from_json(json['cacheId']),
|
|
security_origin=str(json['securityOrigin']),
|
|
cache_name=str(json['cacheName']),
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class Header:
|
|
name: str
|
|
|
|
value: str
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['name'] = self.name
|
|
json['value'] = self.value
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
name=str(json['name']),
|
|
value=str(json['value']),
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class CachedResponse:
|
|
'''
|
|
Cached response
|
|
'''
|
|
#: Entry content, base64-encoded.
|
|
body: str
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['body'] = self.body
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
body=str(json['body']),
|
|
)
|
|
|
|
|
|
def delete_cache(
|
|
cache_id: CacheId
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Deletes a cache.
|
|
|
|
:param cache_id: Id of cache for deletion.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['cacheId'] = cache_id.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'CacheStorage.deleteCache',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def delete_entry(
|
|
cache_id: CacheId,
|
|
request: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Deletes a cache entry.
|
|
|
|
:param cache_id: Id of cache where the entry will be deleted.
|
|
:param request: URL spec of the request.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['cacheId'] = cache_id.to_json()
|
|
params['request'] = request
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'CacheStorage.deleteEntry',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def request_cache_names(
|
|
security_origin: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.List[Cache]]:
|
|
'''
|
|
Requests cache names.
|
|
|
|
:param security_origin: Security origin.
|
|
:returns: Caches for the security origin.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['securityOrigin'] = security_origin
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'CacheStorage.requestCacheNames',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return [Cache.from_json(i) for i in json['caches']]
|
|
|
|
|
|
def request_cached_response(
|
|
cache_id: CacheId,
|
|
request_url: str,
|
|
request_headers: typing.List[Header]
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,CachedResponse]:
|
|
'''
|
|
Fetches cache entry.
|
|
|
|
:param cache_id: Id of cache that contains the entry.
|
|
:param request_url: URL spec of the request.
|
|
:param request_headers: headers of the request.
|
|
:returns: Response read from the cache.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['cacheId'] = cache_id.to_json()
|
|
params['requestURL'] = request_url
|
|
params['requestHeaders'] = [i.to_json() for i in request_headers]
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'CacheStorage.requestCachedResponse',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return CachedResponse.from_json(json['response'])
|
|
|
|
|
|
def request_entries(
|
|
cache_id: CacheId,
|
|
skip_count: typing.Optional[int] = None,
|
|
page_size: typing.Optional[int] = None,
|
|
path_filter: typing.Optional[str] = None
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.Tuple[typing.List[DataEntry], float]]:
|
|
'''
|
|
Requests data from cache.
|
|
|
|
:param cache_id: ID of cache to get entries from.
|
|
:param skip_count: *(Optional)* Number of records to skip.
|
|
:param page_size: *(Optional)* Number of records to fetch.
|
|
:param path_filter: *(Optional)* If present, only return the entries containing this substring in the path
|
|
:returns: A tuple with the following items:
|
|
|
|
0. **cacheDataEntries** - Array of object store data entries.
|
|
1. **returnCount** - Count of returned entries from this storage. If pathFilter is empty, it is the count of all entries from this storage.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['cacheId'] = cache_id.to_json()
|
|
if skip_count is not None:
|
|
params['skipCount'] = skip_count
|
|
if page_size is not None:
|
|
params['pageSize'] = page_size
|
|
if path_filter is not None:
|
|
params['pathFilter'] = path_filter
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'CacheStorage.requestEntries',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return (
|
|
[DataEntry.from_json(i) for i in json['cacheDataEntries']],
|
|
float(json['returnCount'])
|
|
)
|