def stats(dataset_id): """Queries the stats for a certain raster, with an optional mask""" logging.info('[StatsRouter] Obtaining stats for dataset_id: ' + dataset_id) logging.info("REQUEST") logging.info(request.json) dataset = {'datasetId': dataset_id} geostore = { 'geostore': request.json['geostore'] } if request.json['geostore'] else { 'geostore': None } additional_axes = { 'additionalAxes': request.json['additionalAxes'] } if 'additionalAxes' in request.json else { 'additionalAxes': None } options = {**dataset, **geostore, **additional_axes} logging.info("Options: " + str(options)) try: stats = query_service.get_stats(options) except GeostoreNotFoundError: return error(status=404, detail="Geostore not found") except DimensionalityError: return error(status=400, detail="Raster dimensionality needs to be strictly 2") return json.dumps({"data": stats})
def wrapper(*args, **kwargs): logging.info( "[Rasdamanstats Validator] Validating the presence of geostore") if 'geostore' in request.json: geostore = request.json['geostore'] try: geostore except NameError: geostore = None return error(status=400, detail='Geostore needed') return func(*args, **kwargs)
def internal_server_error(e): return error(status=500, detail='Internal Server Error')
def gone(e): return error(status=410, detail='Gone')
def method_not_allowed(e): return error(status=405, detail='Method Not Allowed')
def page_not_found(e): return error(status=404, detail='Not Found')
def forbidden(e): return error(status=403, detail='Forbidden')