fix: Add escape char for curl rendering and format python files
This commit is contained in:
101
curl.py
101
curl.py
@@ -8,7 +8,8 @@ from cache_helper import get_git_latest_activity, get_projects as get_projects_c
|
||||
|
||||
MAX_WIDTH = 80
|
||||
|
||||
def clean_path(path:str):
|
||||
|
||||
def clean_path(path: str):
|
||||
path = path.strip("/ ").lower()
|
||||
# Strip any .html extension
|
||||
if path.endswith(".html"):
|
||||
@@ -19,19 +20,21 @@ def clean_path(path:str):
|
||||
path = "index"
|
||||
return path
|
||||
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def get_header():
|
||||
with open("templates/header.ascii", "r") as f:
|
||||
return f.read()
|
||||
|
||||
|
||||
@lru_cache(maxsize=16)
|
||||
def get_current_project():
|
||||
git = get_git_latest_activity()
|
||||
repo_name = git["repo"]["name"].lower()
|
||||
repo_description = git["repo"]["description"]
|
||||
repo_description = git["repo"]["description"]
|
||||
if not repo_description:
|
||||
return f"[1;36m{repo_name}[0m"
|
||||
return f"[1;36m{repo_name}[0m - [1m{repo_description}[0m"
|
||||
return f"[1;36m{repo_name}[0m"
|
||||
return f"[1;36m{repo_name}[0m - [1m{repo_description}[0m"
|
||||
|
||||
|
||||
@lru_cache(maxsize=16)
|
||||
@@ -39,59 +42,107 @@ def get_projects():
|
||||
projects_data = get_projects_cached(limit=5)
|
||||
projects = ""
|
||||
for project in projects_data:
|
||||
projects += f"""[1m{project['name']}[0m - {project['description'] if project['description'] else 'No description'}
|
||||
{project['html_url']}
|
||||
projects += f"""[1m{project["name"]}[0m - {project["description"] if project["description"] else "No description"}
|
||||
{project["html_url"]}
|
||||
|
||||
"""
|
||||
return projects
|
||||
|
||||
|
||||
def curl_response(request):
|
||||
# Check if <path>.ascii exists
|
||||
path = clean_path(request.path)
|
||||
|
||||
|
||||
# Handle special cases
|
||||
if path == "index":
|
||||
# Get current project
|
||||
return render_template("index.ascii",repo=get_current_project(), ip=getClientIP(request), spotify=get_spotify_track()), 200, {'Content-Type': 'text/plain; charset=utf-8'}
|
||||
return (
|
||||
render_template(
|
||||
"index.ascii",
|
||||
repo=get_current_project(),
|
||||
ip=getClientIP(request),
|
||||
spotify=get_spotify_track(),
|
||||
),
|
||||
200,
|
||||
{"Content-Type": "text/plain; charset=utf-8"},
|
||||
)
|
||||
if path == "projects":
|
||||
# Get projects
|
||||
return render_template("projects.ascii",header=get_header(),projects=get_projects()), 200, {'Content-Type': 'text/plain; charset=utf-8'}
|
||||
return (
|
||||
render_template(
|
||||
"projects.ascii", header=get_header(), projects=get_projects()
|
||||
),
|
||||
200,
|
||||
{"Content-Type": "text/plain; charset=utf-8"},
|
||||
)
|
||||
|
||||
if path == "donate":
|
||||
# Get donation info
|
||||
return render_template("donate.ascii",header=get_header(),
|
||||
HNS=getAddress("HNS"), BTC=getAddress("BTC"),
|
||||
SOL=getAddress("SOL"), ETH=getAddress("ETH")
|
||||
), 200, {'Content-Type': 'text/plain; charset=utf-8'}
|
||||
|
||||
return (
|
||||
render_template(
|
||||
"donate.ascii",
|
||||
header=get_header(),
|
||||
HNS=getAddress("HNS"),
|
||||
BTC=getAddress("BTC"),
|
||||
SOL=getAddress("SOL"),
|
||||
ETH=getAddress("ETH"),
|
||||
),
|
||||
200,
|
||||
{"Content-Type": "text/plain; charset=utf-8"},
|
||||
)
|
||||
|
||||
if path == "donate/more":
|
||||
coinList = os.listdir(".well-known/wallets")
|
||||
coinList = [file for file in coinList if file[0] != "."]
|
||||
coinList.sort()
|
||||
return render_template("donate_more.ascii",header=get_header(),
|
||||
coins=coinList
|
||||
), 200, {'Content-Type': 'text/plain; charset=utf-8'}
|
||||
return (
|
||||
render_template("donate_more.ascii", header=get_header(), coins=coinList),
|
||||
200,
|
||||
{"Content-Type": "text/plain; charset=utf-8"},
|
||||
)
|
||||
|
||||
# For other donation pages, fall back to ascii if it exists
|
||||
if path.startswith("donate/"):
|
||||
coin = path.split("/")[1]
|
||||
address = getAddress(coin)
|
||||
if address != "":
|
||||
return render_template("donate_coin.ascii",header=get_header(),coin=coin.upper(),address=address), 200, {'Content-Type': 'text/plain; charset=utf-8'}
|
||||
|
||||
return (
|
||||
render_template(
|
||||
"donate_coin.ascii",
|
||||
header=get_header(),
|
||||
coin=coin.upper(),
|
||||
address=address,
|
||||
),
|
||||
200,
|
||||
{"Content-Type": "text/plain; charset=utf-8"},
|
||||
)
|
||||
|
||||
if path == "tools":
|
||||
tools = get_tools_data()
|
||||
return render_template("tools.ascii",header=get_header(),tools=tools), 200, {'Content-Type': 'text/plain; charset=utf-8'}
|
||||
return (
|
||||
render_template("tools.ascii", header=get_header(), tools=tools),
|
||||
200,
|
||||
{"Content-Type": "text/plain; charset=utf-8"},
|
||||
)
|
||||
|
||||
if os.path.exists(f"templates/{path}.ascii"):
|
||||
return render_template(f"{path}.ascii",header=get_header()), 200, {'Content-Type': 'text/plain; charset=utf-8'}
|
||||
|
||||
return (
|
||||
render_template(f"{path}.ascii", header=get_header()),
|
||||
200,
|
||||
{"Content-Type": "text/plain; charset=utf-8"},
|
||||
)
|
||||
|
||||
# Fallback to html if it exists
|
||||
if os.path.exists(f"templates/{path}.html"):
|
||||
return render_template(f"{path}.html")
|
||||
|
||||
|
||||
# Return curl error page
|
||||
error = {
|
||||
"code": 404,
|
||||
"message": "The requested resource was not found on this server."
|
||||
"message": "The requested resource was not found on this server.",
|
||||
}
|
||||
return render_template("error.ascii",header=get_header(),error=error), 404, {'Content-Type': 'text/plain; charset=utf-8'}
|
||||
return (
|
||||
render_template("error.ascii", header=get_header(), error=error),
|
||||
404,
|
||||
{"Content-Type": "text/plain; charset=utf-8"},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user