-- 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:

git.thebackupbox.net

gemcall

git://git.thebackupbox.net/gemcall

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

index 6314afffe74697e5d1440b3f2a46e1afaf432001..

index ..d554902c91de7a1bcf41626abf0a714cbf721454 100755

--- 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