-- Leo's gemini proxy
-- Connecting to git.thebackupbox.net:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
repo: gemcall action: commit revision: path_from: revision_from: b4f45782fc357327ed34a6028f4f9d6322d56027: path_to: revision_to:
commit b4f45782fc357327ed34a6028f4f9d6322d56027 Author: Björn Wärmedal <bjorn.warmedal@storytel.com> Date: Sat Jul 17 16:25:16 2021 +0200 Added timeout option and typed everything. diff --git a/gemcall b/gemcall
--- a/gemcall +++ b/gemcall @@ -13,7 +13,7 @@ from cryptography.hazmat.primitives.serialization import Encoding,PublicFormat class Response(): - def __init__(self, socket): + def __init__(self, socket: socket.socket) -> "Response": self._socket = socket cert = self._socket.getpeercert(binary_form=True) @@ -32,14 +32,14 @@ class Response(): self.discard() raise RuntimeError("Received malformed header from gemini server") - def read(self, bufsize=4096): + def read(self, bufsize: int = 4096) -> "bytes": return self._filehandle.read(bufsize) - def discard(self): + def discard(self) -> None: self._filehandle.close() self._socket.close() -def request(url, clientcert=None, clientkey=None): +def request(url: str = "", clientcert: str = None, clientkey: str = None, timeout: int = 3) -> "Response": parsed = urllib.parse.urlparse(url) context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) context.minimum_version = ssl.TLSVersion.TLSv1_2 @@ -61,6 +61,7 @@ if __name__ == "__main__": parser.add_argument("-k","--clientkey",help="Path to the private key file for a client certificate. This is optional, but must be used when -c/--clientcert is used.") parser.add_argument("-u","--url",help="Fully qualified URL to fetch.") parser.add_argument("-o","--outputfile",help="File to output response body to.") + parser.add_argument("-t","--timeout",help="Timeout of connection attempt, in seconds. Default is 3.",default=3,type=int) parser.add_argument("-q","--quiet",help="Don't print response header.",action="store_true") parser.add_argument("-n","--nobody",help="Only print response header.",action="store_true") args = parser.parse_args() @@ -68,7 +69,7 @@ if __name__ == "__main__": if not args.url: parser.print_help() else: - responseobj = request(args.url, args.clientcert, args.clientkey) + responseobj = request(url = args.url, clientcert = args.clientcert, clientkey = args.clientkey, timeout = args.timeout) if not args.quiet: print(f"{str(responseobj.responsecode)} {str(responseobj.meta)}", file=sys.stderr)
-----END OF PAGE-----
-- Response ended
-- Page fetched on Sun Jun 2 15:21:34 2024