refactor: updated routes and handlers

This commit is contained in:
David Allen 2025-08-29 23:52:43 -06:00
parent 947fbba854
commit 4d96010199
Signed by: towk
GPG key ID: 0430CDBE22619155
3 changed files with 33 additions and 18 deletions

View file

@ -1,6 +1,8 @@
package makeshift package makeshift
import "git.towk2.me/towk/makeshift/pkg/storage" import (
"git.towk2.me/towk/makeshift/pkg/storage"
)
type ProfileMap map[string]*Profile type ProfileMap map[string]*Profile
type Profile struct { type Profile struct {
@ -30,3 +32,13 @@ type Hook struct {
func (h *Hook) Run() error { func (h *Hook) Run() error {
return h.Plugin.Run(h.Data, h.Args) return h.Plugin.Run(h.Data, h.Args)
} }
func PluginToMap(p Plugin) map[string]any {
return map[string]any{
"name": p.Name(),
"version": p.Version(),
"description": p.Description(),
"metadata": p.Metadata(),
}
}

View file

@ -2,6 +2,7 @@ package service
import ( import (
"encoding/json" "encoding/json"
"fmt"
"io" "io"
"net/http" "net/http"
"os" "os"
@ -34,12 +35,13 @@ func (s *Service) ListPlugins() http.HandlerFunc {
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return
} }
fmt.Printf("%v", plugins)
w.Write(body) w.Write(body)
} }
} }
func (s *Service) GetPlugin() http.HandlerFunc { func (s *Service) GetPluginInfo() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
var ( var (
pluginName = chi.URLParam(r, "name") pluginName = chi.URLParam(r, "name")
@ -55,7 +57,7 @@ func (s *Service) GetPlugin() http.HandlerFunc {
return return
} }
body, err = json.Marshal(plugin) body, err = json.Marshal(makeshift.PluginToMap(plugin))
if err != nil { if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return
@ -65,6 +67,12 @@ func (s *Service) GetPlugin() http.HandlerFunc {
} }
} }
func (s *Service) GetPluginRaw() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
}
}
func (s *Service) CreatePlugin() http.HandlerFunc { func (s *Service) CreatePlugin() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
var ( var (

View file

@ -97,7 +97,6 @@ func (s *Service) Serve() error {
} else { } else {
// general // general
// router.Handle("/download/*", http.StripPrefix("/download/", http.FileServer(http.Dir(s.PathForData()))))
router.Get("/download/*", s.Download()) router.Get("/download/*", s.Download())
router.Post("/upload/", s.Upload()) router.Post("/upload/", s.Upload())
router.Post("/upload/plugin", s.UploadPlugin()) router.Post("/upload/plugin", s.UploadPlugin())
@ -106,18 +105,18 @@ func (s *Service) Serve() error {
// profiles // profiles
router.Get("/profiles", s.ListProfiles()) router.Get("/profiles", s.ListProfiles())
// router.Post("/profiles", s.CreateProfiles()) router.Get("/profiles/{id}", s.GetProfile())
router.Get("/profile/{id}", s.GetProfile()) router.Post("/profiles/{id}", s.CreateProfile())
router.Post("/profile/{id}", s.CreateProfile()) router.Get("/profiles/{id}/data", s.GetProfileData())
router.Get("/profile/{id}/data", s.GetProfileData()) router.Post("/profiles/{id}/data", s.SetProfileData())
router.Post("/profile/{id}/data", s.SetProfileData()) router.Delete("/profiles/{id}/data", s.DeleteProfileData())
router.Delete("/profile/{id}/data", s.DeleteProfileData())
// plugins // plugins
router.Get("/plugins", s.ListPlugins()) router.Get("/plugins", s.ListPlugins())
router.Get("/plugin/{name}", s.GetPlugin()) router.Get("/plugins/{name}/info", s.GetPluginInfo())
router.Post("/plugin/{name}", s.CreatePlugin()) router.Get("/plugins/{name}/raw", s.GetPluginRaw())
router.Delete("/plugin/{name}", s.DeletePlugin()) router.Post("/plugins/{name}", s.CreatePlugin())
router.Delete("/plugins/{name}", s.DeletePlugin())
} }
// always available public routes go here // always available public routes go here
@ -192,12 +191,8 @@ func LoadPluginsFromDir(dirpath string) (map[string]makeshift.Plugin, error) {
// walk all files in directory only loading *valid* plugins // walk all files in directory only loading *valid* plugins
err = filepath.Walk(dirpath, func(path string, info fs.FileInfo, err error) error { err = filepath.Walk(dirpath, func(path string, info fs.FileInfo, err error) error {
// skip trying to load generator plugin if directory or error // skip trying to load generator plugin if directory or error
if info.IsDir() || err != nil {
return nil
}
// only try loading if file has .so extension // only try loading if file has .so extension
if hasValidExt(path) { if info.IsDir() || err != nil || hasValidExt(path) {
return nil return nil
} }