diff --git a/main.py b/main.py index 6a99495..6a9f9a3 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ from fastapi import FastAPI, HTTPException from db import MySQLDB from PlayerSubscription import PlayerSubscription +from utils import get_unix_timestamp_after_days app = FastAPI() db = MySQLDB() @@ -16,11 +17,18 @@ async def subscribe(player_data: PlayerSubscription): raise HTTPException(status_code=404, detail="Player not found") uuid = result[0][0] + 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") + subscription_query = """ INSERT INTO luckperms_user_permissions (uuid, permission, value, server, world, expiry, contexts) VALUES (%s, %s, %s, %s, %s, %s, %s) """ - await db.execute(subscription_query, uuid, 'group.subscribe', 1, 'global', 'global', player_data.expiry, "{}") + await db.execute(subscription_query, uuid, 'group.subscribe', 1, 'global', 'global', expiry_timestamp, "{}") finally: await db.close() diff --git a/utils.py b/utils.py index 87f7530..bbc0444 100644 --- a/utils.py +++ b/utils.py @@ -1,11 +1,12 @@ import yaml +import datetime def read_config(config_file): with open(config_file, 'r') as file: config = yaml.safe_load(file) return config -def get_parameters(): +def get_parameters() -> dict: parameters = {} config = read_config('config.yml') for key, value in config.items(): @@ -15,3 +16,10 @@ def get_parameters(): else: parameters[key] = value return parameters + +def get_unix_timestamp_after_days(days: int) -> int: + return int((datetime.datetime.now() + datetime.timedelta(days=days)).timestamp()) if days != 0 else 0 + +def get_uts(timestamp: int) -> int: + return datetime.datetime.utcfromtimestamp(timestamp) +