diff --git a/__pycache__/gemini.cpython-38.pyc b/__pycache__/gemini.cpython-38.pyc new file mode 100644 index 0000000..3933a0f Binary files /dev/null and b/__pycache__/gemini.cpython-38.pyc differ diff --git a/gemini.py b/gemini.py new file mode 100644 index 0000000..1216ee2 --- /dev/null +++ b/gemini.py @@ -0,0 +1,38 @@ +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) diff --git a/main.py b/main.py index 128d2d8..ac09efb 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,5 @@ import tkinter as tk -import socket -import ssl +import gemini # See https://tildegit.org/solderpunk/gemini-demo-1/src/branch/master/gemini-demo.py @@ -13,9 +12,10 @@ class Application(): self.current_URL = "about:home" def updateContent(self): - text = makeRequest("rdelaage.ovh", "gemini://rdelaage.ovh") - self.content.setContent(text) self.current_URL = self.nav_bar.getURL() + r = gemini.Request(self.current_URL) + text = r.makeRequest() + self.content.setContent(text) class NavBar(): def __init__(self, parent): @@ -43,27 +43,4 @@ class Content(): def setContent(self, new_content): self.line["text"] = new_content -def makeRequest(hostname, url): - try: - s = socket.create_connection((hostname, 1965)) - 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") - 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) - app = Application()