def testOgcApi(self): """Test OGC API""" api = QgsServerOgcApi(self.server.serverInterface(), '/api1', 'apione', 'an api', '1.1') self.assertEqual(api.name(), 'apione') self.assertEqual(api.description(), 'an api') self.assertEqual(api.version(), '1.1') self.assertEqual(api.rootPath(), '/api1') url = 'http://server.qgis.org/wfs3/collections/testlayer%20èé/items?limit=-1' self.assertEqual( api.sanitizeUrl(QtCore.QUrl(url)).toString(), 'http://server.qgis.org/wfs3/collections/testlayer \xe8\xe9/items?limit=-1' ) self.assertEqual( api.sanitizeUrl( QtCore.QUrl('/path//double//slashes//#fr')).toString(), '/path/double/slashes#fr') self.assertEqual(api.relToString(QgsServerOgcApi.data), 'data') self.assertEqual(api.relToString(QgsServerOgcApi.alternate), 'alternate') self.assertEqual(api.contentTypeToString(QgsServerOgcApi.JSON), 'JSON') self.assertEqual(api.contentTypeToStdString(QgsServerOgcApi.JSON), 'JSON') self.assertEqual(api.contentTypeToExtension(QgsServerOgcApi.JSON), 'json') self.assertEqual(api.contentTypeToExtension(QgsServerOgcApi.GEOJSON), 'geojson')
def links(): for layer in layers: yield { 'id': layer, 'links': [{ 'href': self.href(f"/{layer}"), 'rel': QgsServerOgcApi.relToString(QgsServerOgcApi.item), 'type': QgsServerOgcApi.mimeType(QgsServerOgcApi.JSON), 'title': "Cache layer", }]}
def links(): for name,project in coll: yield { 'id': name, 'project': project, 'links': [{ "href": self.href(f"/{name}"), "rel": QgsServerOgcApi.relToString(QgsServerOgcApi.item), "type": QgsServerOgcApi.mimeType(QgsServerOgcApi.JSON), "title": "Cache collection", }]}
def get(self) -> None: data = { 'links': [{ "href": self.href("/collections"), "rel": QgsServerOgcApi.relToString(QgsServerOgcApi.data), "type": QgsServerOgcApi.mimeType(QgsServerOgcApi.JSON), "title": "Cache collections", }] } self.write(data)
def get(self, collectionid: str): """ Return project metadata """ metadata, project, layers = self.get_metadata(collectionid) def links(): for layer in layers: yield { 'id': layer, 'links': [{ 'href': self.href(f"/layers/{layer}"), 'rel': QgsServerOgcApi.relToString(QgsServerOgcApi.item), 'type': QgsServerOgcApi.mimeType(QgsServerOgcApi.JSON), 'title': "Cache layer", }]} data = { 'id': collectionid, 'project': project, 'layers' : list(links()), 'links' : [ { "href": self.href("/docs"), "rel": QgsServerOgcApi.relToString(QgsServerOgcApi.item), "type": QgsServerOgcApi.mimeType(QgsServerOgcApi.JSON), "title": "Cache collection documents", }, { "href": self.href("/layers"), "rel": QgsServerOgcApi.relToString(QgsServerOgcApi.item), "type": QgsServerOgcApi.mimeType(QgsServerOgcApi.JSON), "title": "Cache collection layers", }, ], } self.write(data)