from flask import Flask, jsonify, request import mysql.connector import uuid import base64 import json import keyfile API_KEY_NS = keyfile.API_KEY app = Flask(__name__) # Database connection db_config = keyfile.requestDBCreds def get_db_connection(): try: connection = mysql.connector.connect(**db_config) return connection except mysql.connector.Error as err: print(f"Error: {err}") return None # NEEDS FIXING @app.route('/api/tiropitAddUser', methods=['POST']) def tiropit_add_user(): data = request.json if not data or "UserName" not in data or "UserPIN" not in data: return jsonify({"error": "Account MUST include at least UserName & UserPIN"}), 400 user_pin = data.get("UserPIN") friend_code = data.get("FriendCode") if not friend_code or len(friend_code) != 5: return jsonify({"error": "FirendCode must be 5 characters long"}), 400 if not user_pin or len(user_pin) != 4: return jsonify({"error": "UserPIN must be 4 characters long"}), 400 if isinstance(awards_data, str): awards_data = json.loads(awards_data) if isinstance(user_games_data, str): user_games_data = json.loads(user_games_data) connection = get_db_connection() if connection is None: return jsonify({"error": "Failed to contact db"}), 500 try: cursor = connection.cursor(dictionary=True) user_data = { "UserID" : str(uuid.uuid4()), "UserName" : data['UserName'], "UserPIN" : user_pin, "SteamName" : data.get('SteamName', ''), "Level" : data.get('Level', 0), "Awards" : json.dumps(data.get('Awards', '[]')), "ProfilePicture" : data.get('ProfilePicture', ''), "UserGames" : json.dumps(data.get('UserGames', '[]')), "WarnLevel" : data.get('WarnLevel', 0), "Banned" : data.get('Banned', False), "AdminLevel" : 0, "UserDiscord" : data.get('UserDiscord', ""), "SteamID" : data.get('SteamID', '') , "FriendCode" : friend_code, } print(user_data) query = """ INSERT INTO users (UserID, UserName, SteamName, Level, Awards, UserGames, WarnLevel, Banned, AdminLevel, SteamID, UserDiscord, UserPIN, FriendCode) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """ cursor.execute(query, tuple(user_data.values())) connection.commit() return jsonify( {"message":"User Created", "UserID": user_data['UserID']}, 201 ) except mysql.connector.Error as err: connection.rollback() if err.errno == 1062: return jsonify({"error": "User already exists"}), 409 finally: if connection.is_connected(): cursor.close() connection.close() return jsonify({"error": "An unexpected server error occurred."}), 500 if __name__ == '__main__': app.run(host="0.0.0.0", port=5000, debug=True)