From 4f0f5739725e43bf16a6702642e6b31f63ec07ea Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Mon, 7 Jan 2019 20:54:50 +0100 Subject: [PATCH] respond: Added basic HTTP response writing utils. --- internal/respond/error.go | 18 ++++++++++++++++++ internal/respond/json.go | 14 ++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 internal/respond/error.go create mode 100644 internal/respond/json.go 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) +}