diff --git a/sciencebeam_parser/service/api/app.py b/sciencebeam_parser/service/api/app.py index 8627d9d8..151a806c 100644 --- a/sciencebeam_parser/service/api/app.py +++ b/sciencebeam_parser/service/api/app.py @@ -15,6 +15,7 @@ from sciencebeam_parser.service.api.routers.grobid import create_grobid_router from sciencebeam_parser.service.api.routers.low_level import create_low_level_router from sciencebeam_parser.service.api.routers.models import create_models_router +from sciencebeam_parser.service.api.routers.status import create_status_router LOGGER = logging.getLogger(__name__) @@ -26,6 +27,7 @@ def create_api_app( app = FastAPI() app.state.sciencebeam_parser = sciencebeam_parser + app.include_router(create_status_router()) app.include_router(create_convert_router()) app.include_router(create_grobid_router( fulltext_processor_config=sciencebeam_parser.fulltext_processor_config diff --git a/sciencebeam_parser/service/api/routers/status.py b/sciencebeam_parser/service/api/routers/status.py new file mode 100644 index 00000000..5cef2303 --- /dev/null +++ b/sciencebeam_parser/service/api/routers/status.py @@ -0,0 +1,17 @@ +import logging + +from fastapi import APIRouter +from fastapi.responses import PlainTextResponse + + +LOGGER = logging.getLogger(__name__) + + +def create_status_router() -> APIRouter: + router = APIRouter(tags=['status']) + + @router.get('/isalive', response_class=PlainTextResponse) + def process_isalive_api() -> str: + return 'true' + + return router diff --git a/tests/service/api/app_test.py b/tests/service/api/app_test.py index 02b70745..ba40eb40 100644 --- a/tests/service/api/app_test.py +++ b/tests/service/api/app_test.py @@ -102,6 +102,12 @@ def test_should_not_fail(self, test_client: TestClient): response = test_client.get('/') assert _get_ok_json(response) + class TestIsAlive: + def test_should_return_true(self, test_client: TestClient): + response = test_client.get('/isalive') + assert response.status_code == 200 + assert response.text == 'true' + class TestPdfAlto: def test_should_reject_post_without_data( self,