]> git.phdru.name Git - bookmarks_db.git/commitdiff
Feat(bkmk_rtwisted): HTTP proxy
authorOleg Broytman <phd@phdru.name>
Sat, 8 Mar 2025 22:04:05 +0000 (01:04 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 8 Mar 2025 22:04:05 +0000 (01:04 +0300)
Robots/bkmk_rtwisted.py

index 287975cdbc233d9ffc8cb84a41ddb512a4039c0f..0a4616fccc2eba80d5b362db492fdff73a950e14 100644 (file)
@@ -10,11 +10,13 @@ __license__ = "GNU GPL"
 
 __all__ = ['robot_twisted']
 
+from urllib.parse import urlsplit
 import threading
 import time
 
 from twisted.internet import reactor, _sslverify
-from twisted.web.client import Agent, readBody
+from twisted.internet.endpoints import TCP4ClientEndpoint
+from twisted.web.client import Agent, ProxyAgent, readBody
 from twisted.web.http_headers import Headers
 import twisted
 
@@ -41,7 +43,14 @@ class robot_twisted(robot_base):
             self.welcome = welcome
             return None, None, None, body
 
-        agent = Agent(reactor, connectTimeout=self.timeout)
+        if use_proxy:
+            split_proxy = urlsplit(self.proxy)
+            proxy_host = split_proxy.hostname
+            proxy_port = split_proxy.port
+            endpoint = TCP4ClientEndpoint(reactor, proxy_host, proxy_port)
+            agent = ProxyAgent(endpoint, reactor)
+        else:
+            agent = Agent(reactor, connectTimeout=self.timeout)
         url = encode_url(url).encode('ascii')
         _headers = {k: [v] for k, v in req_headers.items()}
         self.response = self.error = self.body = None