Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class NetworkReply(QNetworkReply):
- def __init__(self, reply):
- self.reply = reply
- QNetworkReply.__init__(self)
- # handle these to forward
- reply.metaDataChanged.connect(self.applyMetaData)
- reply.readyRead.connect(self.readInternal)
- reply.error.connect(self.errorInternal)
- # forward signals
- reply.finished.connect(self.finished)
- reply.uploadProgress.connect(self.uploadProgress)
- reply.downloadProgress.connect(self.downloadProgress)
- self.setOpenMode(QNetworkReply.ReadOnly)
- self.data = self.buffer = ''
- def operation(self):
- return self.reply.operation()
- def request(self):
- return self.reply.request()
- def url(self):
- return self.reply.url()
- def abort(self):
- self.reply.abort()
- def close(self):
- self.reply.close()
- def isSequential(self):
- return self.reply.isSequential()
- def setReadBufferSize(self, size):
- QNetworkReply.setReadBufferSize(size)
- self.reply.setReadBufferSize(size)
- def applyMetaData(self):
- for header in self.reply.rawHeaderList():
- self.setRawHeader(header, self.reply.rawHeader(header))
- self.setHeader(QNetworkRequest.ContentTypeHeader, self.reply.header(QNetworkRequest.ContentTypeHeader))
- self.setHeader(QNetworkRequest.ContentLengthHeader, self.reply.header(QNetworkRequest.ContentLengthHeader))
- self.setHeader(QNetworkRequest.LocationHeader, self.reply.header(QNetworkRequest.LocationHeader))
- self.setHeader(QNetworkRequest.LastModifiedHeader, self.reply.header(QNetworkRequest.LastModifiedHeader))
- self.setHeader(QNetworkRequest.SetCookieHeader, self.reply.header(QNetworkRequest.SetCookieHeader))
- self.setAttribute(QNetworkRequest.HttpStatusCodeAttribute, self.reply.attribute(QNetworkRequest.HttpStatusCodeAttribute))
- self.setAttribute(QNetworkRequest.HttpReasonPhraseAttribute, self.reply.attribute(QNetworkRequest.HttpReasonPhraseAttribute))
- self.setAttribute(QNetworkRequest.RedirectionTargetAttribute, self.reply.attribute(QNetworkRequest.RedirectionTargetAttribute))
- self.setAttribute(QNetworkRequest.ConnectionEncryptedAttribute, self.reply.attribute(QNetworkRequest.ConnectionEncryptedAttribute))
- self.setAttribute(QNetworkRequest.CacheLoadControlAttribute, self.reply.attribute(QNetworkRequest.CacheLoadControlAttribute))
- self.setAttribute(QNetworkRequest.CacheSaveControlAttribute, self.reply.attribute(QNetworkRequest.CacheSaveControlAttribute))
- self.setAttribute(QNetworkRequest.SourceIsFromCacheAttribute, self.reply.attribute(QNetworkRequest.SourceIsFromCacheAttribute))
- # attribute does not exist
- #self.setAttribute(QNetworkRequest.DoNotBufferUploadDataAttribute, self.reply.attribute(QNetworkRequest.DoNotBufferUploadDataAttribute))
- self.metaDataChanged.emit()
- def errorInternal(self, e):
- self.error.emit(e)
- self.setError(e, str(e))
- def readInternal(self):
- # this is called
- s = self.reply.readAll()
- self.data += s
- self.buffer += s
- self.readyRead.emit()
- def bytesAvailable(self):
- return len(self.buffer) + self.reply.bytesAvailable()
- def readAll(self):
- # this is never called
- return self.data
- def readData(self, data, size):
- # this is never called
- size = min(size, len(self.buffer))
- data, self.buffer = self.buffer[:size], self.buffer[size:]
- return size
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement