Helpviewer/Network/NetworkAccessManager.py

changeset 3002
6ffc581f00f1
parent 2699
dd62671c6d5a
child 3018
70924c0bdaf1
child 3057
10516539f238
equal deleted inserted replaced
3001:3674ff5fa8f8 3002:6ffc581f00f1
9 9
10 import os 10 import os
11 11
12 from PyQt4.QtCore import pyqtSignal, QByteArray, qVersion 12 from PyQt4.QtCore import pyqtSignal, QByteArray, qVersion
13 from PyQt4.QtGui import QDialog 13 from PyQt4.QtGui import QDialog
14 from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply 14 from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest, \
15 QNetworkReply
15 16
16 from E5Network.E5NetworkProxyFactory import E5NetworkProxyFactory, \ 17 from E5Network.E5NetworkProxyFactory import E5NetworkProxyFactory, \
17 proxyAuthenticationRequired 18 proxyAuthenticationRequired
18 try: 19 try:
19 from PyQt4.QtNetwork import QSslSocket 20 from PyQt4.QtNetwork import QSslSocket
28 29
29 class NetworkAccessManager(QNetworkAccessManager): 30 class NetworkAccessManager(QNetworkAccessManager):
30 """ 31 """
31 Class implementing a QNetworkAccessManager subclass. 32 Class implementing a QNetworkAccessManager subclass.
32 33
33 @signal requestCreated(QNetworkAccessManager.Operation, QNetworkRequest, QNetworkReply) 34 @signal requestCreated(QNetworkAccessManager.Operation, QNetworkRequest,
35 QNetworkReply)
34 emitted after the request has been created 36 emitted after the request has been created
35 """ 37 """
36 requestCreated = pyqtSignal( 38 requestCreated = pyqtSignal(
37 QNetworkAccessManager.Operation, QNetworkRequest, QNetworkReply) 39 QNetworkAccessManager.Operation, QNetworkRequest, QNetworkReply)
38 40
74 self.setSchemeHandler("eric", EricAccessHandler(self)) 76 self.setSchemeHandler("eric", EricAccessHandler(self))
75 77
76 from .AboutAccessHandler import AboutAccessHandler 78 from .AboutAccessHandler import AboutAccessHandler
77 self.setSchemeHandler("about", AboutAccessHandler(self)) 79 self.setSchemeHandler("about", AboutAccessHandler(self))
78 80
79 from Helpviewer.AdBlock.AdBlockAccessHandler import AdBlockAccessHandler 81 from Helpviewer.AdBlock.AdBlockAccessHandler import \
82 AdBlockAccessHandler
80 self.setSchemeHandler("abp", AdBlockAccessHandler(self)) 83 self.setSchemeHandler("abp", AdBlockAccessHandler(self))
81 84
82 from .FtpAccessHandler import FtpAccessHandler 85 from .FtpAccessHandler import FtpAccessHandler
83 self.setSchemeHandler("ftp", FtpAccessHandler(self)) 86 self.setSchemeHandler("ftp", FtpAccessHandler(self))
84 87
88 def setSchemeHandler(self, scheme, handler): 91 def setSchemeHandler(self, scheme, handler):
89 """ 92 """
90 Public method to register a scheme handler. 93 Public method to register a scheme handler.
91 94
92 @param scheme access scheme (string) 95 @param scheme access scheme (string)
93 @param handler reference to the scheme handler object (SchemeAccessHandler) 96 @param handler reference to the scheme handler object
97 (SchemeAccessHandler)
94 """ 98 """
95 self.__schemeHandlers[scheme] = handler 99 self.__schemeHandlers[scheme] = handler
96 100
97 def createRequest(self, op, request, outgoingData=None): 101 def createRequest(self, op, request, outgoingData=None):
98 """ 102 """
99 Protected method to create a request. 103 Protected method to create a request.
100 104
101 @param op the operation to be performed (QNetworkAccessManager.Operation) 105 @param op the operation to be performed
106 (QNetworkAccessManager.Operation)
102 @param request reference to the request object (QNetworkRequest) 107 @param request reference to the request object (QNetworkRequest)
103 @param outgoingData reference to an IODevice containing data to be sent 108 @param outgoingData reference to an IODevice containing data to be sent
104 (QIODevice) 109 (QIODevice)
105 @return reference to the created reply object (QNetworkReply) 110 @return reference to the created reply object (QNetworkReply)
106 """ 111 """
107 scheme = request.url().scheme() 112 scheme = request.url().scheme()
108 if scheme == "https" and (not SSL_AVAILABLE or not QSslSocket.supportsSsl()): 113 if scheme == "https" and \
109 from .NetworkProtocolUnknownErrorReply import NetworkProtocolUnknownErrorReply 114 (not SSL_AVAILABLE or not QSslSocket.supportsSsl()):
115 from .NetworkProtocolUnknownErrorReply import \
116 NetworkProtocolUnknownErrorReply
110 return NetworkProtocolUnknownErrorReply(scheme, self) 117 return NetworkProtocolUnknownErrorReply(scheme, self)
111 118
112 import Helpviewer.HelpWindow 119 import Helpviewer.HelpWindow
113 120
114 if op == QNetworkAccessManager.PostOperation and outgoingData is not None: 121 if op == QNetworkAccessManager.PostOperation and \
122 outgoingData is not None:
115 outgoingDataByteArray = outgoingData.peek(1024 * 1024) 123 outgoingDataByteArray = outgoingData.peek(1024 * 1024)
116 Helpviewer.HelpWindow.HelpWindow.passwordManager().post( 124 Helpviewer.HelpWindow.HelpWindow.passwordManager().post(
117 request, outgoingDataByteArray) 125 request, outgoingDataByteArray)
118 126
119 reply = None 127 reply = None
122 .createRequest(op, request, outgoingData) 130 .createRequest(op, request, outgoingData)
123 if reply is not None: 131 if reply is not None:
124 return reply 132 return reply
125 133
126 # give GreaseMonkey the chance to create a request 134 # give GreaseMonkey the chance to create a request
127 reply = Helpviewer.HelpWindow.HelpWindow.greaseMonkeyManager().createRequest( 135 reply = Helpviewer.HelpWindow.HelpWindow.greaseMonkeyManager()\
128 op, request, outgoingData) 136 .createRequest(op, request, outgoingData)
129 if reply is not None: 137 if reply is not None:
130 return reply 138 return reply
131 139
132 req = QNetworkRequest(request) 140 req = QNetworkRequest(request)
133 if req.rawHeader("X-Eric5-UserLoadAction") == QByteArray("1"): 141 if req.rawHeader("X-Eric5-UserLoadAction") == QByteArray("1"):
134 req.setRawHeader("X-Eric5-UserLoadAction", QByteArray()) 142 req.setRawHeader("X-Eric5-UserLoadAction", QByteArray())
135 req.setAttribute(QNetworkRequest.User + 200, "") 143 req.setAttribute(QNetworkRequest.User + 200, "")
136 else: 144 else:
137 req.setAttribute(QNetworkRequest.User + 200, req.rawHeader("Referer")) 145 req.setAttribute(
146 QNetworkRequest.User + 200, req.rawHeader("Referer"))
138 147
139 if hasattr(QNetworkRequest, 'HttpPipeliningAllowedAttribute'): 148 if hasattr(QNetworkRequest, 'HttpPipeliningAllowedAttribute'):
140 req.setAttribute(QNetworkRequest.HttpPipeliningAllowedAttribute, True) 149 req.setAttribute(
150 QNetworkRequest.HttpPipeliningAllowedAttribute, True)
141 if not self.__acceptLanguage.isEmpty(): 151 if not self.__acceptLanguage.isEmpty():
142 req.setRawHeader("Accept-Language", self.__acceptLanguage) 152 req.setRawHeader("Accept-Language", self.__acceptLanguage)
143 153
144 # AdBlock code 154 # AdBlock code
145 if op == QNetworkAccessManager.GetOperation: 155 if op == QNetworkAccessManager.GetOperation:
173 # Send referer header? 183 # Send referer header?
174 if not self.__sendReferer and \ 184 if not self.__sendReferer and \
175 req.url().host() not in Preferences.getHelp("SendRefererWhitelist"): 185 req.url().host() not in Preferences.getHelp("SendRefererWhitelist"):
176 req.setRawHeader("Referer", "") 186 req.setRawHeader("Referer", "")
177 187
178 reply = QNetworkAccessManager.createRequest(self, op, req, outgoingData) 188 reply = QNetworkAccessManager.createRequest(
189 self, op, req, outgoingData)
179 self.requestCreated.emit(op, req, reply) 190 self.requestCreated.emit(op, req, reply)
180 191
181 return reply 192 return reply
182 193
183 def __authenticationRequired(self, reply, auth): 194 def __authenticationRequired(self, reply, auth):
244 """ 255 """
245 if Preferences.getHelp("DiskCacheEnabled"): 256 if Preferences.getHelp("DiskCacheEnabled"):
246 from PyQt4.QtWebKit import qWebKitVersion 257 from PyQt4.QtWebKit import qWebKitVersion
247 from .NetworkDiskCache import NetworkDiskCache 258 from .NetworkDiskCache import NetworkDiskCache
248 diskCache = NetworkDiskCache(self) 259 diskCache = NetworkDiskCache(self)
249 location = os.path.join(Utilities.getConfigDir(), "browser", 'cache', 260 location = os.path.join(
250 "{0}-Qt{1}".format(qWebKitVersion(), qVersion())) 261 Utilities.getConfigDir(), "browser", 'cache',
262 "{0}-Qt{1}".format(qWebKitVersion(), qVersion()))
251 size = Preferences.getHelp("DiskCacheSize") * 1024 * 1024 263 size = Preferences.getHelp("DiskCacheSize") * 1024 * 1024
252 diskCache.setCacheDirectory(location) 264 diskCache.setCacheDirectory(location)
253 diskCache.setMaximumCacheSize(size) 265 diskCache.setMaximumCacheSize(size)
254 else: 266 else:
255 diskCache = None 267 diskCache = None

eric ide

mercurial