gemini.git

going-flying.com gemini git repository

summary

tree

log

refs

435888660f51796cd614ef25548a75077244f1ee - Matthew Ernisse - 1612581758

instead of throwing an error if we get a query with no path, redirect to the main page of the script

view tree

view raw

diff --git a/cgi-bin/converter b/cgi-bin/converter
index 66cceb5..97e29d7 100755
--- a/cgi-bin/converter
+++ b/cgi-bin/converter
@@ -66,6 +66,7 @@ class GeminiCGI(object):
 		codes = {
 			10: ('10', ''),
 			20: ('20', ''),
+			30: ('30', ''),
 			50: ('50', 'PERMANENT FAILURE'),
 			51: ('51', 'NOT FOUND'),
 			59: ('59', 'BAD REQUEST'),
@@ -84,25 +85,28 @@ class GeminiCGI(object):
 			print(header + '\r\n')
 
 		@classmethod
-		def Input(cls, meta):
-			return cls(10, meta)
-
-		@classmethod
-		def Ok(cls, meta):
-			return cls(20, meta)
+		def BadRequest(cls):
+			return cls(59)
 
 		@classmethod
 		def Fail(cls):
 			return cls(50)
 
 		@classmethod
+		def Input(cls, meta):
+			return cls(10, meta)
+
+		@classmethod
 		def NotFound(cls):
 			return cls(51)
 
 		@classmethod
-		def BadRequest(cls):
-			return cls(59)
+		def Ok(cls, meta):
+			return cls(20, meta)
 
+		@classmethod
+		def Redirect(cls, meta):
+			return cls(30, meta)
 
 	def __init__(self):
 		self.path_info = os.environ.get('PATH_INFO')
@@ -113,25 +117,21 @@ class GeminiCGI(object):
 			self.query_parsed = parse_qs(self.query_string)
 
 
-def display_main_menu(cgi):
-	cgi.Response.Ok('text/gemini')
-	print(MAIN_SCREEN)
-
-
 def ender(i):
 	s = {
 		42: 'Life, The Universe, and Everything',
 		69: 'Nice',
+		242: 'I have 17 remixes of Headhunter here somewhere',
 		420: 'Nice',
 		1701: 'The Final Frontier',
-		2257: 'The dawn of the third age',
+		2257: 'The dawn of the third age of mankind',
 		31337: 'Greetz to Zero Cool and Joey'
 	}
-
 	return f' ({s[i]})\n\n' if i in s.keys() else '\n\n'
 
 
 def pretty_binary(i):
+	''' Pad a binary number out into space-separated octets.'''
 	j = bin(i)[2:]
 	out = []
 
@@ -144,7 +144,7 @@ def pretty_binary(i):
 
 
 def result_table(cgi, input, b, d, h):
-	''' Pretty print a table'''
+	''' Print out the result page. '''
 	global BACK_LINK
 	cgi.Response.Ok('text/gemini')
 
@@ -160,27 +160,23 @@ def result_table(cgi, input, b, d, h):
 if __name__ == '__main__':
 	cgi = GeminiCGI()
 
-
 	if not cgi.query_string:
 		if not cgi.path_info:
-			display_main_menu(cgi)
-			sys.exit()
+			cgi.Response.Ok('text/gemini')
+			print(MAIN_SCREEN)
 
 		elif cgi.path_info == 'bin':
 			cgi.Response.Input('Binary Number?')
-			sys.exit()
 
 		elif cgi.path_info == 'dec':
 			cgi.Response.Input('Number?')
-			sys.exit()
 
 		elif cgi.path_info == 'hex':
 			cgi.Response.Input('Hex Number?')
-			sys.exit()
 
 	else:
 		if not cgi.path_info:
-			cgi.Response.BadRequest()
+			cgi.Response.Redirect(BACK_LINK)
 	
 		elif cgi.path_info == 'bin':
 			s = cgi.query_string