Broken project to implement a cross-protocol browser in textual
Diffstat (limited to 'protocol/gemini.py')
-rw-r--r--protocol/gemini.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/protocol/gemini.py b/protocol/gemini.py
new file mode 100644
index 0000000..c55e523
--- /dev/null
+++ b/protocol/gemini.py
@@ -0,0 +1,29 @@
+import socket
+import ssl
+
+class GeminiProtocol():
+ def get(url):
+ hostname = _gethostname(url)
+ try:
+ s = socket.create_connection((hostname, 1965),timeout=2)
+ context = ssl.SSLContext()
+ context.check_hostname = False
+ context.verify_mode = ssl.CERT_NONE
+ s = context.wrap_socket(s, server_hostname = hostname)
+ s.sendall((url + '\r\n').encode("UTF-8"))
+ fp = s.makefile("rb")
+ except:
+ return ("error",["error"])
+ header = fp.readline()
+ header = header.decode("UTF-8").strip()
+ if header[0:1] == "2":
+ return (header[3:], fp)
+ return ("error", [header])
+
+def _gethostname(url):
+ return url.split('/')[2]
+
+if __name__ == "__main__":
+ (mime, fp) = GeminiProtocol.get("gemini://gemini.zachdecook.com/")
+ print(mime)
+ print(fp)