going-flying.com gemini git repository
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
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