eric6/Helpviewer/Network/NetworkAccessManagerProxy.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a network access manager proxy for web pages.
8 """
9
10 from __future__ import unicode_literals
11
12 from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
13 try:
14 from PyQt5.QtNetwork import QSslError
15 # __IGNORE_EXCEPTION__ __IGNORE_WARNING__
16 SSL_AVAILABLE = True
17 except ImportError:
18 SSL_AVAILABLE = False
19
20
21 class NetworkAccessManagerProxy(QNetworkAccessManager):
22 """
23 Class implementing a network access manager proxy for web pages.
24 """
25 primaryManager = None
26
27 def __init__(self, parent=None):
28 """
29 Constructor
30
31 @param parent reference to the parent object (QObject)
32 """
33 super(NetworkAccessManagerProxy, self).__init__(parent)
34 self.__webPage = None
35
36 def setWebPage(self, page):
37 """
38 Public method to set the reference to a web page.
39
40 @param page reference to the web page object (HelpWebPage)
41 """
42 assert page is not None
43 self.__webPage = page
44
45 def setPrimaryNetworkAccessManager(self, manager):
46 """
47 Public method to set the primary network access manager.
48
49 @param manager reference to the network access manager object
50 (QNetworkAccessManager)
51 """
52 assert manager is not None
53 if self.__class__.primaryManager is None:
54 self.__class__.primaryManager = manager
55 self.setCookieJar(self.__class__.primaryManager.cookieJar())
56 # do not steal ownership
57 self.cookieJar().setParent(self.__class__.primaryManager)
58
59 if SSL_AVAILABLE:
60 self.sslErrors.connect(self.__class__.primaryManager.sslErrors)
61 self.proxyAuthenticationRequired.connect(
62 self.__class__.primaryManager.proxyAuthenticationRequired)
63 self.authenticationRequired.connect(
64 self.__class__.primaryManager.authenticationRequired)
65 self.finished.connect(self.__class__.primaryManager.finished)
66
67 def createRequest(self, op, request, outgoingData=None):
68 """
69 Public method to create a request.
70
71 @param op the operation to be performed
72 (QNetworkAccessManager.Operation)
73 @param request reference to the request object (QNetworkRequest)
74 @param outgoingData reference to an IODevice containing data to be sent
75 (QIODevice)
76 @return reference to the created reply object (QNetworkReply)
77 """
78 if self.primaryManager is not None:
79 pageRequest = QNetworkRequest(request)
80 if self.__webPage is not None:
81 self.__webPage.populateNetworkRequest(pageRequest)
82 return self.primaryManager.createRequest(
83 op, pageRequest, outgoingData)
84 else:
85 return QNetworkAccessManager.createRequest(
86 self, op, request, outgoingData)

eric ide

mercurial