def on_received_response(self, reply: QNetworkReply):
        if reply.error() != QNetworkReply.NoError:
            error_msg = "Unable to create new print share: {}".format(reply.errorString())
            logging.error(error_msg)
            app_settings.app_data_writer.signals.exchange_share_failed.emit(error_msg)
            return

        share_location = reply.rawHeader(QByteArray(bytes("Location", encoding="utf-8")))
        app_settings.app_data_writer.signals.exchange_share_created.emit(share_location.data().decode())
        reply.deleteLater()
        self.buffer.close()
예제 #2
0
 def done(self, reply: QNetworkReply) -> None:
     if reply.error() != QNetworkReply.NoError:
         self.logger.error(reply.errorString())
         sys.stderr.write(reply.errorString())
         return
     if os.getenv('DEBUG', False):
         self.log_request(reply)
     # noinspection PyTypeChecker
     jsonobj = json.loads(str(reply.readAll(), 'utf-8'))
     reply.deleteLater()
     latest = parse_version(jsonobj.get('tag_name'))
     current = parse_version(qApp.applicationVersion())
     self.mbox.show_result(latest, current)
예제 #3
0
 def done(self, reply: QNetworkReply):
     if reply.error() != QNetworkReply.NoError:
         sys.stderr.write(reply.errorString())
         return
     try:
         json_data = json.loads(str(reply.readAll(), 'utf-8'))
         reply.deleteLater()
         latest = json_data.get('tag_name')
         current = qApp.applicationVersion()
         self.parent.update_available(latest, current)
     except json.JSONDecodeError:
         self.logger.exception('Error retrieving data', exc_info=True)
         raise
예제 #4
0
 def handleNetworkData(self, networkReply: QNetworkReply):
     if networkReply.error() == QNetworkReply.NoError:
         choices = []
         response = networkReply.readAll()
         xml = QXmlStreamReader(response)
         while not xml.atEnd():
             xml.readNext()
             if xml.tokenType() == QXmlStreamReader.StartElement:
                 if xml.name() == 'suggestion':
                     string = xml.attributes().value('data')
                     choices.append(string)
         self.showCompletion(choices)
     networkReply.deleteLater()
예제 #5
0
 def done(self, reply: QNetworkReply) -> None:
     if reply.error() != QNetworkReply.NoError:
         self.logger.error(reply.errorString())
         sys.stderr.write(reply.errorString())
         return
     if os.getenv('DEBUG', False):
         self.log_request(reply)
     try:
         jsonobj = loads(str(reply.readAll(), 'utf-8'))
         reply.deleteLater()
         latest = jsonobj.get('tag_name')
         current = qApp.applicationVersion()
         self.mbox.show_result(latest, current)
     except JSONDecodeError:
         self.logger.exception('Updater JSON decoding error', exc_info=True)
         raise
예제 #6
0
 def handle_finished(self, reply: QNetworkReply) -> None:
     reply.deleteLater()
     if reply is not self._current_reply:
         return
     if reply.error() == QNetworkReply.OperationCanceledError:
         return
     results, error_string = self.process_reply(reply)
     if isinstance(results, Iterable):
         for result in results:
             item = QStandardItem(result)
             self.appendRow(item)
     if isinstance(error_string, str) and error_string:
         self._error_string = error_string
     else:
         self._error_string = ""
     self._current_reply = None
     self.finished.emit()
예제 #7
0
    def __request_finished(self, reply: QNetworkReply):
        """
        Slot attached to finished signal of network access manager
        Retrieves HTTP data and sets image appropriately
        """

        pix = QPixmap()

        if reply.error() != QNetworkReply.NoError:
            qDebug(f"Unable to fetch image at {reply.url()}")
        else:
            img_data = reply.readAll()
            pix.loadFromData(img_data)
            reply.deleteLater()

        if pix.isNull():
            pix.load(R"img/default_photo.png")

        # Emit signal
        self.image_request_finished.emit(reply.url().toString(), pix)
예제 #8
0
    def slot_reply_finished(self, data: QNetworkReply):

        self._reply = data
        self._text = data.readAll()
        self._string = bytes(self._text).decode()
        self._status_code = data.attribute(
            QNetworkRequest.HttpStatusCodeAttribute)
        self._save_header(data.rawHeaderPairs())

        if self.content_type() == 'json':
            if len(self._string):
                self._json = json.loads(self._string)
        else:
            self._json = None

        if self._status_code >= 400:
            print(self._string)

        self.sig_ended.emit(True)
        data.deleteLater()
예제 #9
0
 def from_reply(cls, reply: QtNetwork.QNetworkReply) -> 'Response':
     """Slowly populates a new Response object with data from the request."""
     r = cls()
     
     # Signal mapping
     reply.metaDataChanged.connect(functools.partial(r._insert_headers, reply.rawHeaderPairs()))
     reply.redirected.connect(r._insert_url)
     reply.error.connect(r._update_code)
     reply.error.connect(functools.partial(r._update_error_string, reply.errorString()))
     
     # Wait until the request is finished before continuing
     signals.wait_for_signal(reply.finished)
     
     # Strip the remaining data from the reply, then mark it for deletion
     r._from_reply(reply)
     
     reply.close()
     reply.deleteLater()
     
     # Return the object
     return r
예제 #10
0
    def handleNetworkData(self, reply: QNetworkReply) -> None:
        img = QImage()
        tp = reply.request().attribute(QNetworkRequest.User)
        if not reply.error():
            if not img.load(reply, ""):
                img = QImage()
        reply.deleteLater()
        self.m_tilePixmaps[QPointH(tp)] = (
            self.m_emptyTile if img.isNull() else QPixmap.fromImage(img)
        )
        self.updated.emit(self.tileRect(tp))

        # purge unused spaces
        bound = self.m_tilesRect.adjusted(-2, -2, 2, 2)
        self.m_tilePixmaps = {
            tp: pixmap
            for tp, pixmap in self.m_tilePixmaps.items()
            if bound.contains(tp)
        }

        self.download()