mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-01-23 21:45:00 +03:00
25 lines
941 B
Python
25 lines
941 B
Python
|
from typing import Optional, Sequence
|
||
|
from urllib.parse import urlparse
|
||
|
|
||
|
ENFORCE_URL_ORIGIN_FORMAT = "Input origins must be well-formed URLs, i.e. https://google.com or https://www.google.com."
|
||
|
SCHEMAS = ('http', 'https')
|
||
|
LOCAL_ORIGINS = ('127.0.0.1', 'localhost')
|
||
|
|
||
|
def compute_local_origins(port: Optional[int] = None) -> list[str]:
|
||
|
local_origins = [f'{schema}://{origin}' for schema in SCHEMAS for origin in LOCAL_ORIGINS]
|
||
|
if port is not None:
|
||
|
local_origins = [f'{origin}:{port}' for origin in local_origins]
|
||
|
return local_origins
|
||
|
|
||
|
|
||
|
def normalize_origins(origins: Sequence[str]) -> set[str]:
|
||
|
allowed_origins = set()
|
||
|
for origin in origins:
|
||
|
url = urlparse(origin)
|
||
|
assert url.scheme, ENFORCE_URL_ORIGIN_FORMAT
|
||
|
valid_origin = f'{url.scheme}://{url.hostname}'
|
||
|
if url.port:
|
||
|
valid_origin += f':{url.port}'
|
||
|
allowed_origins.add(valid_origin)
|
||
|
return allowed_origins
|