From 9a9f1172b18b24fae9cabc72ad98f8965b06304e Mon Sep 17 00:00:00 2001 From: Romain de Laage Date: Thu, 3 Dec 2020 11:40:09 +0100 Subject: [PATCH] Make requests in an external module --- __pycache__/gemini.cpython-38.pyc | Bin 0 -> 1304 bytes gemini.py | 38 ++++++++++++++++++++++++++++++ main.py | 31 ++++-------------------- 3 files changed, 42 insertions(+), 27 deletions(-) create mode 100644 __pycache__/gemini.cpython-38.pyc create mode 100644 gemini.py diff --git a/__pycache__/gemini.cpython-38.pyc b/__pycache__/gemini.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3933a0ff15f0d8f3c91c46ace688850b81812c0c GIT binary patch literal 1304 zcmYjR&2Aev5GJ|5`nBvN&ZQ`f-c+F0r3H$h2ogAUP_$8j$VO5k0I^=Dnww0GsBtL;Wxv*=yaL{)=z)^Ek3%0{EN!& zazJ?mRD2Cg5=m3SH#_CD)){x663L|Vo=E2%|)K2VT#(TbWxTObL1&KZ8D50Z}oA^p%g3!PdYSejf~ZyxDF@etIF zz4k7MMN{23Pq^4YX8g z6unl1CwaV>smv6Er)rjD$w``kHh5ht$MYK-3IS##M2L5810&R@UD~9FETqfcElkH- zx0s^K?P|b|Ew1shAT0kdqyo$)aQBHbW`GwpfYF+4a1*|9CqcSX=v2Dweb(%}>;{5EJ?>W<#%f{&Z@%hE*=)uvl@$AQEr$d@`+fM|A%4C$L^`KZ^Wih&hvuLWuNvdoJ705Knl=Y>; zGZ;9dlevZ&B`}pb$&7W;$u>@}V>QPrt*fpR({E_(xupdU;09QuW#hT^ufSVrxTT5A zqTucDn@!AJN@f9#a89ksOj9^H6^bp4IfVNp1sLOoT z1MBk6b|iP=hkXwx86S!ewkZ&iMT&A;h&PKU-JIwSd_jMS3}4F*!-_Qi3h@2~zOIml tjoQ-p^d6q}fbsU`-5%F3PkU&`sGUr8;`)N&51T3;V*3jp804g(`yYPRLs0+# literal 0 HcmV?d00001 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()