Helpviewer/Network/NetworkAccessManager.py

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

eric ide

mercurial