From af8767880533aeda5e697c523b1dd3d1e24320d1 Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Mon, 10 Mar 2025 01:26:13 +0300 Subject: [PATCH] Remove robots based on Twisted Once again found it's the least interesting library to use. --- Robots/bkmk_rtwisted.py | 112 ---------------------------------------- bkmk_db-venv-twisted | 8 --- doc/ANNOUNCE | 1 - doc/ChangeLog | 1 - 4 files changed, 122 deletions(-) delete mode 100644 Robots/bkmk_rtwisted.py delete mode 100644 bkmk_db-venv-twisted diff --git a/Robots/bkmk_rtwisted.py b/Robots/bkmk_rtwisted.py deleted file mode 100644 index 67a95e0..0000000 --- a/Robots/bkmk_rtwisted.py +++ /dev/null @@ -1,112 +0,0 @@ -"""Simple robot based on twisted.web - -This file is a part of Bookmarks database and Internet robot. - -""" - -__author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2025 PhiloSoft Design" -__license__ = "GNU GPL" - -__all__ = ['robot_twisted'] - -from urllib.parse import urlsplit -import threading - -from twisted.internet import reactor, _sslverify -from twisted.internet.endpoints import TCP4ClientEndpoint -from twisted.web.client import Agent, ProxyAgent, readBody -from twisted.web.http_headers import Headers -import twisted - -from Robots.base import robot_base -from Robots.util import encode_url, get_ftp - - -_sslverify.platformTrust = lambda: None - -reactor_thread = threading.Thread(target=reactor.run, - kwargs={'installSignalHandlers': False}) -reactor_thread.start() - - -class robot_twisted(robot_base): - def __init__(self, *args, **kw): - robot_base.__init__(self, *args, **kw) - self.event = threading.Event() - - def version_str(self): - return 'twisted/%s' % twisted.version - - async def get(self, url, req_headers, use_proxy=False): - if url.startswith('ftp://'): - error, welcome, body = get_ftp(url, self.timeout) - if error is not None: - return error, None, None, None - self.welcome = welcome - return None, None, None, body - - 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 - d = agent.request(b"GET", url, - Headers(_headers), None) - d.addCallbacks(self.cbResponse, self.cbError) - - self.event.clear() - self.event.wait(self.timeout) - - if self.error is None: - if self.body is None: - return 'Timeout', None, None, None - else: - error = self.error.getErrorMessage() - return error, None, None, None - - r = self.response - resp_headers = {k.decode('ascii'): decode_header(v[0]) - for k, v in r.headers.getAllRawHeaders()} - return None, r.code, resp_headers, self.body - - def get_ftp_welcome(self): - welcome = self.welcome - self.welcome = '' - return welcome - - def stop(self): - reactor.stop() - reactor_thread.join(self.timeout) - - def cbResponse(self, response): - self.response = response - - d = readBody(response) - d.addCallback(self.cbBody) - return d - - def cbError(self, error): - self.error = error - self.event.set() - - def cbBody(self, body): - self.body = body - self.event.set() - - -def decode_header(header): - for encoding in 'ascii', 'latin1', 'utf-8': - try: - header = header.decode(encoding) - except UnicodeDecodeError: - pass - else: - return header - return '' diff --git a/bkmk_db-venv-twisted b/bkmk_db-venv-twisted deleted file mode 100644 index 343d424..0000000 --- a/bkmk_db-venv-twisted +++ /dev/null @@ -1,8 +0,0 @@ -# This is not a shell script; it shouldn't be executed, -# it should be sourced into the current shell. - -if [ -z "$VIRTUAL_ENV" ]; then - . bkmk_db-venv && - pip install --compile --upgrade \ - "twisted[tls]" -fi diff --git a/doc/ANNOUNCE b/doc/ANNOUNCE index e3cce46..eaa30f8 100644 --- a/doc/ANNOUNCE +++ b/doc/ANNOUNCE @@ -9,7 +9,6 @@ WHAT'S NEW Version 6.5.0 (2025-??-??) - Robots based on Twisted. Version 6.4.0 (2025-03-07) diff --git a/doc/ChangeLog b/doc/ChangeLog index 0adbcff..a8cbd9d 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,6 +1,5 @@ Version 6.5.0 (2025-??-??) - Robots based on Twisted. Version 6.4.0 (2025-03-07) -- 2.39.5