summaryrefslogtreecommitdiff
path: root/internal/handlers/response.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/handlers/response.go')
-rw-r--r--internal/handlers/response.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/internal/handlers/response.go b/internal/handlers/response.go
new file mode 100644
index 0000000..3976f02
--- /dev/null
+++ b/internal/handlers/response.go
@@ -0,0 +1,36 @@
+package handlers
+
+import (
+ "encoding/json"
+ "html/template"
+ "log"
+ "net/http"
+)
+
+// JSONResponse writes data as JSON with appropriate headers
+func JSONResponse(w http.ResponseWriter, data interface{}) {
+ w.Header().Set("Content-Type", "application/json")
+ json.NewEncoder(w).Encode(data)
+}
+
+// JSONError writes an error response as JSON
+func JSONError(w http.ResponseWriter, status int, msg string, err error) {
+ if err != nil {
+ log.Printf("Error: %s: %v", msg, err)
+ }
+ http.Error(w, msg, status)
+}
+
+// HTMLResponse renders an HTML template
+func HTMLResponse(w http.ResponseWriter, tmpl *template.Template, name string, data interface{}) {
+ if err := tmpl.ExecuteTemplate(w, name, data); err != nil {
+ http.Error(w, "Failed to render template", http.StatusInternalServerError)
+ log.Printf("Error rendering template %s: %v", name, err)
+ }
+}
+
+// HTMLString writes an HTML string directly
+func HTMLString(w http.ResponseWriter, html string) {
+ w.Header().Set("Content-Type", "text/html")
+ w.Write([]byte(html))
+}