diff --git a/internal/respond/error.go b/internal/respond/error.go new file mode 100644 index 0000000..82dd829 --- /dev/null +++ b/internal/respond/error.go @@ -0,0 +1,18 @@ +package respond + +import "net/http" + +// Error responds with a standardized error object. +func Error(w http.ResponseWriter, code int, kind string, message string) { + type errorContent struct { + Code int `json:"code"` + Kind string `json:"kind"` + Message string `json:"message"` + } + + JSON(w, code, &errorContent{ + Code: code, + Kind: kind, + Message: message, + }) +} diff --git a/internal/respond/json.go b/internal/respond/json.go new file mode 100644 index 0000000..abcef45 --- /dev/null +++ b/internal/respond/json.go @@ -0,0 +1,14 @@ +package respond + +import ( + "encoding/json" + "net/http" +) + +// JSON gets the json value. +func JSON(w http.ResponseWriter, code int, data interface{}) { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(code) + + json.NewEncoder(w).Encode(data) +}