diff --git a/flask_base/app.py b/flask_base/app.py new file mode 100644 index 0000000..fcfc691 --- /dev/null +++ b/flask_base/app.py @@ -0,0 +1,41 @@ +from flask import Flask, jsonify, request +import json +import os + +app = Flask(__name__) + +LEADERBOARD_FILE = './data/leaderboard.json' + +if not os.path.exists(LEADERBOARD_FILE): + with open(LEADERBOARD_FILE, 'w') as f: + json.dump([], f) + +def read_leaderboard(): + with open(LEADERBOARD_FILE, 'r') as f: + return json.load(f) + +def write_leaderboard(data): + with open(LEADERBOARD_FILE, 'w') as f: + json.dump(data, f, indent=4) + +@app.route('/api/leaderboard', methods=['POST']) +def add_to_leaderboard(): + new_entry = request.json + if not new_entry or 'name' not in new_entry or 'score' not in new_entry: + return jsonify({'error': 'Name and score are required'}), 400 + + leaderboard = read_leaderboard() + leaderboard.append(new_entry) + write_leaderboard(leaderboard) + + return jsonify({'message': 'Added successfully', 'leaderboard': leaderboard}), 201 + +@app.route('/api/leaderboard', methods=['GET']) +def get_leaderboard(): + leaderboard = read_leaderboard() + leaderboard_sorted = sorted(leaderboard, key=lambda x: x['score'], reverse=True) + return jsonify({'leaderboard': leaderboard_sorted}) + +if __name__ == '__main__': + app.run(debug=True, port=8080) + diff --git a/flask_base/data/leaderboard.json b/flask_base/data/leaderboard.json new file mode 100644 index 0000000..a1e83b5 --- /dev/null +++ b/flask_base/data/leaderboard.json @@ -0,0 +1,10 @@ +[ + { + "name": "Alice", + "score": 100 + }, + { + "name": "salut", + "score": 30 + } +] \ No newline at end of file