Пример #1
0
    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)