Skip to content

Commit

Permalink
feat: configure end part of endpoint urls to contain api extension #283
Browse files Browse the repository at this point in the history
BREAKING CHANGE: modify endpoint urls to use relevant api extension
  • Loading branch information
Viktor Bozhinov authored and MRichards99 committed Nov 22, 2021
1 parent cbdaed6 commit 5bdd72e
Show file tree
Hide file tree
Showing 2 changed files with 190 additions and 187 deletions.
39 changes: 21 additions & 18 deletions datagateway_api/src/api_start_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ def create_api_endpoints(flask_app, api, spec):
# Create client pool
icat_client_pool = create_client_pool()

datagateway_api_extension = config.datagateway_api.extension
for entity_name in endpoints:
get_endpoint_resource = get_endpoint(
entity_name,
Expand All @@ -115,7 +116,7 @@ def create_api_endpoints(flask_app, api, spec):
)
api.add_resource(
get_endpoint_resource,
f"/{entity_name.lower()}",
f"{datagateway_api_extension}/{entity_name.lower()}",
endpoint=f"datagateway_get_{entity_name}",
)
spec.path(resource=get_endpoint_resource, api=api)
Expand All @@ -128,7 +129,7 @@ def create_api_endpoints(flask_app, api, spec):
)
api.add_resource(
get_id_endpoint_resource,
f"/{entity_name.lower()}/<int:id_>",
f"{datagateway_api_extension}/{entity_name.lower()}/<int:id_>",
endpoint=f"datagateway_get_id_{entity_name}",
)
spec.path(resource=get_id_endpoint_resource, api=api)
Expand All @@ -141,7 +142,7 @@ def create_api_endpoints(flask_app, api, spec):
)
api.add_resource(
get_count_endpoint_resource,
f"/{entity_name.lower()}/count",
f"{datagateway_api_extension}/{entity_name.lower()}/count",
endpoint=f"datagateway_count_{entity_name}",
)
spec.path(resource=get_count_endpoint_resource, api=api)
Expand All @@ -154,7 +155,7 @@ def create_api_endpoints(flask_app, api, spec):
)
api.add_resource(
get_find_one_endpoint_resource,
f"/{entity_name.lower()}/findone",
f"{datagateway_api_extension}/{entity_name.lower()}/findone",
endpoint=f"datagateway_findone_{entity_name}",
)
spec.path(resource=get_find_one_endpoint_resource, api=api)
Expand All @@ -164,7 +165,9 @@ def create_api_endpoints(flask_app, api, spec):
backend, client_pool=icat_client_pool,
)
api.add_resource(
session_endpoint_resource, "/sessions", endpoint="datagateway_sessions",
session_endpoint_resource,
f"{datagateway_api_extension}/sessions",
endpoint="datagateway_sessions",
)
spec.path(resource=session_endpoint_resource, api=api)

Expand All @@ -174,7 +177,7 @@ def create_api_endpoints(flask_app, api, spec):
)
api.add_resource(
instrument_facility_cycle_resource,
"/instruments/<int:id_>/facilitycycles",
f"{datagateway_api_extension}/instruments/<int:id_>/facilitycycles",
endpoint="datagateway_isis_instrument_facility_cycle",
)
spec.path(resource=instrument_facility_cycle_resource, api=api)
Expand All @@ -184,7 +187,7 @@ def create_api_endpoints(flask_app, api, spec):
)
api.add_resource(
count_instrument_facility_cycle_res,
"/instruments/<int:id_>/facilitycycles/count",
f"{datagateway_api_extension}/instruments/<int:id_>/facilitycycles/count",
endpoint="datagateway_isis_count_instrument_facility_cycle",
)
spec.path(resource=count_instrument_facility_cycle_res, api=api)
Expand All @@ -194,8 +197,8 @@ def create_api_endpoints(flask_app, api, spec):
)
api.add_resource(
instrument_investigation_resource,
"/instruments/<int:instrument_id>/facilitycycles/<int:cycle_id>"
"/investigations",
f"{datagateway_api_extension}/instruments/<int:instrument_id>"
f"/facilitycycles/<int:cycle_id>/investigations",
endpoint="datagateway_isis_instrument_investigation",
)
spec.path(resource=instrument_investigation_resource, api=api)
Expand All @@ -205,52 +208,52 @@ def create_api_endpoints(flask_app, api, spec):
)
api.add_resource(
count_instrument_investigation_res,
"/instruments/<int:instrument_id>/facilitycycles/<int:cycle_id>"
"/investigations/count",
f"{datagateway_api_extension}/instruments/<int:instrument_id>"
f"/facilitycycles/<int:cycle_id>/investigations/count",
endpoint="datagateway_isis_count_instrument_investigation",
)
spec.path(resource=count_instrument_investigation_res, api=api)

# Ping endpoint
ping_resource = ping_endpoint(backend, client_pool=icat_client_pool)
api.add_resource(ping_resource, "/ping")
api.add_resource(ping_resource, f"{datagateway_api_extension}/ping")
spec.path(resource=ping_resource, api=api)

# Search API endpoints
if config.search_api is not None:
# TODO - Use config value when new config style is implemented
search_api_extension = "search_api"
search_api_extension = config.search_api.extension
search_api_entity_endpoints = ["datasets", "documents", "instruments"]

for entity_name in search_api_entity_endpoints:
get_search_endpoint_resource = get_search_endpoint(entity_name)
api.add_resource(
get_search_endpoint_resource,
f"/{search_api_extension}/{entity_name}",
f"{search_api_extension}/{entity_name}",
endpoint=f"search_api_get_{entity_name}",
)
spec.path(resource=get_search_endpoint_resource, api=api)

get_single_endpoint_resource = get_single_endpoint(entity_name)
api.add_resource(
get_single_endpoint_resource,
f"/{search_api_extension}/{entity_name}/<int:pid>",
f"{search_api_extension}/{entity_name}/<int:pid>",
endpoint=f"search_api_get_single_{entity_name}",
)
spec.path(resource=get_single_endpoint_resource, api=api)

get_number_count_endpoint_resource = get_number_count_endpoint(entity_name)
api.add_resource(
get_number_count_endpoint_resource,
f"/{search_api_extension}/{entity_name}/count",
f"{search_api_extension}/{entity_name}/count",
endpoint=f"search_api_count_{entity_name}",
)
spec.path(resource=get_number_count_endpoint_resource, api=api)

get_files_endpoint_resource = get_files_endpoint("datasets")
api.add_resource(
get_files_endpoint_resource,
f"/{search_api_extension}/datasets/<int:pid>/files",
f"{search_api_extension}/datasets/<int:pid>/files",
endpoint="search_api_get_dataset_files",
)
spec.path(resource=get_files_endpoint_resource, api=api)
Expand All @@ -260,7 +263,7 @@ def create_api_endpoints(flask_app, api, spec):
)
api.add_resource(
get_number_count_files_endpoint_resource,
f"/{search_api_extension}/datasets/<int:pid>/files/count",
f"{search_api_extension}/datasets/<int:pid>/files/count",
endpoint="search_api_count_dataset_files",
)
spec.path(resource=get_number_count_files_endpoint_resource, api=api)
Expand Down
Loading

0 comments on commit 5bdd72e

Please sign in to comment.