Beispiel #1
0
    def _statusCallback(self, reply: QNetworkReply, error: QNetworkReply.NetworkError = None):
        url = reply.request().url().toString()
        prev_statuses = self._statuses.copy()
        self._statuses[url] = HttpRequestManager.replyIndicatesSuccess(reply, error)

        if any(self._statuses.values()) != any(prev_statuses.values()):
            self.internetReachableChanged.emit()
Beispiel #2
0
    def _uploadFinishedCallback(self,
                                reply: QNetworkReply,
                                error: QNetworkReply.NetworkError = None):
        if not HttpRequestManager.replyIndicatesSuccess(reply, error):
            Logger.log("w", "Could not upload backup file: %s",
                       HttpRequestManager.readText(reply))
            self.backup_upload_error_message = self.DEFAULT_UPLOAD_ERROR_MESSAGE

        self._job_done.set()
Beispiel #3
0
    def _onRestoreRequestCompleted(
            self,
            reply: QNetworkReply,
            error: Optional["QNetworkReply.NetworkError"] = None) -> None:
        if not HttpRequestManager.replyIndicatesSuccess(reply, error):
            Logger.warning(
                "Requesting backup failed, response code %s while trying to connect to %s",
                reply.attribute(QNetworkRequest.HttpStatusCodeAttribute),
                reply.url())
            self.restore_backup_error_message = self.DEFAULT_ERROR_MESSAGE
            self._job_done.set()
            return

        # We store the file in a temporary path fist to ensure integrity.
        temporary_backup_file = NamedTemporaryFile(delete=False)
        with open(temporary_backup_file.name, "wb") as write_backup:
            app = CuraApplication.getInstance()
            bytes_read = reply.read(self.DISK_WRITE_BUFFER_SIZE)
            while bytes_read:
                write_backup.write(bytes_read)
                bytes_read = reply.read(self.DISK_WRITE_BUFFER_SIZE)
                app.processEvents()

        if not self._verifyMd5Hash(temporary_backup_file.name,
                                   self._backup.get("md5_hash", "")):
            # Don't restore the backup if the MD5 hashes do not match.
            # This can happen if the download was interrupted.
            Logger.log(
                "w",
                "Remote and local MD5 hashes do not match, not restoring backup."
            )
            self.restore_backup_error_message = self.DEFAULT_ERROR_MESSAGE

        # Tell Cura to place the backup back in the user data folder.
        with open(temporary_backup_file.name, "rb") as read_backup:
            cura_api = CuraApplication.getInstance().getCuraAPI()
            cura_api.backups.restoreBackup(read_backup.read(),
                                           self._backup.get("metadata", {}))

        self._job_done.set()
 def _onDeleteRequestCompleted(
         reply: QNetworkReply,
         callable: Callable[[bool], None],
         error: Optional["QNetworkReply.NetworkError"] = None) -> None:
     callable(HttpRequestManager.replyIndicatesSuccess(reply, error))
 def _onImageLoaded(self, reply: QNetworkReply, error: Optional["QNetworkReply.NetworkError"] = None) -> None:
     if not HttpRequestManager.replyIndicatesSuccess(reply, error):
         Logger.warning("Requesting preview image failed, response code {0} while trying to connect to {1}".format(
                        reply.attribute(QNetworkRequest.HttpStatusCodeAttribute), reply.url()))
         return
     self.updatePreviewImageData(reply.readAll())