From 11f7749c1d5b8aa96588e1bd243cfb98a9be46f3 Mon Sep 17 00:00:00 2001 From: Tom Wiesing Date: Wed, 4 Jan 2023 12:53:02 +0100 Subject: [PATCH] Rename info -> admin --- .../control/{info/info.go => admin/admin.go} | 26 +++++++-------- .../control/{info => admin}/components.go | 10 +++--- .../{info => admin}/html/components.html | 0 .../control/{info => admin}/html/index.html | 0 .../{info => admin}/html/ingredients.html | 0 .../{info => admin}/html/instance.html | 0 .../control/{info => admin}/index.go | 32 +++++++++---------- .../control/{info => admin}/instance.go | 6 ++-- .../control/{info => admin}/socket.go | 26 +++++++-------- internal/dis/distillery.go | 10 +++--- 10 files changed, 55 insertions(+), 55 deletions(-) rename internal/dis/component/control/{info/info.go => admin/admin.go} (78%) rename internal/dis/component/control/{info => admin}/components.go (80%) rename internal/dis/component/control/{info => admin}/html/components.html (100%) rename internal/dis/component/control/{info => admin}/html/index.html (100%) rename internal/dis/component/control/{info => admin}/html/ingredients.html (100%) rename internal/dis/component/control/{info => admin}/html/instance.html (100%) rename internal/dis/component/control/{info => admin}/index.go (76%) rename internal/dis/component/control/{info => admin}/instance.go (85%) rename internal/dis/component/control/{info => admin}/socket.go (64%) diff --git a/internal/dis/component/control/info/info.go b/internal/dis/component/control/admin/admin.go similarity index 78% rename from internal/dis/component/control/info/info.go rename to internal/dis/component/control/admin/admin.go index e7b51a6..b6bd97b 100644 --- a/internal/dis/component/control/info/info.go +++ b/internal/dis/component/control/admin/admin.go @@ -1,4 +1,4 @@ -package info +package admin import ( "context" @@ -15,7 +15,7 @@ import ( "github.com/FAU-CDI/wisski-distillery/pkg/lazy" ) -type Info struct { +type Admin struct { component.Base Dependencies struct { Fetchers []component.DistilleryFetcher @@ -31,13 +31,13 @@ type Info struct { } var ( - _ component.DistilleryFetcher = (*Info)(nil) - _ component.Routeable = (*Info)(nil) + _ component.DistilleryFetcher = (*Admin)(nil) + _ component.Routeable = (*Admin)(nil) ) -func (*Info) Routes() []string { return []string{"/admin/"} } +func (*Admin) Routes() []string { return []string{"/admin/"} } -func (info *Info) HandleRoute(ctx context.Context, route string) (handler http.Handler, err error) { +func (admin *Admin) HandleRoute(ctx context.Context, route string) (handler http.Handler, err error) { router := httprouter.New() @@ -45,9 +45,9 @@ func (info *Info) HandleRoute(ctx context.Context, route string) (handler http.H socket := &httpx.WebSocket{ Context: ctx, Fallback: router, - Handler: info.serveSocket, + Handler: admin.serveSocket, } - handler = info.Dependencies.Auth.Protect(socket, auth.Admin) + handler = admin.Dependencies.Auth.Protect(socket, auth.Admin) } // handle everything @@ -57,25 +57,25 @@ func (info *Info) HandleRoute(ctx context.Context, route string) (handler http.H // add a handler for the index page router.Handler(http.MethodGet, route+"index", httpx.HTMLHandler[indexContext]{ - Handler: info.index, + Handler: admin.index, Template: indexTemplate, }) // add a handler for the component page router.Handler(http.MethodGet, route+"components", httpx.HTMLHandler[componentContext]{ - Handler: info.components, + Handler: admin.components, Template: componentsTemplate, }) // add a handler for the component page router.Handler(http.MethodGet, route+"ingredients/:slug", httpx.HTMLHandler[ingredientsContext]{ - Handler: info.ingredients, + Handler: admin.ingredients, Template: ingredientsTemplate, }) // add a handler for the instance page router.Handler(http.MethodGet, route+"instance/:slug", httpx.HTMLHandler[instanceContext]{ - Handler: info.instance, + Handler: admin.instance, Template: instanceTemplate, }) @@ -86,7 +86,7 @@ func (info *Info) HandleRoute(ctx context.Context, route string) (handler http.H } // get the instance - instance, err := info.Dependencies.Instances.WissKI(r.Context(), r.PostFormValue("slug")) + instance, err := admin.Dependencies.Instances.WissKI(r.Context(), r.PostFormValue("slug")) if err != nil { return "", 0, httpx.ErrNotFound } diff --git a/internal/dis/component/control/info/components.go b/internal/dis/component/control/admin/components.go similarity index 80% rename from internal/dis/component/control/info/components.go rename to internal/dis/component/control/admin/components.go index 14c35cc..66d734f 100644 --- a/internal/dis/component/control/info/components.go +++ b/internal/dis/component/control/admin/components.go @@ -1,4 +1,4 @@ -package info +package admin import ( "net/http" @@ -27,8 +27,8 @@ type componentContext struct { Analytics lazy.PoolAnalytics } -func (info *Info) components(r *http.Request) (cp componentContext, err error) { - cp.Analytics = *info.Analytics +func (admin *Admin) components(r *http.Request) (cp componentContext, err error) { + cp.Analytics = *admin.Analytics cp.Time = time.Now().UTC() return @@ -48,11 +48,11 @@ type ingredientsContext struct { Analytics *lazy.PoolAnalytics } -func (info *Info) ingredients(r *http.Request) (cp ingredientsContext, err error) { +func (admin *Admin) ingredients(r *http.Request) (cp ingredientsContext, err error) { cp.Time = time.Now().UTC() // find the instance itself! - instance, err := info.Dependencies.Instances.WissKI(r.Context(), mux.Vars(r)["slug"]) + instance, err := admin.Dependencies.Instances.WissKI(r.Context(), mux.Vars(r)["slug"]) if err == instances.ErrWissKINotFound { return cp, httpx.ErrNotFound } diff --git a/internal/dis/component/control/info/html/components.html b/internal/dis/component/control/admin/html/components.html similarity index 100% rename from internal/dis/component/control/info/html/components.html rename to internal/dis/component/control/admin/html/components.html diff --git a/internal/dis/component/control/info/html/index.html b/internal/dis/component/control/admin/html/index.html similarity index 100% rename from internal/dis/component/control/info/html/index.html rename to internal/dis/component/control/admin/html/index.html diff --git a/internal/dis/component/control/info/html/ingredients.html b/internal/dis/component/control/admin/html/ingredients.html similarity index 100% rename from internal/dis/component/control/info/html/ingredients.html rename to internal/dis/component/control/admin/html/ingredients.html diff --git a/internal/dis/component/control/info/html/instance.html b/internal/dis/component/control/admin/html/instance.html similarity index 100% rename from internal/dis/component/control/info/html/instance.html rename to internal/dis/component/control/admin/html/instance.html diff --git a/internal/dis/component/control/info/index.go b/internal/dis/component/control/admin/index.go similarity index 76% rename from internal/dis/component/control/info/index.go rename to internal/dis/component/control/admin/index.go index 3e0b116..fc455e2 100644 --- a/internal/dis/component/control/info/index.go +++ b/internal/dis/component/control/admin/index.go @@ -1,4 +1,4 @@ -package info +package admin import ( "context" @@ -20,24 +20,14 @@ var indexTemplate = static.AssetsControlIndex.MustParseShared( indexTemplateStr, ) -type indexContext struct { - status.Distillery - Instances []status.WissKI -} - -func (info *Info) index(r *http.Request) (idx indexContext, err error) { - idx.Distillery, idx.Instances, err = info.Status(r.Context(), true) - return -} - // Status produces a new observation of the distillery, and a new information of all instances // The information on all instances is passed the given quick flag. -func (info *Info) Status(ctx context.Context, QuickInformation bool) (target status.Distillery, information []status.WissKI, err error) { +func (admin *Admin) Status(ctx context.Context, QuickInformation bool) (target status.Distillery, information []status.WissKI, err error) { var group errgroup.Group group.Go(func() error { // list all the instances - all, err := info.Dependencies.Instances.All(ctx) + all, err := admin.Dependencies.Instances.All(ctx) if err != nil { return err } @@ -63,7 +53,7 @@ func (info *Info) Status(ctx context.Context, QuickInformation bool) (target sta flags := component.FetcherFlags{ Context: ctx, } - for _, o := range info.Dependencies.Fetchers { + for _, o := range admin.Dependencies.Fetchers { o := o group.Go(func() error { return o.Fetch(flags, &target) @@ -88,8 +78,18 @@ func (info *Info) Status(ctx context.Context, QuickInformation bool) (target sta return } -func (nfo *Info) Fetch(flags component.FetcherFlags, target *status.Distillery) error { +type indexContext struct { + status.Distillery + Instances []status.WissKI +} + +func (admin *Admin) index(r *http.Request) (idx indexContext, err error) { + idx.Distillery, idx.Instances, err = admin.Status(r.Context(), true) + return +} + +func (admin *Admin) Fetch(flags component.FetcherFlags, target *status.Distillery) error { target.Time = time.Now().UTC() - target.Config = nfo.Config + target.Config = admin.Config return nil } diff --git a/internal/dis/component/control/info/instance.go b/internal/dis/component/control/admin/instance.go similarity index 85% rename from internal/dis/component/control/info/instance.go rename to internal/dis/component/control/admin/instance.go index 0186168..4b604c6 100644 --- a/internal/dis/component/control/info/instance.go +++ b/internal/dis/component/control/admin/instance.go @@ -1,4 +1,4 @@ -package info +package admin import ( _ "embed" @@ -27,9 +27,9 @@ type instanceContext struct { Info status.WissKI } -func (info *Info) instance(r *http.Request) (is instanceContext, err error) { +func (admin *Admin) instance(r *http.Request) (is instanceContext, err error) { // find the instance itself! - instance, err := info.Dependencies.Instances.WissKI(r.Context(), mux.Vars(r)["slug"]) + instance, err := admin.Dependencies.Instances.WissKI(r.Context(), mux.Vars(r)["slug"]) if err == instances.ErrWissKINotFound { return is, httpx.ErrNotFound } diff --git a/internal/dis/component/control/info/socket.go b/internal/dis/component/control/admin/socket.go similarity index 64% rename from internal/dis/component/control/info/socket.go rename to internal/dis/component/control/admin/socket.go index 453b761..1918282 100644 --- a/internal/dis/component/control/info/socket.go +++ b/internal/dis/component/control/admin/socket.go @@ -1,4 +1,4 @@ -package info +package admin import ( "context" @@ -16,13 +16,13 @@ import ( type InstanceAction struct { NumParams int - HandleInteractive func(ctx context.Context, info *Info, instance *wisski.WissKI, out io.Writer, params ...string) error - HandleResult func(ctx context.Context, info *Info, instance *wisski.WissKI, params ...string) (value any, err error) + HandleInteractive func(ctx context.Context, info *Admin, instance *wisski.WissKI, out io.Writer, params ...string) error + HandleResult func(ctx context.Context, info *Admin, instance *wisski.WissKI, params ...string) (value any, err error) } var socketInstanceActions = map[string]InstanceAction{ "snapshot": { - HandleInteractive: func(ctx context.Context, info *Info, instance *wisski.WissKI, out io.Writer, params ...string) error { + HandleInteractive: func(ctx context.Context, info *Admin, instance *wisski.WissKI, out io.Writer, params ...string) error { return info.Dependencies.Exporter.MakeExport( ctx, out, @@ -36,23 +36,23 @@ var socketInstanceActions = map[string]InstanceAction{ }, }, "rebuild": { - HandleInteractive: func(ctx context.Context, _ *Info, instance *wisski.WissKI, out io.Writer, params ...string) error { + HandleInteractive: func(ctx context.Context, _ *Admin, instance *wisski.WissKI, out io.Writer, params ...string) error { return instance.Barrel().Build(ctx, out, true) }, }, "update": { - HandleInteractive: func(ctx context.Context, _ *Info, instance *wisski.WissKI, out io.Writer, params ...string) error { + HandleInteractive: func(ctx context.Context, _ *Admin, instance *wisski.WissKI, out io.Writer, params ...string) error { return instance.Drush().Update(ctx, out) }, }, "cron": { - HandleInteractive: func(ctx context.Context, _ *Info, instance *wisski.WissKI, str io.Writer, params ...string) error { + HandleInteractive: func(ctx context.Context, _ *Admin, instance *wisski.WissKI, str io.Writer, params ...string) error { return instance.Drush().Cron(ctx, str) }, }, } -func (info *Info) serveSocket(conn httpx.WebSocketConnection) { +func (admin *Admin) serveSocket(conn httpx.WebSocketConnection) { // read the next message to act on message, ok := <-conn.Read() if !ok { @@ -61,14 +61,14 @@ func (info *Info) serveSocket(conn httpx.WebSocketConnection) { // perform an action if it exists! if action, ok := socketInstanceActions[string(message.Bytes)]; ok { - info.handleInstanceAction(conn, action) + admin.handleInstanceAction(conn, action) return } } var instanceParamsTimeout = time.Second -func (info *Info) handleInstanceAction(conn httpx.WebSocketConnection, action InstanceAction) { +func (admin *Admin) handleInstanceAction(conn httpx.WebSocketConnection, action InstanceAction) { // read the slug slug, ok := <-conn.Read() @@ -78,7 +78,7 @@ func (info *Info) handleInstanceAction(conn httpx.WebSocketConnection, action In } // resolve the instance - instance, err := info.Dependencies.Instances.WissKI(conn.Context(), string(slug.Bytes)) + instance, err := admin.Dependencies.Instances.WissKI(conn.Context(), string(slug.Bytes)) if err != nil { <-conn.WriteText("Instance not found") return @@ -111,7 +111,7 @@ func (info *Info) handleInstanceAction(conn httpx.WebSocketConnection, action In // handle the interactive action if action.HandleInteractive != nil { - err := action.HandleInteractive(conn.Context(), info, instance, writer, params...) + err := action.HandleInteractive(conn.Context(), admin, instance, writer, params...) if err != nil { fmt.Fprintln(writer, err) return @@ -121,7 +121,7 @@ func (info *Info) handleInstanceAction(conn httpx.WebSocketConnection, action In // handle the result computation if action.HandleResult != nil { - result, err := action.HandleResult(conn.Context(), info, instance, params...) + result, err := action.HandleResult(conn.Context(), admin, instance, params...) if err != nil { fmt.Fprintln(writer, "false") return diff --git a/internal/dis/distillery.go b/internal/dis/distillery.go index 9db97ab..a90567d 100644 --- a/internal/dis/distillery.go +++ b/internal/dis/distillery.go @@ -10,9 +10,9 @@ import ( "github.com/FAU-CDI/wisski-distillery/internal/dis/component/auth" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/auth/policy" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/control" + "github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/admin" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/cron" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/home" - "github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/info" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/static" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/exporter" "github.com/FAU-CDI/wisski-distillery/internal/dis/component/exporter/logger" @@ -100,8 +100,8 @@ func (dis *Distillery) Updatable() []component.Updatable { func (dis *Distillery) Provisionable() []component.Provisionable { return exportAll[component.Provisionable](dis) } -func (dis *Distillery) Info() *info.Info { - return export[*info.Info](dis) +func (dis *Distillery) Info() *admin.Admin { + return export[*admin.Admin](dis) } // @@ -153,8 +153,8 @@ func (dis *Distillery) allComponents() []initFunc { manual(func(resolver *resolver.Resolver) { resolver.RefreshInterval = time.Minute }), - manual(func(info *info.Info) { - info.Analytics = &dis.pool.Analytics + manual(func(admin *admin.Admin) { + admin.Analytics = &dis.pool.Analytics }), // Cron