aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-10-30 02:11:09 +0100
committermetamuffin <metamuffin@disroot.org>2024-10-30 02:11:09 +0100
commit585dd5ac36727b8d680a419f8541a36cfba84c65 (patch)
tree8590c09f4715e7283350a7a52228bcee11ee5ba1
parent6e0afc292b908005788e7580a1cae1ffc35268a8 (diff)
downloadabrechenbarkeit-585dd5ac36727b8d680a419f8541a36cfba84c65.tar
abrechenbarkeit-585dd5ac36727b8d680a419f8541a36cfba84c65.tar.bz2
abrechenbarkeit-585dd5ac36727b8d680a419f8541a36cfba84c65.tar.zst
things
-rwxr-xr-xstrichliste.lua31
1 files changed, 28 insertions, 3 deletions
diff --git a/strichliste.lua b/strichliste.lua
index 6ad7d5f..959cc87 100755
--- a/strichliste.lua
+++ b/strichliste.lua
@@ -2,6 +2,7 @@
local path = os.getenv("PATH_INFO")
local method = os.getenv("REQUEST_METHOD")
+local query = os.getenv("QUERY_STRING")
local function escape(s)
return s:gsub("<", "&lt;"):gsub("<", "&lt;")
@@ -53,10 +54,34 @@ local function read_log()
end
end
+local function balances()
+ local users = {}
+ for _, username, amount, _ in read_log() do
+ users[username] = (users[username] or 0) + amount
+ end
+ return users
+end
+
if path == "/" then
- print("Status: 200 OK")
- print("Content-Type: text/plain")
- print("")
+ if query == "?log" then
+ return respond(200, "Log", function()
+ print("<table>")
+ print("<tr><th>Time</th><th>Username</th><th>Amount</th><th>Comment</th></tr>")
+ for time, username, amount, comment in read_log() do
+ print(string.format("<tr><td>%d</td><td>%s</td><td>%.02f€</td><td>%s</td></tr>", time, escape(username),
+ amount / 100, escape(comment)))
+ end
+ print("</table>")
+ end)
+ end
+ return respond(200, "Users", function()
+ print("<ul>")
+ for username, balance in balances() do
+ print(string.format("<li><a href=\"/%s\">%s</a>: %.02f€</li>", escape(username), escape(username),
+ balance / 100))
+ end
+ print("</ul>")
+ end)
elseif path ~= nil then
local username = path:sub(2)
if username:match("^[%w_-]+$") == nil then