import logging from logging import Logger from fastapi import HTTPException, status from fastapi.responses import JSONResponse from api.app import app from classes import PycordGuild from classes.errors import WalletNotFoundError, GuildNotFoundError from classes.wallet import Wallet logger: Logger = logging.getLogger(__name__) @app.get("/v1/guilds/{guild_id}", response_class=JSONResponse) async def get_guild_wallet(guild_id: int): try: guild: PycordGuild = await PycordGuild.from_id(guild_id, allow_creation=False) except GuildNotFoundError as exc: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="Guild not found" ) from exc except NotImplementedError as exc: raise HTTPException( status_code=status.HTTP_501_NOT_IMPLEMENTED, detail="Not implemented" ) from exc return guild.to_dict(json_compatible=True) @app.get("/v1/guilds/{guild_id}/wallets/{user_id}", response_class=JSONResponse) async def get_guild_wallet(guild_id: int, user_id: int): try: wallet: Wallet = await Wallet.from_id(user_id, guild_id, allow_creation=False) except WalletNotFoundError as exc: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="Wallet not found" ) from exc return wallet.to_dict(json_compatible=True)