From 1e66d3a470388a44e1c5852d66bd2a48b607c768 Mon Sep 17 00:00:00 2001 From: Andrew Gerhold Date: Fri, 27 Nov 2020 14:59:24 -0800 Subject: [PATCH] Update handlers.go to add returnResponseCode --- handlers/handlers.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/handlers/handlers.go b/handlers/handlers.go index 2a2f22b0..29a26d7e 100644 --- a/handlers/handlers.go +++ b/handlers/handlers.go @@ -212,6 +212,27 @@ func returnJson(d interface{}, w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(d) } +func returnResponseCode(d interface{}, w http.ResponseWriter, r *http.Request) { + if e, ok := d.(errors.Error); ok { + w.WriteHeader(e.Status()) + json.NewEncoder(w).Encode(e) + return + } + if e, ok := d.(error); ok { + w.WriteHeader(500) + json.NewEncoder(w).Encode(errors.New(e.Error())) + return + } + + // https://golang.org/src/net/http/server.go?s=3003:5866#L150 + // Go does not currently + // support sending user-defined 1xx informational headers, + // with the exception of 100-continue response header that the + // Server sends automatically when the Request.Body is read. + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(d) +} + // error404Handler is a HTTP handler for 404 error pages func error404Handler(w http.ResponseWriter, r *http.Request) { if usingSSL {