mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2026-06-24 13:45:11 +00:00
28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class LookupCredentials:
|
|
"""Per-request credentials for QRZ.com and HamQTH online callsign lookups."""
|
|
qrz_username: str = ""
|
|
qrz_password: str = ""
|
|
qrz_session_key: str = "" # alternative to username/password
|
|
hamqth_username: str = ""
|
|
hamqth_password: str = ""
|
|
hamqth_session_id: str = "" # alternative to username/password
|
|
|
|
|
|
def extract_credentials(headers):
|
|
"""Build a LookupCredentials from HTTP request headers; returns None if no usable credentials are present."""
|
|
creds = LookupCredentials(
|
|
qrz_username=headers.get("X-QRZ-Username", ""),
|
|
qrz_password=headers.get("X-QRZ-Password", ""),
|
|
qrz_session_key=headers.get("X-QRZ-Session-Key", ""),
|
|
hamqth_username=headers.get("X-HamQTH-Username", ""),
|
|
hamqth_password=headers.get("X-HamQTH-Password", ""),
|
|
hamqth_session_id=headers.get("X-HamQTH-Session-ID", ""),
|
|
)
|
|
has_qrz = creds.qrz_session_key or (creds.qrz_username and creds.qrz_password)
|
|
has_hamqth = creds.hamqth_session_id or (creds.hamqth_username and creds.hamqth_password)
|
|
return creds if (has_qrz or has_hamqth) else None
|