Matthew Holt
3 years ago
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5
2 changed files with
9 additions and
3 deletions
-
modules/caddyhttp/templates/templates.go
-
modules/caddyhttp/templates/tplcontext.go
|
|
@ -16,6 +16,7 @@ package templates |
|
|
|
|
|
|
|
import ( |
|
|
|
"bytes" |
|
|
|
"errors" |
|
|
|
"fmt" |
|
|
|
"net/http" |
|
|
|
"strconv" |
|
|
@ -312,6 +313,12 @@ func (t *Templates) executeTemplate(rr caddyhttp.ResponseRecorder, r *http.Reque |
|
|
|
|
|
|
|
err := ctx.executeTemplateInBuffer(r.URL.Path, rr.Buffer()) |
|
|
|
if err != nil { |
|
|
|
// templates may return a custom HTTP error to be propagated to the client,
|
|
|
|
// otherwise for any other error we assume the template is broken
|
|
|
|
var handlerErr caddyhttp.HandlerError |
|
|
|
if errors.As(err, &handlerErr) { |
|
|
|
return handlerErr |
|
|
|
} |
|
|
|
return caddyhttp.Error(http.StatusInternalServerError, err) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -350,9 +350,8 @@ func (c TemplateContext) funcFileExists(filename string) (bool, error) { |
|
|
|
return false, nil |
|
|
|
} |
|
|
|
|
|
|
|
// funcHTTPError returns a structured HTTP handler error. EXPERIMENTAL.
|
|
|
|
// TODO: Requires https://github.com/golang/go/issues/34201 to be fixed (Go 1.17).
|
|
|
|
// Example usage might be: `{{if not (fileExists $includeFile)}}{{httpError 404}}{{end}}`
|
|
|
|
// funcHTTPError returns a structured HTTP handler error. EXPERIMENTAL; SUBJECT TO CHANGE.
|
|
|
|
// Example usage: `{{if not (fileExists $includeFile)}}{{httpError 404}}{{end}}`
|
|
|
|
func (c TemplateContext) funcHTTPError(statusCode int) (bool, error) { |
|
|
|
return false, caddyhttp.Error(statusCode, nil) |
|
|
|
} |
|
|
|