diff --git a/pyproject.toml b/pyproject.toml index e3672f6..3f2c409 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,30 +3,19 @@ name = "2chainz" version = "0.1.0" description = "Add your description here" readme = "README.md" -authors = [ - { name = "Anson", email = "anson@ansonbiggs.com" } -] +authors = [{ name = "Anson", email = "anson@ansonbiggs.com" }] requires-python = ">=3.13" -dependencies = [ - "fastapi[standard]>=0.115.12", -] +dependencies = ["fastapi[standard]>=0.115.12"] [project.scripts] two_chainz = "two_chainz:main" - - [build-system] requires = ["hatchling"] build-backend = "hatchling.build" - [tool.hatch.build.targets.wheel] packages = ["src/two_chainz"] [dependency-groups] -dev = [ - "httpx>=0.28.1", - "pytest>=8.3.5", - "ruff>=0.11.11", -] +dev = ["httpx>=0.28.1", "pytest>=8.3.5", "ruff>=0.11.11"] diff --git a/src/test/test_api.py b/src/test/test_api.py index 043c2c8..6eed839 100644 --- a/src/test/test_api.py +++ b/src/test/test_api.py @@ -8,8 +8,8 @@ from two_chainz import app client = TestClient(app) -class TestApi: +class TestApi: def test_api_endpoint(self): response = client.get("/api/") assert response.status_code == 200 @@ -24,12 +24,15 @@ class TestApi: # Validate timestamp format (ISO format) assert datetime.fromisoformat(data["timestamp"]) - @pytest.mark.parametrize("mocked_time,start_time,expected", [ - (100, 50, 50), # 100 - 50 = 50 seconds uptime - (200, 100, 100), # 200 - 100 = 100 seconds uptime - ]) + @pytest.mark.parametrize( + "mocked_time,start_time,expected", + [ + (100, 50, 50), # 100 - 50 = 50 seconds uptime + (200, 100, 100), # 200 - 100 = 100 seconds uptime + ], + ) def test_api_uptime_calculation(self, mocked_time, start_time, expected): - with patch('time.time', return_value=mocked_time): - with patch('two_chainz.start_time', start_time): + with patch("time.time", return_value=mocked_time): + with patch("two_chainz.start_time", start_time): response = client.get("/api/") assert response.json()["uptime_seconds"] == expected diff --git a/src/two_chainz/__init__.py b/src/two_chainz/__init__.py index 57b7b9d..f5392e6 100644 --- a/src/two_chainz/__init__.py +++ b/src/two_chainz/__init__.py @@ -2,13 +2,22 @@ import time from datetime import datetime from fastapi import FastAPI from fastapi.staticfiles import StaticFiles - - - +import tomllib +from pathlib import Path +import random app = FastAPI() start_time = time.time() + +def read_data() -> dict[str, str]: + raw_data = tomllib.loads(Path("data.toml").read_text()) + raw_data['aliases'] = [alias['name'] for alias in raw_data['aliases'] for _ in range(alias['weight'])] + + return raw_data + +data = read_data() + @app.get("/api/") async def ping(): return { @@ -18,5 +27,15 @@ async def ping(): } +@app.get("/api/quote") +async def quote(): + return {"quote": random.choice(data['quotes'])} + + +@app.get("/api/alias") +async def alias(): + return {"alias": random.choice(data['aliases'])} + + # Mount static files app.mount("/", StaticFiles(directory="website", html=True), name="static") diff --git a/website/index.html b/website/index.html index 9a92b08..6d445be 100644 --- a/website/index.html +++ b/website/index.html @@ -109,8 +109,8 @@
send a get
request to
https://chainz-rest.azurewebsites.net/quotehttps://chainz.ansonbiggs.com/api/quote
- https://chainz-rest.azurewebsites.net/quote?batch=2https://chainz.ansonbiggs.com/api/quote?batch=2
@@ -160,8 +160,8 @@
send a get
request to
https://chainz-rest.azurewebsites.net/aliashttps://chainz.ansonbiggs.com/api/alias