mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2026-10-03 12:01:58 +00:00
feat(resolvespec-python): add Python client for ResolveSpec, HeaderSpec, FunctionSpec and WebSocketSpec
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
"""ResolveSpec Python client: REST (ResolveSpec), HeaderSpec and WebSocketSpec."""
|
||||
from typing import Mapping, Optional
|
||||
|
||||
from .headerspec import (
|
||||
AsyncHeaderSpecClient,
|
||||
HeaderSpecClient,
|
||||
build_headers,
|
||||
decode_header_value,
|
||||
encode_header_value,
|
||||
)
|
||||
from .funcspec import AsyncFuncSpecClient, FuncSpecClient
|
||||
from .http import ResolveSpecError, merge_headers
|
||||
from .resolvespec import AsyncResolveSpecClient, ResolveSpecClient
|
||||
from .types import * # noqa: F401,F403
|
||||
from .websocket import Subscription, WebSocketClient
|
||||
|
||||
|
||||
def _cache_key(base_url: str, token: Optional[str], headers: Optional[Mapping[str, str]]):
|
||||
return (
|
||||
base_url,
|
||||
token,
|
||||
tuple(sorted((k.lower(), v) for k, v in (headers or {}).items())),
|
||||
)
|
||||
|
||||
|
||||
_resolvespec: dict = {}
|
||||
_headerspec: dict = {}
|
||||
|
||||
|
||||
def get_resolvespec_client(base_url: str, token: Optional[str] = None, headers: Optional[Mapping[str, str]] = None) -> ResolveSpecClient:
|
||||
"""Cached sync client, keyed by base_url + token + headers (case-insensitive names)."""
|
||||
key = _cache_key(base_url, token, headers)
|
||||
if key not in _resolvespec:
|
||||
_resolvespec[key] = ResolveSpecClient(base_url, token, headers)
|
||||
return _resolvespec[key]
|
||||
|
||||
|
||||
def get_headerspec_client(base_url: str, token: Optional[str] = None, headers: Optional[Mapping[str, str]] = None) -> HeaderSpecClient:
|
||||
"""Cached sync client, keyed by base_url + token + headers (case-insensitive names)."""
|
||||
key = _cache_key(base_url, token, headers)
|
||||
if key not in _headerspec:
|
||||
_headerspec[key] = HeaderSpecClient(base_url, token, headers)
|
||||
return _headerspec[key]
|
||||
Reference in New Issue
Block a user