diff --git a/DiscoverOctoPrintAction.py b/DiscoverOctoPrintAction.py index d772a34..4cc8a4e 100644 --- a/DiscoverOctoPrintAction.py +++ b/DiscoverOctoPrintAction.py @@ -23,6 +23,11 @@ QSslConfiguration, QSslSocket, ) + + QNetworkAccessManagerOperations = QNetworkAccessManager.Operation + QNetworkRequestKnownHeaders = QNetworkRequest.KnownHeaders + QNetworkRequestAttributes = QNetworkRequest.Attribute + except ImportError: from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot, QUrl, QObject, QTimer from PyQt5.QtGui import QDesktopServices @@ -33,6 +38,11 @@ QSslConfiguration, QSslSocket, ) + + QNetworkAccessManagerOperations = QNetworkAccessManager + QNetworkRequestKnownHeaders = QNetworkRequest + QNetworkRequestAttributes = QNetworkRequest + USE_QT5 = True from .NetworkReplyTimeout import NetworkReplyTimeout @@ -547,7 +557,7 @@ def _createAdditionalComponentsView(self) -> None: ) def _onRequestFailed(self, reply: QNetworkReply) -> None: - if reply.operation() == QNetworkAccessManager.Operation.GetOperation: + if reply.operation() == QNetworkAccessManagerOperations.GetOperation: if ( "api/settings" in reply.url().toString() ): # OctoPrint settings dump from /settings: @@ -562,7 +572,7 @@ def _onRequestFailed(self, reply: QNetworkReply) -> None: ## Handler for all requests that have finished. def _onRequestFinished(self, reply: QNetworkReply) -> None: - http_status_code = reply.attribute(QNetworkRequest.Attribute.HttpStatusCodeAttribute) + http_status_code = reply.attribute(QNetworkRequestAttributes.HttpStatusCodeAttribute) if not http_status_code: # Received no or empty reply self._onRequestFailed(reply) @@ -570,7 +580,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None: json_data = None - if reply.operation() == QNetworkAccessManager.Operation.PostOperation: + if reply.operation() == QNetworkAccessManagerOperations.PostOperation: if ( "/plugin/appkeys/request" in reply.url().toString() ): # Initial AppKey request @@ -602,7 +612,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None: if not self._appkey_request: return self._appkey_request.setUrl( - reply.header(QNetworkRequest.KnownHeaders.LocationHeader) + reply.header(QNetworkRequestKnownHeaders.LocationHeader) ) self._appkey_request.setRawHeader(b"Content-Type", b"") self._appkey_poll_timer.start() @@ -620,7 +630,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None: ) self._appkey_request = None # type: Optional[QNetworkRequest] - if reply.operation() == QNetworkAccessManager.Operation.GetOperation: + if reply.operation() == QNetworkAccessManagerOperations.GetOperation: if ( "/plugin/appkeys/probe" in reply.url().toString() ): # Probe for AppKey support diff --git a/NetworkMJPGImage.py b/NetworkMJPGImage.py index 4c3d121..6081a5a 100644 --- a/NetworkMJPGImage.py +++ b/NetworkMJPGImage.py @@ -12,6 +12,7 @@ QSslConfiguration, QSslSocket, ) + QNetworkRequestAttributes = QNetworkRequest.Attribute except ImportError: from PyQt5.QtCore import QUrl, pyqtProperty, pyqtSignal, pyqtSlot, QRect, QByteArray from PyQt5.QtGui import QImage, QPainter @@ -23,6 +24,7 @@ QSslConfiguration, QSslSocket, ) + QNetworkRequestAttributes = QNetworkRequest.Attribute from UM.Logger import Logger @@ -118,7 +120,7 @@ def start(self) -> None: self._image_request = QNetworkRequest(self._source_url) try: - self._image_request.setAttribute(QNetworkRequest.FollowRedirectsAttribute, True) + self._image_request.setAttribute(QNetworkRequestAttributes.FollowRedirectsAttribute, True) except AttributeError: # in Qt6, this is no longer possible (or required), see https://doc.qt.io/qt-6/network-changes-qt6.html#redirect-policies pass diff --git a/OctoPrintOutputDevice.py b/OctoPrintOutputDevice.py index db82386..ebddda4 100644 --- a/OctoPrintOutputDevice.py +++ b/OctoPrintOutputDevice.py @@ -52,15 +52,20 @@ QCoreApplication, ) from PyQt6.QtGui import QImage, QDesktopServices + + QNetworkAccessManagerOperations = QNetworkAccessManager.Operation + QNetworkRequestKnownHeaders = QNetworkRequest.KnownHeaders + QNetworkRequestAttributes = QNetworkRequest.Attribute + QNetworkReplyNetworkErrors = QNetworkReply.NetworkError except ImportError: - from PyQt6.QtNetwork import ( + from PyQt5.QtNetwork import ( QHttpMultiPart, QHttpPart, QNetworkRequest, QNetworkAccessManager, ) - from PyQt6.QtNetwork import QNetworkReply, QSslConfiguration, QSslSocket - from PyQt6.QtCore import ( + from PyQt5.QtNetwork import QNetworkReply, QSslConfiguration, QSslSocket + from PyQt5.QtCore import ( QUrl, QTimer, pyqtSignal, @@ -68,7 +73,13 @@ pyqtSlot, QCoreApplication, ) - from PyQt6.QtGui import QImage, QDesktopServices + from PyQt5.QtGui import QImage, QDesktopServices + + QNetworkAccessManagerOperations = QNetworkAccessManager + QNetworkRequestKnownHeaders = QNetworkRequest + QNetworkRequestAttributes = QNetworkRequest + QNetworkReplyNetworkErrors = QNetworkReply + USE_QT5 = True import json @@ -913,7 +924,7 @@ def _sendCommandToApi( ## Handler for all requests that have finished. def _onRequestFinished(self, reply: QNetworkReply) -> None: - if reply.error() == QNetworkReply.NetworkError.TimeoutError: + if reply.error() == QNetworkReplyNetworkErrors.TimeoutError: Logger.log("w", "Received a timeout on a request to the instance") self._connection_state_before_timeout = self._connection_state self.setConnectionState(cast(ConnectionState, UnifiedConnectionState.Error)) @@ -921,7 +932,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None: if ( self._connection_state_before_timeout - and reply.error() == QNetworkReply.NetworkError.NoError + and reply.error() == QNetworkReplyNetworkErrors.NoError ): # There was a timeout, but we got a correct answer again. if self._last_response_time: @@ -933,15 +944,15 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None: self.setConnectionState(self._connection_state_before_timeout) self._connection_state_before_timeout = None - if reply.error() == QNetworkReply.NetworkError.NoError: + if reply.error() == QNetworkReplyNetworkErrors.NoError: self._last_response_time = time() - http_status_code = reply.attribute(QNetworkRequest.Attribute.HttpStatusCodeAttribute) + http_status_code = reply.attribute(QNetworkRequestAttributes.HttpStatusCodeAttribute) if not http_status_code: # Received no or empty reply return - if reply.operation() == QNetworkAccessManager.Operation.GetOperation: + if reply.operation() == QNetworkAccessManagerOperations.GetOperation: if self._api_prefix + "printerprofiles" in reply.url().toString(): if http_status_code == 200: try: @@ -1362,7 +1373,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None: % end_point, ) - elif reply.operation() == QNetworkAccessManager.Operation.PostOperation: + elif reply.operation() == QNetworkAccessManagerOperations.PostOperation: if ( self._api_prefix + "files" in reply.url().toString() ): # Result from /files command to start a print job: @@ -1498,7 +1509,7 @@ def _onRequestFinished(self, reply: QNetworkReply) -> None: error_string = bytes(reply.readAll()).decode("utf-8") if not error_string: error_string = reply.attribute( - QNetworkRequest.Attribute.HttpReasonPhraseAttribute + QNetworkRequestAttributes.HttpReasonPhraseAttribute ) self._showErrorMessage(error_string) @@ -1566,7 +1577,7 @@ def _onUploadFinished(self, reply: QNetworkReply) -> None: error_string = bytes(reply.readAll()).decode("utf-8") if not error_string: error_string = reply.attribute( - QNetworkRequest.Attribute.HttpReasonPhraseAttribute + QNetworkRequestAttributes.HttpReasonPhraseAttribute ) if error_string: @@ -1580,7 +1591,7 @@ def _onUploadFinished(self, reply: QNetworkReply) -> None: Logger.log("e", error_string) return - location_url = reply.header(QNetworkRequest.KnownHeaders.LocationHeader) + location_url = reply.header(QNetworkRequestKnownHeaders.LocationHeader) Logger.log( "d", "Resource created on OctoPrint instance: %s", location_url.toString() ) @@ -1781,7 +1792,7 @@ def _createEmptyRequest( ) -> QNetworkRequest: request = QNetworkRequest(QUrl(self._api_url + target)) try: - request.setAttribute(QNetworkRequest.FollowRedirectsAttribute, True) + request.setAttribute(QNetworkRequestAttributes.FollowRedirectsAttribute, True) except AttributeError: # in Qt6, this is no longer possible (or required), see https://doc.qt.io/qt-6/network-changes-qt6.html#redirect-policies pass @@ -1790,7 +1801,7 @@ def _createEmptyRequest( request.setRawHeader(b"User-Agent", self._user_agent.encode()) if content_type is not None: - request.setHeader(QNetworkRequest.KnownHeaders.ContentTypeHeader, content_type) + request.setHeader(QNetworkRequestKnownHeaders.ContentTypeHeader, content_type) # ignore SSL errors (eg for self-signed certificates) ssl_configuration = QSslConfiguration.defaultConfiguration() @@ -1810,9 +1821,9 @@ def _createFormPart( if not content_header.startswith("form-data;"): content_header = "form-data; " + content_header - part.setHeader(QNetworkRequest.KnownHeaders.ContentDispositionHeader, content_header) + part.setHeader(QNetworkRequestKnownHeaders.ContentDispositionHeader, content_header) if content_type is not None: - part.setHeader(QNetworkRequest.KnownHeaders.ContentTypeHeader, content_type) + part.setHeader(QNetworkRequestKnownHeaders.ContentTypeHeader, content_type) part.setBody(data) return part