package render import ( "bytes" "encoding/json" "html/template" "net/http" "github.com/vladimirok5959/golang-utils/utils/http/helpers" "github.com/vladimirok5959/golang-utils/utils/http/logger" ) // func HTML(w http.ResponseWriter, r *http.Request, f template.FuncMap, d interface{}, s string, httpStatusCode int) bool // func JSON(w http.ResponseWriter, r *http.Request, o interface{}) bool func HTML(w http.ResponseWriter, r *http.Request, f template.FuncMap, d interface{}, s string, httpStatusCode int) bool { tmpl := template.New("tmpl") if f != nil { tmpl = tmpl.Funcs(f) } var err error tmpl, err = tmpl.Parse(s) if err != nil { helpers.RespondAsBadRequest(w, r, err) return false } type Response struct { Data interface{} } var html bytes.Buffer if err := tmpl.Execute(&html, Response{Data: d}); err != nil { helpers.RespondAsBadRequest(w, r, err) return false } w.Header().Set("Content-Type", "text/html") w.WriteHeader(httpStatusCode) if _, err := w.Write([]byte(helpers.MinifyHtmlCode(html.String()))); err != nil { logger.LogInternalError(err) } return true } func JSON(w http.ResponseWriter, r *http.Request, o interface{}) bool { j, err := json.Marshal(o) if err != nil { helpers.RespondAsBadRequest(w, r, err) return false } w.Header().Set("Content-Type", "application/json") if _, err := w.Write(j); err != nil { logger.LogInternalError(err) } return true }