Skip to content

Commit

Permalink
add OARec autodiscovery
Browse files Browse the repository at this point in the history
  • Loading branch information
tomkralidis committed Jan 22, 2025
1 parent 3e9cf6f commit 213a061
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 4 deletions.
11 changes: 11 additions & 0 deletions pycsw/ogc/api/records.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,11 @@ def landing_page(self, headers_, args):
'type': 'application/json',
'title': 'Main collection',
'href': f"{self.config['server']['url']}/collections/metadata:main"
},{
'rel': 'http://www.opengis.net/def/rel/ogc/1.0/ogc-catalog',
'type': 'application/json',
'title': 'Record catalogue collection',
'href': f"{self.config['server']['url']}/collections/metadata:main"
}
]

Expand Down Expand Up @@ -1031,6 +1036,12 @@ def get_collection_info(self, collection_name: str = 'metadata:main',
'title': 'Collection URL',
'href': f"{self.config['server']['url']}/collections/{collection_name}",
'hreflang': self.config['server']['language']
}, {
'rel': 'http://www.opengis.net/def/rel/ogc/1.0/ogc-catalog',
'type': 'application/json',
'title': 'Record catalog collection',
'href': f"{self.config['server']['url']}/collections/{collection_name}",
'hreflang': self.config['server']['language']
}, {
'rel': 'queryables',
'type': 'application/json',
Expand Down
Binary file modified tests/functionaltests/suites/cite/data/cite.db
Binary file not shown.
4 changes: 2 additions & 2 deletions tests/functionaltests/suites/oarec/test_oarec_functional.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def test_landing_page(config):

assert headers['Content-Type'] == 'application/json'
assert status == 200
assert len(content['links']) == 14
assert len(content['links']) == 15

for link in content['links']:
assert link['href'].startswith(api.config['server']['url'])
Expand Down Expand Up @@ -89,7 +89,7 @@ def test_collections(config):
assert len(content['collections']) == 1

content = json.loads(api.collections({}, {})[2])['collections'][0]
assert len(content['links']) == 3
assert len(content['links']) == 4
assert content['id'] == 'metadata:main'
assert content['title'] == 'pycsw Geospatial Catalogue'
assert content['description'] == 'pycsw is an OARec and OGC CSW server implementation written in Python' # noqa
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,34 @@
# =================================================================
#
# Authors: Tom Kralidis <[email protected]>
# Ricardo Garcia Silva <[email protected]>
#
# Copyright (c) 2025 Tom Kralidis
# Copyright (c) 2023 Ricardo Garcia Silva
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
# =================================================================

import json
from xml.etree import ElementTree as etree

Expand All @@ -15,7 +46,7 @@ def test_landing_page(config_virtual_collections):

assert headers['Content-Type'] == 'application/json'
assert status == 200
assert len(content['links']) == 14
assert len(content['links']) == 15

for link in content['links']:
assert link['href'].startswith(api.config['server']['url'])
Expand Down Expand Up @@ -52,7 +83,7 @@ def test_collections(config_virtual_collections):
assert len(content['collections']) == 2

content = json.loads(api.collections({}, {})[2])['collections'][0]
assert len(content['links']) == 3
assert len(content['links']) == 4
assert content['id'] == 'metadata:main'
assert content['title'] == 'pycsw Geospatial Catalogue'
assert content['description'] == 'pycsw is an OARec and OGC CSW server implementation written in Python' # noqa
Expand Down

0 comments on commit 213a061

Please sign in to comment.