refactor: updated routes and handlers
This commit is contained in:
parent
947fbba854
commit
4d96010199
3 changed files with 33 additions and 18 deletions
|
|
@ -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(),
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 (
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue