package proxmoxaas_common_lib import ( "bytes" "encoding/json" "html/template" "log" "net/http" "time" ) func HTTPExecuteHTMLTemplate(w http.ResponseWriter, t *template.Template, name string, d any) { w.Header().Set("Content-Type", "text/html") body := bytes.Buffer{} err := t.ExecuteTemplate(&body, name, d) if err != nil { w.WriteHeader(http.StatusInternalServerError) return } else { w.Write(body.Bytes()) return } } func HTTPExecuteHTMLFragmentTemplate(w http.ResponseWriter, t *template.Template, name string, d any) { w.Header().Set("Content-Type", "text/plain") body := bytes.Buffer{} err := t.ExecuteTemplate(&body, name, d) if err != nil { w.WriteHeader(http.StatusInternalServerError) return } else { w.Write(body.Bytes()) return } } func HTTPWriteJson(w http.ResponseWriter, code int, obj any) { w.Header().Set("Content-Type", "application/json") json, err := json.Marshal(obj) if err != nil { w.WriteHeader(http.StatusInternalServerError) return } else { w.WriteHeader(code) w.Write(json) return } } func LoggingMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { start := time.Now() next.ServeHTTP(w, r) log.Printf("%s %s %s", r.Method, r.URL.Path, time.Since(start)) }) }