+2
-2
@@ -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':
|
||||
|
||||
+50
-49
@@ -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/<collection_id>')
|
||||
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/<collection_id>/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/<collection_id>/items')
|
||||
@APP.route('/collections/<collection_id>/items/<item_id>')
|
||||
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/<process_id>')
|
||||
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/<process_id>/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/<process_id>')
|
||||
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/<process_id>/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')
|
||||
|
||||
+52
-52
@@ -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')
|
||||
|
||||
+5
-4
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user