def download(dataset_id):
    """Download GEE Dataset Endpoint"""
    logging.info('Downloading GEE Dataset')

    sql = request.args.get('sql', None) or request.get_json().get('sql', None)
    result_query = build_query(request)

    try:
        if sql:
            query_type = 'sql'
        else:
            query_type = 'fs'
        json_sql = QueryService.convert(result_query, query_type=query_type)
    except SqlFormatError as e:
        logging.error('[ROUTER] /download/<dataset_id> - SQL Format error in query conversion: ' + e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER] /download/<dataset_id> - Generic error in query conversion: ' + str(e))
        return error(status=500, detail='Generic Error')

    try:
        response = EarthEngineService.execute_query(json_sql).response()
    except GEEQueryError as e:
        logging.error('[ROUTER] /download/<dataset_id> - GEE Query error in GEE query execution: ' + e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER] /download/<dataset_id> - Generic error in GEE query execution: ' + str(e))
        return error(status=500, detail='Generic Error')

    # @TODO
    meta = {}
    # @TODO download content-type
    return jsonify(data=serialize_query(response, meta)), 200
def query(dataset_id):
    """Query GEE Dataset Endpoint"""
    logging.info('Doing GEE Query')

    sql = request.args.get('sql', None) or request.get_json().get('sql', None)
    result_query = build_query(request)

    try:
        if sql:
            query_type = 'sql'
        else:
            query_type = 'fs'
        json_sql = QueryService.convert(result_query, query_type=query_type)

    except SqlFormatError as e:
        logging.error('[ROUTER]: ' + e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: ' + str(e))
        return error(status=500, detail='Generic Error')

    try:
        response = EarthEngineService.execute_query(json_sql).response()
    except GEEQueryError as e:
        logging.error('[ROUTER]: ' + e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: ' + str(e))
        return error(status=500, detail='Generic Error')

    # @TODO
    meta = {}
    return jsonify(serialize_query(response, meta)), 200
Ejemplo n.º 3
0
def query(dataset_id):
    """Query GEE Dataset Endpoint"""
    logging.info('Doing GEE Query')

    sql = request.args.get('sql', None) or request.get_json().get('sql', None)
    result_query = build_query(request)

    try:
        if sql:
            query_type = 'sql'
        else:
            query_type = 'fs'
        json_sql = QueryService.convert(result_query, query_type=query_type)
        
    except SqlFormatError as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail="Error performing query")

    try:
        response = EarthEngineService.execute_query(json_sql).response()
    except GEEQueryError as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        # hotfix until library developments
        if str(e) == "'_init_cols'": return error(status=500, detail="Query not supported. Please visit https://doc.apihighways.org/ to obtain more information on supported queries.")
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail=str(e))

    # @TODO
    meta = {}
    return jsonify(serialize_query(response, meta)), 200
Ejemplo n.º 4
0
def download(dataset_id):
    """Download GEE Dataset Endpoint"""
    logging.info('Downloading GEE Dataset')

    sql = request.args.get('sql', None) or request.get_json().get('sql', None)
    try:
        result_query = build_query(request)
    except TypeError as e:
        return error(status=501, detail="Download not supported for this dataset. Please visit https://doc.apihighways.org/ to obtain more information on supported queries.")
    try:
        if sql:
            query_type = 'sql'
        else:
            query_type = 'fs'
        json_sql = QueryService.convert(result_query, query_type=query_type)
    except SqlFormatError as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))
        return error(status=500, detail='Generic Error')

    try:
        response = EarthEngineService.execute_query(json_sql).response()
    except GEEQueryError as e:
        logging.error('[ROUTER]: '+e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER]: '+str(e))

    # @TODO
    meta = {}
    # @TODO download content-type
    return jsonify(data=serialize_query(response, meta)), 200
Ejemplo n.º 5
0
 def wrapper(*args, **kwargs):
     logging.debug("Checking microservice user")
     logged_user = json.loads(request.args.get("loggedUser", None))
     if (logged_user.get("id")
             == "microservice") or (logged_user.get("role") == "ADMIN"):
         logging.debug("is microservice or admin")
         return func(*args, **kwargs)
     else:
         return error(status=403, detail="Not authorized")
def fields(dataset_id):
    """Get GEE Dataset Fields Endpoint"""
    logging.info('Getting fields of a GEE Dataset')

    dataset = request.get_json().get('dataset').get('data')
    table_name = dataset.get('attributes').get('tableName')
    sql = '?sql=SELECT * FROM \"' + table_name + '\" LIMIT 1'

    # Convert query
    json_sql = QueryService.convert(sql, query_type='sql')

    try:
        response = EarthEngineService.execute_query(json_sql).metadata
    except GEEQueryError as e:
        logging.error('[ROUTER] /fields/<dataset_id> - GEE Query error in GEE query execution: ' + e.message)
        return error(status=400, detail=e.message)
    except Exception as e:
        logging.error('[ROUTER] /fields/<dataset_id> - Generic error in GEE query execution: ' + str(e))
        return error(status=500, detail='Generic Error')

    return jsonify(data=serialize_fields(response, table_name)), 200
Ejemplo n.º 7
0
def internal_server_error(e):
    logging.error('Internal Server Error')
    return error(status=500, detail='Internal Server Error')
Ejemplo n.º 8
0
def gone(e):
    logging.error('Gone')
    return error(status=410, detail='Gone')
Ejemplo n.º 9
0
def method_not_allowed(e):
    logging.error('Method Not Allowed')
    return error(status=405, detail='Method Not Allowed')
Ejemplo n.º 10
0
def page_not_found(e):
    logging.error('Not Found')
    return error(status=404, detail='Not Found')
Ejemplo n.º 11
0
def forbidden(e):
    logging.error('Forbidden')
    return error(status=403, detail='Forbidden')