From 70e85fdb545a8c653690d5bf12c56ba9bccfd3bb Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Sun, 12 Jan 2025 16:34:49 -0500 Subject: cmd/mi: add glance plugin Signed-off-by: Xe Iaso --- cmd/mi/main.go | 2 + cmd/mi/services/glance/glance.go | 33 +++++++++ cmd/mi/services/glance/glance.templ | 18 +++++ cmd/mi/services/glance/glance_templ.go | 127 +++++++++++++++++++++++++++++++++ 4 files changed, 180 insertions(+) create mode 100644 cmd/mi/services/glance/glance.go create mode 100644 cmd/mi/services/glance/glance.templ create mode 100644 cmd/mi/services/glance/glance_templ.go (limited to 'cmd') diff --git a/cmd/mi/main.go b/cmd/mi/main.go index b9f72a7..fa3527c 100644 --- a/cmd/mi/main.go +++ b/cmd/mi/main.go @@ -15,6 +15,7 @@ import ( "google.golang.org/grpc" "within.website/x/cmd/mi/models" "within.website/x/cmd/mi/services/events" + "within.website/x/cmd/mi/services/glance" "within.website/x/cmd/mi/services/homefrontshim" "within.website/x/cmd/mi/services/importer" "within.website/x/cmd/mi/services/posse" @@ -112,6 +113,7 @@ func main() { mux.Handle(pb.EventsPathPrefix, pb.NewEventsServer(es)) mux.Handle("/front", homefrontshim.New(dao)) mux.Handle("/twitch", te) + mux.Handle("/glance", glance.New(dao)) i := importer.New(dao) i.Mount(http.DefaultServeMux) diff --git a/cmd/mi/services/glance/glance.go b/cmd/mi/services/glance/glance.go new file mode 100644 index 0000000..1396b0b --- /dev/null +++ b/cmd/mi/services/glance/glance.go @@ -0,0 +1,33 @@ +package glance + +import ( + "log/slog" + "net/http" + + "github.com/a-h/templ" + "within.website/x/cmd/mi/models" +) + +//go:generate go run github.com/a-h/templ/cmd/templ@latest generate + +func New(dao *models.DAO) *Glance { + return &Glance{dao: dao} +} + +type Glance struct { + dao *models.DAO +} + +func (g *Glance) ServeHTTP(w http.ResponseWriter, r *http.Request) { + w.Header().Add("Widget-Title", "Who is front?") + w.Header().Add("Widget-Content-Type", "html") + + sw, err := g.dao.WhoIsFront(r.Context()) + if err != nil { + slog.Error("can't query front", "err", err) + templ.Handler(ohNoes(err), templ.WithStatus(http.StatusInternalServerError)).ServeHTTP(w, r) + return + } + + templ.Handler(whoIsFront(sw)).ServeHTTP(w, r) +} diff --git a/cmd/mi/services/glance/glance.templ b/cmd/mi/services/glance/glance.templ new file mode 100644 index 0000000..19928c1 --- /dev/null +++ b/cmd/mi/services/glance/glance.templ @@ -0,0 +1,18 @@ +package glance + +import ( + "fmt" + + "within.website/x/cmd/mi/models" +) + +templ whoIsFront(sw *models.Switch) { +

{sw.Member.Name} is front

+

Change logged ago

+ +} + +templ ohNoes(err error) { +

Error

+

{ err.Error() }

+} \ No newline at end of file diff --git a/cmd/mi/services/glance/glance_templ.go b/cmd/mi/services/glance/glance_templ.go new file mode 100644 index 0000000..cc1e928 --- /dev/null +++ b/cmd/mi/services/glance/glance_templ.go @@ -0,0 +1,127 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.819 +package glance + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import ( + "fmt" + + "within.website/x/cmd/mi/models" +) + +func whoIsFront(sw *models.Switch) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var2 string + templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(sw.Member.Name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `glance.templ`, Line: 10, Col: 48} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, " is front

Change logged ago

\"\"") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +func ohNoes(err error) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var5 := templ.GetChildren(ctx) + if templ_7745c5c3_Var5 == nil { + templ_7745c5c3_Var5 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "

Error

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var6 string + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(err.Error()) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `glance.templ`, Line: 17, Col: 18} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate -- cgit v1.2.3