Refactor server implementation

This commit is contained in:
David Allen 2024-06-26 10:15:54 -06:00
parent 398031790e
commit 56be39ff99
No known key found for this signature in database
GPG key ID: 717C593FF60A2ACC

View file

@ -4,6 +4,7 @@
package server package server
import ( import (
"encoding/json"
"fmt" "fmt"
"net/http" "net/http"
"time" "time"
@ -85,42 +86,29 @@ func (s *Server) Serve(config *configurator.Config) error {
} }
r.HandleFunc("/generate", func(w http.ResponseWriter, r *http.Request) { r.HandleFunc("/generate", func(w http.ResponseWriter, r *http.Request) {
s.GeneratorParams.Target = r.URL.Query().Get("target") s.GeneratorParams.Target = r.URL.Query().Get("target")
output, err := generator.Generate(config, s.GeneratorParams) outputs, err := generator.Generate(config, s.GeneratorParams)
if err != nil { if err != nil {
WriteError(w, "failed to generate config: %v\n", err) WriteError(w, "failed to generate config: %v", err)
return return
} }
_, err = w.Write(output) // convert byte arrays to string
tmp := map[string]string{}
for path, output := range outputs {
tmp[path] = string(output)
}
// marshal output to JSON then send
b, err := json.Marshal(tmp)
if err != nil {
WriteError(w, "failed to marshal output: %v", err)
return
}
_, err = w.Write(b)
if err != nil { if err != nil {
WriteError(w, "failed to write response: %v", err) WriteError(w, "failed to write response: %v", err)
return return
} }
// NOTE: we probably don't want to hardcode the types, but should do for now
// if _type == "dhcp" {
// // fetch eths from SMD
// eths, err := client.FetchEthernetInterfaces()
// if err != nil {
// logrus.Errorf("failed to fetch DHCP metadata: %v\n", err)
// w.Write([]byte("An error has occurred"))
// return
// }
// if len(eths) <= 0 {
// logrus.Warnf("no ethernet interfaces found")
// w.Write([]byte("no ethernet interfaces found"))
// return
// }
// // generate a new config from that data
// // b, err := g.GenerateDHCP(config, eths)
// if err != nil {
// logrus.Errorf("failed to generate DHCP: %v", err)
// w.Write([]byte("An error has occurred."))
// return
// }
// w.Write(b)
// }
}) })
r.HandleFunc("/templates", func(w http.ResponseWriter, r *http.Request) { r.HandleFunc("/templates", func(w http.ResponseWriter, r *http.Request) {
// TODO: handle GET request // TODO: handle GET request