summaryrefslogtreecommitdiff
path: root/git-gmi/cgi.py
diff options
context:
space:
mode:
authorFrederick Yin <fkfd@macaw.me>2020-06-14 18:03:01 +0800
committerFrederick Yin <fkfd@macaw.me>2020-06-14 18:03:01 +0800
commit59c2e948797d088e795cc2290fa8c3004ddb71c1 (patch)
tree472fdeb60b9431efb9b6f75cdee03efe3e69765a /git-gmi/cgi.py
parentee8f25fd963dec48b31ff4072afd2c95f24d518e (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.py76
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"))