This repository has been archived on 2021-12-22. You can view files and clone it, but cannot push or open issues or pull requests.
tkGemini/gemini.py

39 lines
1.2 KiB
Python

import socket
import ssl
import urllib.parse
# See https://tildegit.org/solderpunk/gemini-demo-1/src/branch/master/gemini-demo.py
class Request():
def __init__(self, url):
self.url = url
parsed_url = urllib.parse.urlparse(self.url)
if ":" in parsed_url.netloc:
self.hostname, self.port = parsed_url.netloc.split(":")
else:
self.hostname = parsed_url.netloc
self.port = 1965
def makeRequest(self):
try:
s = socket.create_connection((self.hostname, self.port))
context = ssl.SSLContext()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
s = context.wrap_socket(s, server_hostname = self.hostname)
s.sendall((self.url + '\r\n').encode("UTF-8"))
fp = s.makefile("rb")
header = fp.readline().decode("UTF-8").strip()
status, mime = header.split()
print("STATUS : " + status)
print("MIME : " + mime)
body = fp.read().decode("UTF-8")
return body
except Exception as err:
print(err)
exit(1)