076914e5b7
- Split client, native, remote, serve, markdown, and SDK internals into focused packages with direct imports. - Move local and remote transport framing/protocol helpers behind clearer module boundaries. - Break up the extension injected DOM logic into a separate content dispatch bundle and dedicated content modules. - Add explicit client handling for passive remote discovery without noisy PQ warnings. - Keep behavior covered with updated unit, integration, and extension tests.
86 lines
2.2 KiB
Python
86 lines
2.2 KiB
Python
"""Storage and cookies namespaces: ``b.storage.*``, ``b.cookies.*``."""
|
|
from __future__ import annotations
|
|
|
|
from browser_cli.sdk.base import Namespace, sdk_command
|
|
|
|
class StorageNS(Namespace):
|
|
"""Read and write localStorage / sessionStorage."""
|
|
|
|
@sdk_command("storage.get", lambda self, key=None, *, type="local", tab_id=None: {
|
|
"key": key,
|
|
"type": type,
|
|
"tabId": tab_id,
|
|
})
|
|
def get(
|
|
self,
|
|
key: str | None = None,
|
|
*,
|
|
type: str = "local",
|
|
tab_id: int | None = None,
|
|
) -> str | dict | None:
|
|
"""Get a localStorage/sessionStorage entry (or all entries if key omitted)."""
|
|
|
|
@sdk_command("storage.set", lambda self, key, value, *, type="local", tab_id=None: {
|
|
"key": key,
|
|
"value": value,
|
|
"type": type,
|
|
"tabId": tab_id,
|
|
})
|
|
def set(
|
|
self,
|
|
key: str,
|
|
value: str,
|
|
*,
|
|
type: str = "local",
|
|
tab_id: int | None = None,
|
|
) -> None:
|
|
"""Set a localStorage/sessionStorage entry."""
|
|
|
|
class CookiesNS(Namespace):
|
|
"""List, get, and set cookies."""
|
|
|
|
@sdk_command("cookies.list", lambda self, *, url=None, domain=None, name=None: {
|
|
"url": url,
|
|
"domain": domain,
|
|
"name": name,
|
|
}, default=[])
|
|
def list(
|
|
self,
|
|
*,
|
|
url: str | None = None,
|
|
domain: str | None = None,
|
|
name: str | None = None,
|
|
) -> list[dict]:
|
|
"""List cookies, optionally filtered by url, domain, or name."""
|
|
|
|
@sdk_command("cookies.get", lambda self, url, name: {"url": url, "name": name})
|
|
def get(self, url: str, name: str) -> dict | None:
|
|
"""Get a single cookie by url and name."""
|
|
|
|
@sdk_command("cookies.set", lambda self, url, name, value, *, domain=None, path=None, secure=None,
|
|
http_only=None, expiration_date=None, same_site=None: {
|
|
"url": url,
|
|
"name": name,
|
|
"value": value,
|
|
"domain": domain,
|
|
"path": path,
|
|
"secure": secure,
|
|
"httpOnly": http_only,
|
|
"expirationDate": expiration_date,
|
|
"sameSite": same_site,
|
|
})
|
|
def set(
|
|
self,
|
|
url: str,
|
|
name: str,
|
|
value: str,
|
|
*,
|
|
domain: str | None = None,
|
|
path: str | None = None,
|
|
secure: bool | None = None,
|
|
http_only: bool | None = None,
|
|
expiration_date: float | None = None,
|
|
same_site: str | None = None,
|
|
) -> dict:
|
|
"""Set a cookie. Returns the created cookie dict."""
|