|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2009 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing the network block class. |
|
8 """ |
|
9 |
|
10 from PyQt4.QtCore import * |
|
11 |
|
12 import Helpviewer.HelpWindow |
|
13 |
|
14 from AdBlockBlockedNetworkReply import AdBlockBlockedNetworkReply |
|
15 |
|
16 class AdBlockNetwork(QObject): |
|
17 """ |
|
18 Class implementing a network block. |
|
19 """ |
|
20 def block(self, request): |
|
21 """ |
|
22 Public method to check for a network block. |
|
23 |
|
24 @return reply object (QNetworkReply) or None |
|
25 """ |
|
26 url = request.url() |
|
27 |
|
28 if url.scheme() in ["data", "pyrc", "qthelp"]: |
|
29 return None |
|
30 |
|
31 manager = Helpviewer.HelpWindow.HelpWindow.adblockManager() |
|
32 if not manager.isEnabled(): |
|
33 return None |
|
34 |
|
35 urlString = unicode(url.toEncoded()) |
|
36 blockedRule = None |
|
37 blockingSubscription = None |
|
38 |
|
39 for subscription in manager.subscriptions(): |
|
40 if subscription.allow(urlString): |
|
41 return None |
|
42 |
|
43 rule = subscription.block(urlString) |
|
44 if rule is not None: |
|
45 blockedRule = rule |
|
46 blockingSubscription = subscription |
|
47 break |
|
48 |
|
49 if blockedRule is not None: |
|
50 reply = AdBlockBlockedNetworkReply(request, blockedRule, self) |
|
51 return reply |
|
52 |
|
53 return None |