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
|
from flask import Blueprint, abort, url_for
|
||||||
|
|
||||||
import worlds.Files
|
import worlds.Files
|
||||||
from .. import cache
|
|
||||||
from ..models import Room, Seed
|
from ..models import Room, Seed
|
||||||
|
|
||||||
api_endpoints = Blueprint('api', __name__, url_prefix="/api")
|
api_endpoints = Blueprint('api', __name__, url_prefix="/api")
|
||||||
|
@ -49,21 +48,4 @@ def room_info(room: UUID):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@api_endpoints.route('/datapackage')
|
from . import generate, user, datapackage # trigger registration
|
||||||
@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
|
|
||||||
|
|
|
@ -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