From 45472e055f7d1ade94c6f3846dc9931f5d050ad8 Mon Sep 17 00:00:00 2001 From: Samuel Jones Date: Wed, 10 Jun 2026 15:40:48 +0100 Subject: [PATCH] Finalising tweaks before deployment. --- src/fares_site/api_calling.py | 2 +- src/fares_site/serve.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/fares_site/api_calling.py b/src/fares_site/api_calling.py index 7cf6b3f..0719e90 100644 --- a/src/fares_site/api_calling.py +++ b/src/fares_site/api_calling.py @@ -18,7 +18,7 @@ def fares_query( toc: str | None = None, ) -> list[dict[str, dict[str, str]]]: url = f"https://fares.ballast-data.co.uk/fares?origin={origin}&destination={destination}" - url += f"&toc={toc}" if toc is not None else "" + url += f"&toc={toc.upper()}" if toc is not None else "" response = requests.get( url=url, auth=( diff --git a/src/fares_site/serve.py b/src/fares_site/serve.py index 3adfdc9..ee630cd 100644 --- a/src/fares_site/serve.py +++ b/src/fares_site/serve.py @@ -35,6 +35,8 @@ COLUMN_RENAMES = { "restriction_code": "Restriction", } +VALID_QUERY_TERMS = ["origin", "destination", "toc"] + DEFAULT_TEMPLATE_PATH = Path(__file__).parents[2] / "media/template.html" logger: Logger = Logger(name=__name__, level=INFO) @@ -46,10 +48,10 @@ class FaresHandler(BaseHTTPRequestHandler): text = self.requestline.split(" ")[1].split("?") if len(text) == 1: return {} - text = text[1] return { - (_s := s.split("="))[0]: _s[-1] if _s[-1] != "" else None - for s in text.split("&") + _s[0]: _s[-1] if _s[-1] != "" else None + for s in text[1].split("&") + if (_s := s.split("="))[0] in VALID_QUERY_TERMS } def content_of_GET(self, template_path: Path = DEFAULT_TEMPLATE_PATH) -> str: @@ -76,6 +78,7 @@ class FaresHandler(BaseHTTPRequestHandler): text = "No Fares Found." with open(template_path, "r") as rf: return rf.read().replace("", text) + text = '' text += ( '\n' @@ -119,9 +122,11 @@ class FaresHandler(BaseHTTPRequestHandler): self.end_headers() _ = self.wfile.write(content.encode()) return None + except ConnectionError as ex: logger.warning(f"{type(ex)} | {ex}") - self.send_response(503, "Upstream API refused to respond.") + self.send_response(503, "Our upstream API refused to respond.") + except Exception as ex: logger.critical(f"{type(ex)} | {ex}") self.send_response( @@ -129,6 +134,7 @@ class FaresHandler(BaseHTTPRequestHandler): "Something abnormal occured, apologies. It has been logged with importance.", ) raise ex + self.end_headers()
Flow Fares