added notify helpers

This commit is contained in:
2026-01-26 13:45:17 +11:00
parent ad6b00e722
commit fb701bf205
6 changed files with 83 additions and 33 deletions

View File

@@ -6,13 +6,12 @@ import (
"github.com/pkg/errors"
"git.haelnorr.com/h/golib/hws"
"git.haelnorr.com/h/golib/notify"
"git.haelnorr.com/h/oslstats/internal/view/page"
)
// Handles responses to the / path. Also serves a 404 Page for paths that
// don't have explicit handlers
func NotifyTester(server *hws.Server) http.Handler {
func NotifyTester(s *hws.Server) http.Handler {
return http.HandlerFunc(
func(w http.ResponseWriter, r *http.Request) {
testErr := errors.New("This is a stack trace. No really i swear. Just pretend ok? Thanks")
@@ -26,31 +25,24 @@ func NotifyTester(server *hws.Server) http.Handler {
page.Test().Render(r.Context(), w)
} else {
r.ParseForm()
target := r.Form.Get("target")
// target := r.Form.Get("target")
title := r.Form.Get("title")
level := map[string]notify.Level{
"info": notify.LevelInfo,
"success": notify.LevelSuccess,
"warn": notify.LevelWarn,
"error": notify.LevelError,
}[r.Form.Get("type")]
level := r.Form.Get("type")
message := r.Form.Get("message")
nt := notify.Notification{
Target: notify.Target(target),
Title: title,
Message: message,
Level: level,
}
// For error level, serialize error details with code
if level == notify.LevelError {
nt.Details = SerializeErrorDetails(500, testErr)
var err error
switch level {
case "success":
err = notifySuccess(s, r, title, message, nil)
case "info":
err = notifyInfo(s, r, title, message, nil)
case "warn":
err = notifyWarn(s, r, title, message, nil)
case "error":
err = notifyInternalServiceError(s, r, message, testErr)
}
if target == "all" {
server.NotifyAll(nt)
} else {
server.NotifySub(nt)
if err != nil {
throwInternalServiceError(s, w, r, "Error notifying client", err)
}
}
},