diff --git a/app/main.py b/app/main.py index 7c3485f25e6c7404fdaee658c9288110d7922719..be6ad2e17a966de494790c06b55e036a81399398 100644 --- a/app/main.py +++ b/app/main.py @@ -23,58 +23,57 @@ app = FastAPI( } ) - +# TODO Create a nice welcome page @app.get("/") async def root(): return {"message": "Hello World"} -@app.get("/models", response_class=PlainTextResponse, - name="List all models (plain text, default language)") -async def print_model_list_default_language() -> str: - return _print_model_list(VIPSModel.default_language) - +####### Model listing endpoints ####### -@app.get("/models/{language}", response_class=PlainTextResponse, - name="List all models (plain text)" - ) -async def print_model_list(language: str) -> str: - return _print_model_list(language) - - - -@app.get("/models/json", - name="List all models (Json, default language)" - ) +@app.get("/models/json", name="List all models (Json, default language)") async def print_model_list_json_default_language(): return _print_model_list_json(VIPSModel.default_language) - -@app.get("/models/json/{language}", - name="List all models (Json)") +@app.get("/models/json/{language}", name="List all models (Json)") async def print_model_list_json(language:str): return _print_model_list_json(language) +@app.get("/models", response_class=PlainTextResponse, name="List all models (plain text, default language)") +async def print_model_list_default_language() -> str: + return _print_model_list(VIPSModel.default_language) + +@app.get("/models/{language}", response_class=PlainTextResponse, name="List all models (plain text)") +async def print_model_list(language: str) -> str: + return _print_model_list(language) + -@app.post("/models/run/", - name="Run a model" - ) +####### Model running endpoints ####### +@app.post("/models/run/", name="Run a model") async def run_model_from_config_only(model_configuration:ModelConfiguration): return _run_model(model_configuration.model_id, model_configuration) -@app.post("/models/{model_id}/run/", - name="Run a model" - ) +@app.post("/models/{model_id}/run/", name="Run a model") async def run_model_from_config_only(model_id, model_configuration:ModelConfiguration): - return _run_model(model_configuration.model_id, model_configuration) + return _run_model(model_id, model_configuration) +####### Helper functions ####### +# Dealing with no method overload in Python :-) + def _run_model(model_id:str, model_configuration:ModelConfiguration): + """ + Run a model, using provided model_id and ModelConfiguration + Return a list of Result objects + """ requested_model = get_model_instance(model_id) requested_model.set_configuration(model_configuration) return requested_model.get_result() def _print_model_list(language:str): + """ + Returns the list of available models in plain text format + """ model_list = "" vips_models = get_vips_models() for model_id in vips_models: @@ -83,7 +82,7 @@ def _print_model_list(language:str): def _print_model_list_json(language:str): """ - Common method for the web service methods + Returns the list of available models in Json format """ model_list = [] vips_models = get_vips_models() diff --git a/requirements.txt b/requirements.txt index 20e9bbd0d372b229b983627bc2a59024cea97152..dbc3d72cf9cf9c27c3ba708282856c5aeeb09bbf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ fastapi==0.89.1 -git+https://gitlab.nibio.no/VIPS/vipscore-python-common.git@0.1.6 \ No newline at end of file +git+https://gitlab.nibio.no/VIPS/vipscore-python-common.git@0.1.9 \ No newline at end of file