Helpviewer/AdBlock/AdBlockNetwork.py

changeset 0
de9c2efb9d02
child 12
1d8dd9706f46
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Helpviewer/AdBlock/AdBlockNetwork.py	Mon Dec 28 16:03:33 2009 +0000
@@ -0,0 +1,53 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2009 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the network block class.
+"""
+
+from PyQt4.QtCore import *
+
+import Helpviewer.HelpWindow
+
+from AdBlockBlockedNetworkReply import AdBlockBlockedNetworkReply
+
+class AdBlockNetwork(QObject):
+    """
+    Class implementing a network block.
+    """
+    def block(self, request):
+        """
+        Public method to check for a network block.
+        
+        @return reply object (QNetworkReply) or None
+        """
+        url = request.url()
+        
+        if url.scheme() in ["data", "pyrc", "qthelp"]:
+            return None
+        
+        manager = Helpviewer.HelpWindow.HelpWindow.adblockManager()
+        if not manager.isEnabled():
+            return None
+        
+        urlString = unicode(url.toEncoded())
+        blockedRule = None
+        blockingSubscription = None
+        
+        for subscription in manager.subscriptions():
+            if subscription.allow(urlString):
+                return None
+            
+            rule = subscription.block(urlString)
+            if rule is not None:
+                blockedRule = rule
+                blockingSubscription = subscription
+                break
+        
+        if blockedRule is not None:
+            reply = AdBlockBlockedNetworkReply(request, blockedRule, self)
+            return reply
+        
+        return None

eric ide

mercurial