예제 #1
0
 def testFetchEmptyUrl(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.downloadFinished)
     err = request.get(QNetworkRequest(QUrl()))
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.ServerExceptionError)
     self.assertEqual(request.errorMessage(), 'Protocol "" is unknown')
     reply = request.reply()
     self.assertFalse(reply.content())
예제 #2
0
 def testFetchBadUrl(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.downloadFinished)
     err = request.get(QNetworkRequest(QUrl('http://x')))
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.ServerExceptionError)
     self.assertEqual(request.errorMessage(), 'Host x not found')
     reply = request.reply()
     self.assertFalse(reply.content())
 def testFetchEmptyUrl(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.downloadFinished)
     err = request.get(QNetworkRequest(QUrl()))
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.ServerExceptionError)
     self.assertEqual(request.errorMessage(), 'Protocol "" is unknown')
     reply = request.reply()
     self.assertFalse(reply.content())
예제 #4
0
 def testFetchBadUrl(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.downloadFinished)
     err = request.get(QNetworkRequest(QUrl('http://x')))
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.ServerExceptionError)
     self.assertEqual(request.errorMessage(), 'Host x not found')
     reply = request.reply()
     self.assertFalse(reply.content())
예제 #5
0
 def testFetchBadUrl2(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.downloadFinished)
     err = request.get(QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/ffff')))
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.ServerExceptionError)
     self.assertIn('File not found', request.errorMessage())
     reply = request.reply()
     self.assertEqual(reply.error(), QNetworkReply.ContentNotFoundError)
     self.assertFalse(reply.content())
 def testHead(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.finished)
     handler = mockedwebserver.SequentialHandler()
     handler.add('HEAD', '/test.html', 200, {'Content-type': 'text/html'})
     with mockedwebserver.install_http_handler(handler):
         err = request.head(QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/test.html')), True)
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.NoError)
     self.assertEqual(request.errorMessage(), '')
 def testFetchBadUrl2(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.downloadFinished)
     err = request.get(QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/ffff')))
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.ServerExceptionError)
     self.assertIn('File not found', request.errorMessage())
     reply = request.reply()
     self.assertEqual(reply.error(), QNetworkReply.ContentNotFoundError)
     self.assertFalse(reply.content())
 def testDelete(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.finished)
     handler = mockedwebserver.SequentialHandler()
     handler.add('DELETE', '/test.html', 200)
     with mockedwebserver.install_http_handler(handler):
         err = request.deleteResource(QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/test.html')))
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.NoError)
     self.assertEqual(request.errorMessage(), '')
 def testPost(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.finished)
     handler = mockedwebserver.SequentialHandler()
     handler.add('POST', '/test.html', 200, expected_body=b"foo")
     with mockedwebserver.install_http_handler(handler):
         req = QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/test.html'))
         req.setHeader(QNetworkRequest.ContentTypeHeader, 'text/plain')
         err = request.post(req, b"foo")
     self.assertEqual(err, QgsBlockingNetworkRequest.NoError)
     self.assertEqual(request.errorMessage(), '')
