import sqlite3 import json import urllib.request import urllib.error base_url = "http://127.0.0.1:8004" def post_json(url, data, token=None): req = urllib.request.Request( url, data=json.dumps(data).encode("utf-8"), headers={ "Content-Type": "application/json", **({"Authorization": f"Bearer {token}"} if token else {}) } ) with urllib.request.urlopen(req) as resp: return resp.status, json.loads(resp.read().decode("utf-8")) def get_json(url, token=None): req = urllib.request.Request( url, headers={"Authorization": f"Bearer {token}"} if token else {} ) with urllib.request.urlopen(req) as resp: return resp.status, json.loads(resp.read().decode("utf-8")) # We will create a test user or login as user 5 by setting a password or creating a token import jwt import time SECRET_KEY = "grimhold_dark_fantasy_2026_super_secret_jwt" token = jwt.encode({"sub": "5", "username": "Amacatan", "exp": time.time() + 86400}, SECRET_KEY, algorithm="HS256") print("Token for Amacatan:", token) try: status, state = get_json(f"{base_url}/api/game/state", token) print("User:", state["user"]) print("Resources:", state["resources"]) print("Army:", state["army"]) print("Total army pool:", state.get("total_army_pool")) print("Defense guards:", state.get("defense_guards")) # Try recruit 1 scout try: status, rec_res = post_json(f"{base_url}/api/army/recruit", {"unit_id": "scout", "count": 1}, token) print("Recruit scout result:", rec_res) except urllib.error.HTTPError as e: print("Recruit error HTTP:", e.code, e.read().decode()) except Exception as e: print("Error:", e)