Index: milo/frontend/view_error.go |
diff --git a/milo/frontend/view_error.go b/milo/frontend/view_error.go |
new file mode 100644 |
index 0000000000000000000000000000000000000000..57afe71379b8d597132a36284d2fbb2a658f91c9 |
--- /dev/null |
+++ b/milo/frontend/view_error.go |
@@ -0,0 +1,31 @@ |
+// Copyright 2017 The LUCI Authors. All rights reserved. |
+// Use of this source code is governed under the Apache License, Version 2.0 |
+// that can be found in the LICENSE file. |
+ |
+package frontend |
+ |
+import ( |
+ "github.com/luci/luci-go/common/errors" |
+ "github.com/luci/luci-go/server/router" |
+ "github.com/luci/luci-go/server/templates" |
+ |
+ "github.com/luci/luci-go/milo/common" |
+) |
+ |
+// ErrorHandler renders an error page for the user. |
+func ErrorHandler(c *router.Context, err error) { |
+ // TODO(iannucci): tag/extract other information from error, like a link to the |
+ // 'container'; i.e. a build may link to its builder, a builder to its |
+ // master/bucket, etc. |
+ |
+ code := common.ErrorTag.In(err) |
+ if code == common.CodeUnknown { |
+ errors.Log(c.Context, err) |
+ } |
+ status := code.HTTPStatus() |
+ c.Writer.WriteHeader(status) |
+ templates.MustRender(c.Context, c.Writer, "pages/error.html", templates.Args{ |
+ "Code": status, |
+ "Message": err.Error(), |
+ }) |
+} |