💾 Archived View for gemini.smallweb.space › HOWTO › examples › tinylog-example.txt captured on 2023-09-08 at 16:05:17.

View Raw

More Information

-=-=-=-=-=-=-

#!/usr/bin/env python3

import os,sys, fileinput, datetime, urllib.parse
sys.path.append('../lib/')
from helpers import *

qString = get_query_string()
pathInfo = get_path_info()
clientCert = get_client_cert(cert_reqd = True, restricted_auth = True) 
#ident=os.getenv("REMOTE_IDENT")
filePath="/home/gemini/gemini/gemini.smallweb.space/tinylog/tinylog.gmi"

if(qString == None):
    # Display the main page

    # Read and display gem file
    contents = read_file('tinylog-main.gmi')
    show_header_ok()
    print(contents)
    
if isinstance(qString, dict):
   
    if ('edit' in qString):
        print("10 Enter your log. \r\n")
    elif ('status' in qString):
        show_header_ok()
        print(qString['status'][0])
        print("=> tinylog Return")
    elif qString == {}:
        # The dict is empty which means there's probably a tinylog status in
        # the query string
        
        # get unparsed queryString
        userInput = get_query_string(unparsed = True)
        
        # insert new log into file
        mark = "author:"
        inserted = 0
        
        # date
        now = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M UTC")
        data = urllib.parse.unquote(userInput)

        # write to file
        # TODO: catch errors and output
        for line in fileinput.FileInput(filePath, inplace=True):
            if inserted == 0 and mark in line:
                line += "\n## " + now + "\n" + data + "\n" 
                inserted = 1
            print(line, end="")
        
        # redirect back to this page with status update
        temp_redirect('tinylog?status=Tinylog Posted')