From eb8625f7744ba5e72b51549adc086e45313267cb Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Thu, 11 Jul 2019 17:02:57 -0600 Subject: Add error & subroute handlers; weakString; other minor handler changes --- modules/caddyhttp/staticresp.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'modules/caddyhttp/staticresp.go') diff --git a/modules/caddyhttp/staticresp.go b/modules/caddyhttp/staticresp.go index 8e4a3df..291d992 100644 --- a/modules/caddyhttp/staticresp.go +++ b/modules/caddyhttp/staticresp.go @@ -24,20 +24,20 @@ import ( func init() { caddy.RegisterModule(caddy.Module{ - Name: "http.handlers.static", - New: func() interface{} { return new(Static) }, + Name: "http.handlers.static_response", + New: func() interface{} { return new(StaticResponse) }, }) } -// Static implements a simple responder for static responses. -type Static struct { - StatusCode string `json:"status_code"` +// StaticResponse implements a simple responder for static responses. +type StaticResponse struct { + StatusCode weakString `json:"status_code"` Headers http.Header `json:"headers"` Body string `json:"body"` Close bool `json:"close"` } -func (s Static) ServeHTTP(w http.ResponseWriter, r *http.Request, _ Handler) error { +func (s StaticResponse) ServeHTTP(w http.ResponseWriter, r *http.Request, _ Handler) error { repl := r.Context().Value(caddy.ReplacerCtxKey).(caddy.Replacer) // close the connection after responding @@ -60,11 +60,12 @@ func (s Static) ServeHTTP(w http.ResponseWriter, r *http.Request, _ Handler) err // get the status code statusCode := http.StatusOK - if s.StatusCode != "" { - intVal, err := strconv.Atoi(repl.ReplaceAll(s.StatusCode, "")) - if err == nil { - statusCode = intVal + if codeStr := s.StatusCode.String(); codeStr != "" { + intVal, err := strconv.Atoi(repl.ReplaceAll(codeStr, "")) + if err != nil { + return Error(http.StatusInternalServerError, err) } + statusCode = intVal } // write headers @@ -79,4 +80,4 @@ func (s Static) ServeHTTP(w http.ResponseWriter, r *http.Request, _ Handler) err } // Interface guard -var _ MiddlewareHandler = (*Static)(nil) +var _ MiddlewareHandler = (*StaticResponse)(nil) -- cgit v1.2.3