fix: Add escape char for curl rendering and format python files
All checks were successful
Build Docker / BuildImage (push) Successful in 1m6s
Check Code Quality / RuffCheck (push) Successful in 1m20s

This commit is contained in:
2025-11-21 23:05:40 +11:00
parent 51c4416d4d
commit e489764ff8
17 changed files with 461 additions and 309 deletions

View File

@@ -24,17 +24,10 @@ CRAWLERS = [
"Exabot",
"facebot",
"ia_archiver",
"Twitterbot"
"Twitterbot",
]
CLI_AGENTS = [
"curl",
"hurl",
"xh",
"Posting",
"HTTPie",
"nushell"
]
CLI_AGENTS = ["curl", "hurl", "xh", "Posting", "HTTPie", "nushell"]
def getClientIP(request: Request) -> str:
@@ -56,6 +49,7 @@ def getClientIP(request: Request) -> str:
ip = "unknown"
return ip
@lru_cache(maxsize=1)
def getGitCommit() -> str:
"""
@@ -115,6 +109,7 @@ def isCrawler(request: Request) -> bool:
return any(crawler in user_agent for crawler in CRAWLERS)
return False
@lru_cache(maxsize=128)
def isDev(host: str) -> bool:
"""
@@ -135,6 +130,7 @@ def isDev(host: str) -> bool:
return True
return False
@lru_cache(maxsize=128)
def getHandshakeScript(host: str) -> str:
"""
@@ -150,6 +146,7 @@ def getHandshakeScript(host: str) -> str:
return ""
return '<script src="https://nathan.woodburn/handshake.js" domain="nathan.woodburn" async></script><script src="https://nathan.woodburn/https.js" async></script>'
@lru_cache(maxsize=64)
def getAddress(coin: str) -> str:
"""
@@ -187,7 +184,9 @@ def getFilePath(name: str, path: str) -> Optional[str]:
return None
def json_response(request: Request, message: Union[str, Dict] = "404 Not Found", code: int = 404):
def json_response(
request: Request, message: Union[str, Dict] = "404 Not Found", code: int = 404
):
"""
Create a JSON response with standard formatting.
@@ -205,17 +204,20 @@ def json_response(request: Request, message: Union[str, Dict] = "404 Not Found",
message["ip"] = getClientIP(request)
return jsonify(message), code
return jsonify({
"status": code,
"message": message,
"ip": getClientIP(request),
}), code
return jsonify(
{
"status": code,
"message": message,
"ip": getClientIP(request),
}
), code
def error_response(
request: Request,
message: str = "404 Not Found",
code: int = 404,
force_json: bool = False
force_json: bool = False,
) -> Union[Tuple[Dict, int], object]:
"""
Create an error response in JSON or HTML format.
@@ -233,10 +235,12 @@ def error_response(
return json_response(request, message, code)
# Check if <error code>.html exists in templates
template_name = f"{code}.html" if os.path.isfile(
f"templates/{code}.html") else "404.html"
response = make_response(render_template(
template_name, code=code, message=message), code)
template_name = (
f"{code}.html" if os.path.isfile(f"templates/{code}.html") else "404.html"
)
response = make_response(
render_template(template_name, code=code, message=message), code
)
# Add message to response headers
response.headers["X-Error-Message"] = message
@@ -260,8 +264,7 @@ def parse_date(date_groups: list[str]) -> str | None:
date_str = " ".join(date_groups).strip()
# Remove ordinal suffixes
date_str = re.sub(r'(\d+)(st|nd|rd|th)', r'\1',
date_str, flags=re.IGNORECASE)
date_str = re.sub(r"(\d+)(st|nd|rd|th)", r"\1", date_str, flags=re.IGNORECASE)
# Parse with dateutil, default day=1 if missing
dt = parse(date_str, default=datetime.datetime(1900, 1, 1))
@@ -275,6 +278,7 @@ def parse_date(date_groups: list[str]) -> str | None:
except (ValueError, TypeError):
return None
def get_tools_data():
with open("data/tools.json", "r") as f:
return json.load(f)