eric6/Helpviewer/Network/NetworkAccessManagerProxy.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/Helpviewer/Network/NetworkAccessManagerProxy.py	Sun Apr 14 15:09:21 2019 +0200
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a network access manager proxy for web pages.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
+try:
+    from PyQt5.QtNetwork import QSslError
+    # __IGNORE_EXCEPTION__ __IGNORE_WARNING__
+    SSL_AVAILABLE = True
+except ImportError:
+    SSL_AVAILABLE = False
+
+
+class NetworkAccessManagerProxy(QNetworkAccessManager):
+    """
+    Class implementing a network access manager proxy for web pages.
+    """
+    primaryManager = None
+    
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent object (QObject)
+        """
+        super(NetworkAccessManagerProxy, self).__init__(parent)
+        self.__webPage = None
+    
+    def setWebPage(self, page):
+        """
+        Public method to set the reference to a web page.
+        
+        @param page reference to the web page object (HelpWebPage)
+        """
+        assert page is not None
+        self.__webPage = page
+    
+    def setPrimaryNetworkAccessManager(self, manager):
+        """
+        Public method to set the primary network access manager.
+        
+        @param manager reference to the network access manager object
+            (QNetworkAccessManager)
+        """
+        assert manager is not None
+        if self.__class__.primaryManager is None:
+            self.__class__.primaryManager = manager
+        self.setCookieJar(self.__class__.primaryManager.cookieJar())
+        # do not steal ownership
+        self.cookieJar().setParent(self.__class__.primaryManager)
+        
+        if SSL_AVAILABLE:
+            self.sslErrors.connect(self.__class__.primaryManager.sslErrors)
+        self.proxyAuthenticationRequired.connect(
+            self.__class__.primaryManager.proxyAuthenticationRequired)
+        self.authenticationRequired.connect(
+            self.__class__.primaryManager.authenticationRequired)
+        self.finished.connect(self.__class__.primaryManager.finished)
+    
+    def createRequest(self, op, request, outgoingData=None):
+        """
+        Public method to create a request.
+        
+        @param op the operation to be performed
+            (QNetworkAccessManager.Operation)
+        @param request reference to the request object (QNetworkRequest)
+        @param outgoingData reference to an IODevice containing data to be sent
+            (QIODevice)
+        @return reference to the created reply object (QNetworkReply)
+        """
+        if self.primaryManager is not None:
+            pageRequest = QNetworkRequest(request)
+            if self.__webPage is not None:
+                self.__webPage.populateNetworkRequest(pageRequest)
+            return self.primaryManager.createRequest(
+                op, pageRequest, outgoingData)
+        else:
+            return QNetworkAccessManager.createRequest(
+                self, op, request, outgoingData)

eric ide

mercurial