shop-rumine-api/main.py

40 lines
1.4 KiB
Python
Raw Permalink Normal View History

2024-02-25 14:55:37 +01:00
from fastapi import FastAPI, HTTPException
from db import MySQLDB
from PlayerSubscription import PlayerSubscription
2024-02-26 02:40:08 +01:00
from utils import get_unix_timestamp_after_days
2024-02-25 14:55:37 +01:00
app = FastAPI()
db = MySQLDB()
@app.post("/subscribe")
async def subscribe(player_data: PlayerSubscription):
await db.connect()
try:
uuid_query = "SELECT uuid FROM luckperms_players WHERE username = %s"
result = await db.execute(uuid_query, player_data.username)
if not result:
raise HTTPException(status_code=404, detail="Player not found")
uuid = result[0][0]
2024-02-26 02:40:08 +01:00
if player_data.expiry is not None:
if player_data.expiry < 0:
raise HTTPException(status_code=400, detail="Expiry must be a positive integer")
expiry_timestamp = get_unix_timestamp_after_days(player_data.expiry)
else:
raise HTTPException(status_code=400, detail="Expiry must be a positive integer")
2024-02-25 14:55:37 +01:00
subscription_query = """
INSERT INTO luckperms_user_permissions (uuid, permission, value, server, world, expiry, contexts)
VALUES (%s, %s, %s, %s, %s, %s, %s)
"""
2024-02-26 02:40:08 +01:00
await db.execute(subscription_query, uuid, 'group.subscribe', 1, 'global', 'global', expiry_timestamp, "{}")
2024-02-25 14:55:37 +01:00
finally:
await db.close()
return {"message": "Subscription added successfully"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)