WebHost: allow getting checksum-specific datapackage via /api/datapackage/<checksum> (#3451)
* WebHost: allow getting checksum-specific datapackage via /api/datapackage/<checksum> * match import style of /api/generate
This commit is contained in:
		
							parent
							
								
									39deef5d09
								
							
						
					
					
						commit
						89d584e474
					
				|  | @ -5,7 +5,6 @@ from uuid import UUID | |||
| from flask import Blueprint, abort, url_for | ||||
| 
 | ||||
| import worlds.Files | ||||
| from .. import cache | ||||
| from ..models import Room, Seed | ||||
| 
 | ||||
| api_endpoints = Blueprint('api', __name__, url_prefix="/api") | ||||
|  | @ -49,21 +48,4 @@ def room_info(room: UUID): | |||
|     } | ||||
| 
 | ||||
| 
 | ||||
| @api_endpoints.route('/datapackage') | ||||
| @cache.cached() | ||||
| def get_datapackage(): | ||||
|     from worlds import network_data_package | ||||
|     return network_data_package | ||||
| 
 | ||||
| 
 | ||||
| @api_endpoints.route('/datapackage_checksum') | ||||
| @cache.cached() | ||||
| def get_datapackage_checksums(): | ||||
|     from worlds import network_data_package | ||||
|     version_package = { | ||||
|         game: game_data["checksum"] for game, game_data in network_data_package["games"].items() | ||||
|     } | ||||
|     return version_package | ||||
| 
 | ||||
| 
 | ||||
| from . import generate, user  # trigger registration | ||||
| from . import generate, user, datapackage  # trigger registration | ||||
|  |  | |||
|  | @ -0,0 +1,32 @@ | |||
| from flask import abort | ||||
| 
 | ||||
| from Utils import restricted_loads | ||||
| from WebHostLib import cache | ||||
| from WebHostLib.models import GameDataPackage | ||||
| from . import api_endpoints | ||||
| 
 | ||||
| 
 | ||||
| @api_endpoints.route('/datapackage') | ||||
| @cache.cached() | ||||
| def get_datapackage(): | ||||
|     from worlds import network_data_package | ||||
|     return network_data_package | ||||
| 
 | ||||
| 
 | ||||
| @api_endpoints.route('/datapackage/<string:checksum>') | ||||
| @cache.memoize(timeout=3600) | ||||
| def get_datapackage_by_checksum(checksum: str): | ||||
|     package = GameDataPackage.get(checksum=checksum) | ||||
|     if package: | ||||
|         return restricted_loads(package.data) | ||||
|     return abort(404) | ||||
| 
 | ||||
| 
 | ||||
| @api_endpoints.route('/datapackage_checksum') | ||||
| @cache.cached() | ||||
| def get_datapackage_checksums(): | ||||
|     from worlds import network_data_package | ||||
|     version_package = { | ||||
|         game: game_data["checksum"] for game, game_data in network_data_package["games"].items() | ||||
|     } | ||||
|     return version_package | ||||
		Loading…
	
		Reference in New Issue