Flask-Tester / main.py
ParthCodes's picture
Update main.py
f8de470
raw
history blame
2.71 kB
from flask import Flask, request, jsonify
import random
import string
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
# Store room information in memory (replace with a database in production).
rooms = {}
started_rooms = {}
def generate_room_code():
# Generate a random 6-character room code.
return ''.join(random.choices(string.ascii_uppercase, k=6))
@app.route('/create-room', methods=['POST'])
def create_room():
room_code = generate_room_code()
rooms[room_code] = {'players': [], 'started': False}
player_name = request.json.get('name')
if not player_name:
return jsonify({'error': 'Player name is required'})
# Add the player to the room.
player_id = len(rooms[room_code]['players']) + 1
rooms[room_code]['players'].append({'id': player_id, 'name': player_name})
return jsonify({'room_code': room_code})
@app.route('/join-room/<room_code>', methods=['POST', 'GET'])
def join_room(room_code):
if request.method == 'POST':
if room_code not in rooms:
return jsonify({'error': 'Room not found'}), 404
if len(rooms[room_code]['players']) >= 2:
return jsonify({'error': 'Room is full'})
player_name = request.json.get('name')
if not player_name:
return jsonify({'error': 'Player name is required'})
# Add the player to the room.
player_id = len(rooms[room_code]['players']) + 1
rooms[room_code]['players'].append({'id': player_id, 'name': player_name})
return jsonify({'player_id': player_id, 'players': rooms[room_code]['players']})
if request.method == 'GET':
if room_code not in rooms:
return jsonify({'error': 'Room not found'}), 404
ready = False
if len(rooms[room_code]['players']) == 2:
ready = True
return jsonify({'players': rooms[room_code]['players'], 'ready': ready, 'started': rooms[room_code]['started']})
@app.route('/start-room/<room_code>', methods=['POST'])
def start_room(room_code):
if room_code not in rooms:
return jsonify({'error': 'Room not found'}), 404
rooms[room_code]['started'] = True
return jsonify({'success': True})
@app.route('/leave-room/<room_code>/<int:player_id>', methods=['POST'])
def leave_room(room_code, player_id):
if room_code not in rooms:
return jsonify({'error': 'Room not found'}), 404
rooms[room_code]['players'] = [player for player in rooms[room_code]['players'] if player['id'] != player_id]
if not rooms[room_code]['players']:
del rooms[room_code]
return jsonify({'message': 'Player has left the room'})
if __name__ == '__main__':
app.run(debug=True)