package tpl import ( "encoding/json" "net/http" ) type Response struct { Success bool `json:"success"` Message string `json:"msg"` Data any `json:"data"` } type ResponseDtree struct { Status ResponseDtreeStatus `json:"status"` Data any `json:"data"` } type ResponseDtreeStatus struct { Code int `json:"code"` Message string `json:"message"` } type ResponseList struct { Code int `json:"code"` Message string `json:"msg"` Count int64 `json:"count"` Data any `json:"data"` } func JSON(w http.ResponseWriter, data any) { rndr.JSON(w, data) } func JSONF(w http.ResponseWriter, success bool, message string) { rndr.JSONF(w, success, message) } func JSONOK(w http.ResponseWriter, message string) { rndr.JSONOK(w, message) } func JSONERR(w http.ResponseWriter, message string) { rndr.JSONERR(w, message) } func (r *render) JSONF(w http.ResponseWriter, success bool, message string) { r.JSON(w, Response{Success: success, Message: message}) } func (r *render) JSONOK(w http.ResponseWriter, message string) { r.JSON(w, Response{Success: true, Message: message}) } func (r *render) JSONERR(w http.ResponseWriter, message string) { r.JSON(w, Response{Success: false, Message: message}) } func (r *render) JSON(w http.ResponseWriter, data any) { v, err := json.Marshal(data) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json; charset=utf-8") w.WriteHeader(http.StatusOK) _, err = w.Write(v) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } }