package main import ( "net/http" "os" "gopkg.in/yaml.v3" ) func main() { if err := run(); err != nil { panic(err) } } type ( Data struct { Routes map[string]Route } Route struct { Body string Redirect string } ) func run() error { f := os.Args[1] b, err := os.ReadFile(f) if err != nil { return err } type Route struct { } var data Data if err := yaml.Unmarshal(b, &data); err != nil { return err } return http.ListenAndServe(":3001", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { k := r.URL.Path v, ok := data.Routes[k] if !ok { http.NotFound(w, r) return } if u := v.Redirect; u != "" { http.Redirect(w, r, u, http.StatusSeeOther) } else { w.Header().Set("Content-Type", "text/html") w.Write([]byte(v.Body)) } })) }