From fc4c6c9befe39b5fde79291cc7e61b933ebe940c Mon Sep 17 00:00:00 2001 From: Tom Kralidis Date: Sat, 25 Jul 2020 14:44:30 -0400 Subject: [PATCH] minor alignments (#498) * minor alignments * fix test * fix test --- pygeoapi/api.py | 4 +- pygeoapi/flask_app.py | 99 ++++++++--------- pygeoapi/starlette_app.py | 104 +++++++++--------- .../{root.html => landing_page.html} | 0 tests/test_api.py | 9 +- 5 files changed, 109 insertions(+), 107 deletions(-) rename pygeoapi/templates/{root.html => landing_page.html} (100%) diff --git a/pygeoapi/api.py b/pygeoapi/api.py index 43dde7f..328bac1 100644 --- a/pygeoapi/api.py +++ b/pygeoapi/api.py @@ -115,7 +115,7 @@ class API: @pre_process @jsonldify - def root(self, headers_, format_): + def landing_page(self, headers_, format_): """ Provide API @@ -197,7 +197,7 @@ class API: 'type', 'stac-collection'): fcm['stac'] = True - content = render_j2_template(self.config, 'root.html', fcm) + content = render_j2_template(self.config, 'landing_page.html', fcm) return headers_, 200, content if format_ == 'jsonld': diff --git a/pygeoapi/flask_app.py b/pygeoapi/flask_app.py index ef02f12..cc2ef06 100644 --- a/pygeoapi/flask_app.py +++ b/pygeoapi/flask_app.py @@ -96,7 +96,8 @@ def landing_page(): :returns: HTTP response """ - headers, status_code, content = api_.root(request.headers, request.args) + headers, status_code, content = api_.landing_page( + request.headers, request.args) response = make_response(content, status_code) @@ -148,7 +149,7 @@ def conformance(): @APP.route('/collections') @APP.route('/collections/') -def describe_collections(collection_id=None): +def collections(collection_id=None): """ OGC API collections endpoint @@ -169,7 +170,7 @@ def describe_collections(collection_id=None): @APP.route('/collections//queryables') -def get_collection_queryables(collection_id=None): +def collection_queryables(collection_id=None): """ OGC API collections querybles endpoint @@ -191,7 +192,7 @@ def get_collection_queryables(collection_id=None): @APP.route('/collections//items') @APP.route('/collections//items/') -def dataset(collection_id, item_id=None): +def collection_items(collection_id, item_id=None): """ OGC API collections items endpoint @@ -216,6 +217,51 @@ def dataset(collection_id, item_id=None): return response +@APP.route('/processes') +@APP.route('/processes/') +def processes(process_id=None): + """ + OGC API - Processes description endpoint + + :param process_id: process identifier + + :returns: HTTP response + """ + headers, status_code, content = api_.describe_processes( + request.headers, request.args, process_id) + + response = make_response(content, status_code) + + if headers: + response.headers = headers + + return response + + +@APP.route('/processes//jobs', methods=['GET', 'POST']) +def process_jobs(process_id=None): + """ + OGC API - Processes jobs endpoint + + :param process_id: process identifier + + :returns: HTTP response + """ + + if request.method == 'GET': + headers, status_code, content = ({}, 200, "[]") + elif request.method == 'POST': + headers, status_code, content = api_.execute_process( + request.headers, request.args, request.data, process_id) + + response = make_response(content, status_code) + + if headers: + response.headers = headers + + return response + + @APP.route('/stac') def stac_catalog_root(): """ @@ -256,51 +302,6 @@ def stac_catalog_path(path): return response -@APP.route('/processes') -@APP.route('/processes/') -def describe_processes(process_id=None): - """ - OGC API - Processes description endpoint - - :param process_id: process identifier - - :returns: HTTP response - """ - headers, status_code, content = api_.describe_processes( - request.headers, request.args, process_id) - - response = make_response(content, status_code) - - if headers: - response.headers = headers - - return response - - -@APP.route('/processes//jobs', methods=['GET', 'POST']) -def execute_process(process_id=None): - """ - OGC API - Processes jobs endpoint - - :param process_id: process identifier - - :returns: HTTP response - """ - - if request.method == 'GET': - headers, status_code, content = ({}, 200, "[]") - elif request.method == 'POST': - headers, status_code, content = api_.execute_process( - request.headers, request.args, request.data, process_id) - - response = make_response(content, status_code) - - if headers: - response.headers = headers - - return response - - @click.command() @click.pass_context @click.option('--debug', '-d', default=False, is_flag=True, help='debug') diff --git a/pygeoapi/starlette_app.py b/pygeoapi/starlette_app.py index e5bc18d..f3ce3b6 100644 --- a/pygeoapi/starlette_app.py +++ b/pygeoapi/starlette_app.py @@ -79,7 +79,7 @@ async def landing_page(request: Request): :returns: Starlette HTTP Response """ - headers, status_code, content = api_.root( + headers, status_code, content = api_.landing_page( request.headers, request.query_params) response = Response(content=content, status_code=status_code) @@ -134,7 +134,7 @@ async def conformance(request: Request): @app.route('/collections/') @app.route('/collections/{collection_id}') @app.route('/collections/{collection_id}/') -async def describe_collections(request: Request, collection_id=None): +async def collections(request: Request, collection_id=None): """ OGC API collections endpoint @@ -157,7 +157,7 @@ async def describe_collections(request: Request, collection_id=None): @app.route('/collections/{collection_id}/queryables') @app.route('/collections/{collection_id}/queryables/') -async def get_collection_queryables(request: Request, collection_id=None): +async def collection_queryables(request: Request, collection_id=None): """ OGC API collections queryables endpoint @@ -182,7 +182,7 @@ async def get_collection_queryables(request: Request, collection_id=None): @app.route('/collections/{collection_id}/items/') @app.route('/collections/{collection_id}/items/{item_id}') @app.route('/collections/{collection_id}/items/{item_id}/') -async def dataset(request: Request, collection_id=None, item_id=None): +async def collection_items(request: Request, collection_id=None, item_id=None): """ OGC API collections items endpoint @@ -212,6 +212,54 @@ async def dataset(request: Request, collection_id=None, item_id=None): return response +@app.route('/processes') +@app.route('/processes/') +@app.route('/processes/{process_id}') +@app.route('/processes/{process_id}/') +async def processes(request: Request, process_id=None): + """ + OGC API - Processes description endpoint + + :param process_id: identifier of process to describe + + :returns: Starlette HTTP Response + """ + headers, status_code, content = api_.describe_processes( + request.headers, request.query_params, process_id) + + response = Response(content=content, status_code=status_code) + + if headers: + response.headers.update(headers) + + return response + + +@app.route('/processes/{process_id}/jobs', methods=['GET', 'POST']) +@app.route('/processes/{process_id}/jobs/', methods=['GET', 'POST']) +async def process_jobs(request: Request, process_id=None): + """ + OGC API - Processes jobs endpoint + + :param process_id: identifier of process to execute + + :returns: Starlette HTTP Response + """ + + if request.method == 'GET': + headers, status_code, content = ({}, 200, "[]") + elif request.method == 'POST': + headers, status_code, content = api_.execute_process( + request.headers, request.query_params, request.data, process_id) + + response = Response(content=content, status_code=status_code) + + if headers: + response.headers.update(headers) + + return response + + @app.route('/stac') async def stac_catalog_root(request: Request): """ @@ -254,54 +302,6 @@ async def stac_catalog_path(request: Request): return response -@app.route('/processes') -@app.route('/processes/') -@app.route('/processes/{process_id}') -@app.route('/processes/{process_id}/') -async def describe_processes(request: Request, process_id=None): - """ - OGC API - Processes description endpoint - - :param process_id: identifier of process to describe - - :returns: Starlette HTTP Response - """ - headers, status_code, content = api_.describe_processes( - request.headers, request.query_params, process_id) - - response = Response(content=content, status_code=status_code) - - if headers: - response.headers.update(headers) - - return response - - -@app.route('/processes/{process_id}/jobs', methods=['GET', 'POST']) -@app.route('/processes/{process_id}/jobs/', methods=['GET', 'POST']) -async def execute_process(request: Request, process_id=None): - """ - OGC API - Processes jobs endpoint - - :param process_id: identifier of process to execute - - :returns: Starlette HTTP Response - """ - - if request.method == 'GET': - headers, status_code, content = ({}, 200, "[]") - elif request.method == 'POST': - headers, status_code, content = api_.execute_process( - request.headers, request.query_params, request.data, process_id) - - response = Response(content=content, status_code=status_code) - - if headers: - response.headers.update(headers) - - return response - - @click.command() @click.pass_context @click.option('--debug', '-d', default=False, is_flag=True, help='debug') diff --git a/pygeoapi/templates/root.html b/pygeoapi/templates/landing_page.html similarity index 100% rename from pygeoapi/templates/root.html rename to pygeoapi/templates/landing_page.html diff --git a/tests/test_api.py b/tests/test_api.py index 7ee6196..816e511 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -101,13 +101,13 @@ def test_api(config, api_, openapi): def test_api_exception(config, api_): req_headers = make_req_headers() - rsp_headers, code, response = api_.root(req_headers, {'f': 'foo'}) + rsp_headers, code, response = api_.landing_page(req_headers, {'f': 'foo'}) assert code == 400 def test_root(config, api_): req_headers = make_req_headers() - rsp_headers, code, response = api_.root(req_headers, {}) + rsp_headers, code, response = api_.landing_page(req_headers, {}) root = json.loads(response) assert rsp_headers['Content-Type'] == 'application/json' @@ -128,13 +128,14 @@ def test_root(config, api_): assert 'description' in root assert root['description'] == 'pygeoapi provides an API to geospatial data' - rsp_headers, code, response = api_.root(req_headers, {'f': 'html'}) + rsp_headers, code, response = api_.landing_page(req_headers, {'f': 'html'}) assert rsp_headers['Content-Type'] == 'text/html' def test_root_structured_data(config, api_): req_headers = make_req_headers() - rsp_headers, code, response = api_.root(req_headers, {"f": "jsonld"}) + rsp_headers, code, response = api_.landing_page( + req_headers, {"f": "jsonld"}) root = json.loads(response) assert rsp_headers['Content-Type'] == 'application/ld+json'