| 
									
										
										
										
											2020-12-01 01:33:57 +01:00
										 |  |  | """API endpoints package.""" | 
					
						
							| 
									
										
										
										
											2022-01-19 18:51:26 +01:00
										 |  |  | from typing import List, Tuple | 
					
						
							| 
									
										
										
										
											2022-10-17 01:08:31 +02:00
										 |  |  | from uuid import UUID | 
					
						
							| 
									
										
										
										
											2020-12-01 01:51:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | from flask import Blueprint, abort | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-21 22:55:44 +02:00
										 |  |  | from .. import cache | 
					
						
							| 
									
										
										
										
											2022-10-17 01:08:31 +02:00
										 |  |  | from ..models import Room, Seed | 
					
						
							| 
									
										
										
										
											2020-12-01 01:33:57 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | api_endpoints = Blueprint('api', __name__, url_prefix="/api") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-01 01:51:09 +01:00
										 |  |  | # unsorted/misc endpoints | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-21 22:55:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-19 18:51:26 +01:00
										 |  |  | def get_players(seed: Seed) -> List[Tuple[str, str]]: | 
					
						
							|  |  |  |     return [(slot.player_name, slot.game) for slot in seed.slots] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-01 01:51:09 +01:00
										 |  |  | @api_endpoints.route('/room_status/<suuid:room>') | 
					
						
							|  |  |  | def room_info(room: UUID): | 
					
						
							|  |  |  |     room = Room.get(id=room) | 
					
						
							|  |  |  |     if room is None: | 
					
						
							|  |  |  |         return abort(404) | 
					
						
							| 
									
										
										
										
											2022-01-19 18:51:26 +01:00
										 |  |  |     return { | 
					
						
							|  |  |  |         "tracker": room.tracker, | 
					
						
							|  |  |  |         "players": get_players(room.seed), | 
					
						
							|  |  |  |         "last_port": room.last_port, | 
					
						
							|  |  |  |         "last_activity": room.last_activity, | 
					
						
							|  |  |  |         "timeout": room.timeout | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-07-21 22:55:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @api_endpoints.route('/datapackage') | 
					
						
							|  |  |  | @cache.cached() | 
					
						
							| 
									
										
										
										
											2022-08-11 00:58:08 +02:00
										 |  |  | def get_datapackage(): | 
					
						
							| 
									
										
										
										
											2021-07-21 22:55:44 +02:00
										 |  |  |     from worlds import network_data_package | 
					
						
							|  |  |  |     return network_data_package | 
					
						
							| 
									
										
										
										
											2021-07-21 23:04:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-07 03:32:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-21 23:04:22 +02:00
										 |  |  | @api_endpoints.route('/datapackage_version') | 
					
						
							|  |  |  | @cache.cached() | 
					
						
							| 
									
										
										
										
											2022-12-11 02:59:17 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:58:08 +02:00
										 |  |  | def get_datapackage_versions(): | 
					
						
							| 
									
										
										
										
											2021-07-21 23:04:22 +02:00
										 |  |  |     from worlds import network_data_package, AutoWorldRegister | 
					
						
							| 
									
										
										
										
											2022-12-11 02:59:17 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-21 23:04:22 +02:00
										 |  |  |     version_package = {game: world.data_version for game, world in AutoWorldRegister.world_types.items()} | 
					
						
							|  |  |  |     return version_package | 
					
						
							| 
									
										
										
										
											2022-01-21 00:42:45 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from . import generate, user  # trigger registration |