Helpviewer/Network/NetworkReply.py

changeset 0
de9c2efb9d02
child 7
c679fb30c8f3
equal deleted inserted replaced
-1:000000000000 0:de9c2efb9d02
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2009 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a network reply object for special data.
8 """
9
10 from PyQt4.QtCore import *
11 from PyQt4.QtNetwork import QNetworkReply, QNetworkRequest
12
13 class NetworkReply(QNetworkReply):
14 """
15 Class implementing a QNetworkReply subclass for special data.
16 """
17 def __init__(self, request, fileData, mimeType):
18 """
19 Constructor
20
21 @param request reference to the request object (QNetworkRequest)
22 @param fileData reference to the data buffer (QByteArray)
23 @param mimeType for the reply (string)
24 """
25 QNetworkReply.__init__(self)
26
27 self.__data = fileData
28
29 self.setRequest(request)
30 self.setOpenMode(QIODevice.ReadOnly)
31
32 self.setHeader(QNetworkRequest.ContentTypeHeader, QVariant(mimeType))
33 self.setHeader(QNetworkRequest.ContentLengthHeader,
34 QVariant(QByteArray.number(fileData.length())))
35 QTimer.singleShot(0, self, SIGNAL("metaDataChanged()"))
36 QTimer.singleShot(0, self, SIGNAL("readyRead()"))
37
38 def abort(self):
39 """
40 Public slot to abort the operation.
41 """
42 # do nothing
43 pass
44
45 def bytesAvailable(self):
46 """
47 Public method to determined the bytes available for being read.
48
49 @return bytes available (integer)
50 """
51 return self.__data.length() + QNetworkReply.bytesAvailable(self)
52
53 def readData(self, maxlen):
54 """
55 Protected method to retrieve data from the reply object.
56
57 @param maxlen maximum number of bytes to read (integer)
58 @return string containing the data (string)
59 """
60 len_ = min(maxlen, self.__data.length())
61 buffer = str(self.__data[:len_])
62 self.__data.remove(0, len_)
63 if self.__data.length() == 0:
64 QTimer.singleShot(0, self, SIGNAL("finished()"))
65 return buffer

eric ide

mercurial