예제 #10
0
    def testFetchBadUrl2(self):
        request = QgsBlockingNetworkRequest()
        spy = QSignalSpy(request.downloadFinished)

        handler = mockedwebserver.SequentialHandler()
        handler.add('GET', '/ffff', 404)
        with mockedwebserver.install_http_handler(handler):
            err = request.get(QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/ffff')))
        self.assertEqual(len(spy), 1)
        self.assertEqual(err, QgsBlockingNetworkRequest.ServerExceptionError)
        self.assertIn('Not Found', request.errorMessage())
        reply = request.reply()
        self.assertEqual(reply.error(), QNetworkReply.ContentNotFoundError)
        self.assertFalse(reply.content())
    def testFetchBadUrl2(self):
        request = QgsBlockingNetworkRequest()
        spy = QSignalSpy(request.finished)

        handler = mockedwebserver.SequentialHandler()
        handler.add('GET', '/ffff', 404, {}, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n        "http://www.w3.org/TR/html4/strict.dtd">\n<html>\n    <head>\n        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">\n        <title>Error response</title>\n    </head>\n    <body>\n        <h1>Error response</h1>\n        <p>Error code: 404</p>\n        <p>Message: File not found.</p>\n        <p>Error code explanation: HTTPStatus.NOT_FOUND - Nothing matches the given URI.</p>\n    </body>\n</html>\n')
        with mockedwebserver.install_http_handler(handler):
            err = request.get(QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/ffff')))
        self.assertEqual(len(spy), 1)
        self.assertEqual(err, QgsBlockingNetworkRequest.ServerExceptionError)
        self.assertIn('Not Found', request.errorMessage())
        reply = request.reply()
        self.assertEqual(reply.error(), QNetworkReply.ContentNotFoundError)
        self.assertEqual(reply.content(), '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n        "http://www.w3.org/TR/html4/strict.dtd">\n<html>\n    <head>\n        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">\n        <title>Error response</title>\n    </head>\n    <body>\n        <h1>Error response</h1>\n        <p>Error code: 404</p>\n        <p>Message: File not found.</p>\n        <p>Error code explanation: HTTPStatus.NOT_FOUND - Nothing matches the given URI.</p>\n    </body>\n</html>\n')
def _get_json_results(path, feedback):
    req = QgsBlockingNetworkRequest()
    req_status = req.get(
        QNetworkRequest(QUrl(urljoin(_TAXREF_API_BASE_URL, path))))
    if req_status != QgsBlockingNetworkRequest.NoError:
        for error_name in ('NetworkError', 'TimeoutError',
                           'ServerExceptionError'):
            if req_status == getattr(QgsBlockingNetworkRequest, error_name):
                feedback.reportError('{}: {}'.format(error_name,
                                                     req.errorMessage()))
                break
        return None
    content = bytes(req.reply().content())
    if not content:
        feedback.reportError('Error while downloading data from {}.'.format(
            urljoin(_TAXREF_API_BASE_URL, path)))
        return None
    return json.loads(content)['_embedded']
예제 #13
0
def SearchPTH(queryString, language):
    request = QNetworkRequest()
    request.setUrl(QUrl("https://paikkatietojentuottajat-koekaytto.maanmittauslaitos.fi/api/public/v1/search?X-CLIENT-LANG=FI"))
    request.setHeader(request.ContentTypeHeader, "application/json")
    jsonByteArray = QJsonDocument(createJson(queryString, language)).toJson()

    blockingNetworkRequest = QgsBlockingNetworkRequest()
    err = blockingNetworkRequest.post(request, jsonByteArray, True)

    if not err:
        response = blockingNetworkRequest.reply().content()
        dict_str = response.data().decode("utf-8")
        if dict_str:
            resp_json = json.loads(dict_str)
            return resp_json.get("hits")
        else:
            #No result returned
            LOG("Nothing returned")
            pass
    else:
        LOG(blockingNetworkRequest.errorMessage())
예제 #14
0
 def testGet(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.downloadFinished)
     err = request.get(QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/qgis_local_server/index.html')))
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.NoError)
     self.assertEqual(request.errorMessage(), '')
     reply = request.reply()
     self.assertEqual(reply.error(), QNetworkReply.NoError)
     self.assertEqual(reply.content(), '<!DOCTYPE html>\n<html lang="en">\n<head>\n\t<meta charset="utf-8" />\n\t<title>Local QGIS Server Default Index</title>\n</head>\n<body>\n  <h2 style="font-family:Arial;">Web Server Working<h2/>\n</body>\n</html>\n')
     self.assertEqual(reply.rawHeaderList(), [b'Server',
                                              b'Date',
                                              b'Content-type',
                                              b'Content-Length',
                                              b'Last-Modified'])
     self.assertEqual(reply.rawHeader(b'Content-type'), 'text/html')
     self.assertEqual(reply.rawHeader(b'xxxxxxxxx'), '')
     self.assertEqual(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute), 200)
     self.assertEqual(reply.attribute(QNetworkRequest.HttpReasonPhraseAttribute), 'OK')
     self.assertEqual(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute), 200)
     self.assertEqual(reply.attribute(QNetworkRequest.RedirectionTargetAttribute), None)
 def testGet(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.downloadFinished)
     err = request.get(QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/qgis_local_server/index.html')))
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.NoError)
     self.assertEqual(request.errorMessage(), '')
     reply = request.reply()
     self.assertEqual(reply.error(), QNetworkReply.NoError)
     self.assertEqual(reply.content(), '<!DOCTYPE html>\n<html lang="en">\n<head>\n\t<meta charset="utf-8" />\n\t<title>Local QGIS Server Default Index</title>\n</head>\n<body>\n  <h2 style="font-family:Arial;">Web Server Working<h2/>\n</body>\n</html>\n')
     self.assertEqual(reply.rawHeaderList(), [b'Server',
                                              b'Date',
                                              b'Content-type',
                                              b'Content-Length',
                                              b'Last-Modified'])
     self.assertEqual(reply.rawHeader(b'Content-type'), 'text/html')
     self.assertEqual(reply.rawHeader(b'xxxxxxxxx'), '')
     self.assertEqual(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute), 200)
     self.assertEqual(reply.attribute(QNetworkRequest.HttpReasonPhraseAttribute), 'OK')
     self.assertEqual(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute), 200)
     self.assertEqual(reply.attribute(QNetworkRequest.RedirectionTargetAttribute), None)
 def testGet(self):
     request = QgsBlockingNetworkRequest()
     spy = QSignalSpy(request.finished)
     handler = mockedwebserver.SequentialHandler()
     handler.add('GET', '/test.html', 200, {'Content-type': 'text/html'}, '<html></html>\n')
     with mockedwebserver.install_http_handler(handler):
         err = request.get(QNetworkRequest(QUrl('http://localhost:' + str(TestQgsBlockingNetworkRequest.port) + '/test.html')), True)
     self.assertEqual(len(spy), 1)
     self.assertEqual(err, QgsBlockingNetworkRequest.NoError)
     self.assertEqual(request.errorMessage(), '')
     reply = request.reply()
     self.assertEqual(reply.error(), QNetworkReply.NoError)
     self.assertEqual(reply.content(), '<html></html>\n')
     self.assertEqual(reply.rawHeaderList(), [b'Server',
                                              b'Date',
                                              b'Content-type',
                                              b'Content-Length'])
     self.assertEqual(reply.rawHeader(b'Content-type'), 'text/html')
     self.assertEqual(reply.rawHeader(b'xxxxxxxxx'), '')
     self.assertEqual(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute), 200)
     self.assertEqual(reply.attribute(QNetworkRequest.HttpReasonPhraseAttribute), 'OK')
     self.assertEqual(reply.attribute(QNetworkRequest.RedirectionTargetAttribute), None)
예제 #17
0
    def downloadCapabilities(self, wmsUrl):
        """Download a remote capabilities file."""
        # we get the WMS 1.1.1 XML because OWSLib actually works with it
        capabilitiesUrl = f"{wmsUrl}?request=GetCapabilities&version=1.1.1"
        request = QNetworkRequest(QUrl(capabilitiesUrl))

        # suppress errors from SSL for the capabilities request (NTG network is dodgy)
        sslConfig = request.sslConfiguration()
        sslConfig.setPeerVerifyMode(QSslSocket.VerifyNone)
        request.setSslConfiguration(sslConfig)

        # use a blocking request here
        blockingRequest = QgsBlockingNetworkRequest()
        result = blockingRequest.get(request)
        if result == QgsBlockingNetworkRequest.NoError:
            reply = blockingRequest.reply()
            if reply.error() == QNetworkReply.NoError:
                xml = bytes(reply.content()).decode()
                self.capabilitiesDownloaded.emit(xml)
            else:
                connectionError(reply.errorString())
        else:
            connectionError(blockingRequest.errorMessage())