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)
|