diff options
author | Frederick Yin <fkfd@macaw.me> | 2020-06-14 18:03:01 +0800 |
---|---|---|
committer | Frederick Yin <fkfd@macaw.me> | 2020-06-14 18:03:01 +0800 |
commit | 59c2e948797d088e795cc2290fa8c3004ddb71c1 (patch) | |
tree | 472fdeb60b9431efb9b6f75cdee03efe3e69765a /git-gmi/cgi.py | |
parent | ee8f25fd963dec48b31ff4072afd2c95f24d518e (diff) |
Massive improvements
- Python CGI server script renamed to gateway.py to avoid confusion
- Repo not found error handling
- Page header & navs
- Fix faulty 20 response header
- View (non-)raw blob
Diffstat (limited to 'git-gmi/cgi.py')
-rw-r--r-- | git-gmi/cgi.py | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/git-gmi/cgi.py b/git-gmi/cgi.py deleted file mode 100644 index 76f1522..0000000 --- a/git-gmi/cgi.py +++ /dev/null @@ -1,76 +0,0 @@ -from git import * -from const import * -from os import environ, listdir - -# be careful when using print(); stdout is passed to the client. -# this cgi uses \n as newline. - - -def generate_navigation(repo_name: str): - pass # TODO - - -def handle_cgi_request(path: str): - # intended to work with Jetforce. - # url: gemini://git.gemini.site/cgi-bin/cgi.py/repo/src/static/css/[index.css] - # path: /repo/src/static/css/[index.css] - # path_trace = ['repo', 'src', 'static', 'css', 'index.css'] - path_trace = path[1:].split("/") - if path_trace == [""]: # empty path - print(f"{STATUS_SUCCESS} {META_GEMINI}") # welcome page - print("Welcome to the git.gmi demo") - print("Available repositories:") - print("\n".join([f"=> {dir}/" for dir in listdir(GIT_CATALOG)])) - return - - try: - repo = GitGmiRepo(path_trace[0], f"{GIT_CATALOG}/{path_trace[0]}") - except FileNotFoundError: - print(STATUS_NOT_FOUND) - return - - if len(path_trace) > 1: - view = path_trace[1] # e.g. summary, tree, log - else: - print("31 summary") - return - - if view == "summary": - try: - print(repo.view_summary()) - return - except: - print(STATUS_TEMPORARY_FAILURE) - return - - elif view == "tree": - if len(path_trace) == 2: - print("31 master/") - return - - if len(path_trace) > 2: - branch = path_trace[2] - - if len(path_trace) == 3: - location = [] - else: - location = path_trace[3:] - - try: # is dir - print(repo.view_tree(branch, location)) - except FileNotFoundError: # is file - try: - print(repo.view_blob(branch, location)) - except FileNotFoundError: - print("50 Error locating content") - - elif view == "log": - try: - print(repo.view_log()) - return - except: - print(STATUS_TEMPORARY_FAILURE) - return - - -handle_cgi_request(environ.get("PATH_INFO")) |