Chromium Code Reviews| Index: milo/appengine/buildbucket/html.go |
| diff --git a/milo/appengine/buildbucket/html.go b/milo/appengine/buildbucket/html.go |
| index 9bfc5187a7799d611afd64d2c422d5203d182bf2..9b22bb1d6dc196e9fb832624f21e8d304677c711 100644 |
| --- a/milo/appengine/buildbucket/html.go |
| +++ b/milo/appengine/buildbucket/html.go |
| @@ -5,32 +5,19 @@ |
| package buildbucket |
| import ( |
| + "errors" |
| "net/http" |
| "github.com/julienschmidt/httprouter" |
| - "golang.org/x/net/context" |
| - |
| - "github.com/luci/luci-go/milo/appengine/settings" |
| - "github.com/luci/luci-go/milo/common/miloerror" |
| + "github.com/luci/luci-go/milo/appengine/common" |
| + "github.com/luci/luci-go/server/router" |
| "github.com/luci/luci-go/server/templates" |
| ) |
| // TODO(nodir): move this value to luci-config. |
| const defaultServer = "cr-buildbucket.appspot.com" |
| -// Builder displays builder view by fetching builds from buildbucket. |
| -type Builder struct{} |
| - |
| -// GetTemplateName for Builder returns the template name for builder pages. |
| -func (b Builder) GetTemplateName(t settings.Theme) string { |
| - return "builder.html" |
| -} |
| - |
| -// Render renders builder view page. |
| -// Note: The builder html template contains self links to "?limit=123", which could |
| -// potentially override any other request parameters set. |
| -func (b Builder) Render(c context.Context, r *http.Request, p httprouter.Params) (*templates.Args, error) { |
| - // Parse URL parameters. |
| +func validateParams(r *http.Request, p httprouter.Params) (*builderQuery, error) { |
|
nodir
2017/03/17 20:47:57
s/validateParams/parseBuilderQuery/
because it par
hinoka
2017/03/17 22:04:55
Done.
|
| server := r.FormValue("server") |
| if server == "" { |
| server = defaultServer |
| @@ -38,35 +25,47 @@ func (b Builder) Render(c context.Context, r *http.Request, p httprouter.Params) |
| bucket := p.ByName("bucket") |
| if bucket == "" { |
| - return nil, &miloerror.Error{ |
| - Message: "No bucket", |
| - Code: http.StatusBadRequest, |
| - } |
| + return nil, errors.New("No bucket") |
| } |
| builder := p.ByName("builder") |
| if builder == "" { |
| - return nil, &miloerror.Error{ |
| - Message: "No builder", |
| - Code: http.StatusBadRequest, |
| - } |
| + return nil, errors.New("No builder") |
| } |
| // limit is a name of the query string parameter for specifying |
| // maximum number of builds to show. |
| - limit, err := settings.GetLimit(r) |
| + limit, err := common.GetLimit(r) |
| if err != nil { |
| return nil, err |
| } |
| - result, err := builderImpl(c, server, bucket, builder, limit) |
| + return &builderQuery{ |
| + Server: server, |
| + Bucket: bucket, |
| + Builder: builder, |
| + Limit: limit, |
| + }, nil |
| +} |
| + |
| +// BuilderHandler renders the builder view page. |
| +// Note: The builder html template contains self links to "?limit=123", which could |
| +// potentially override any other request parameters set. |
| +func BuilderHandler(c *router.Context) { |
| + query, err := validateParams(c.Request, c.Params) |
| if err != nil { |
| - return nil, err |
| + common.ErrorPage(c, http.StatusBadRequest, err.Error()) |
| + return |
| } |
| - // Render into the template |
| - args := &templates.Args{ |
| - "Builder": result, |
| + result, err := builderImpl(c.Context, query) |
| + if err != nil { |
| + common.ErrorPage(c, http.StatusInternalServerError, err.Error()) |
| + return |
| } |
| - return args, nil |
| + |
| + templates.MustRender(c.Context, c.Writer, "pages/builder.html", templates.Args{ |
| + "Builder": result, |
| + }) |
| + return |
|
nodir
2017/03/17 20:47:57
remove
hinoka
2017/03/17 22:04:54
Done.
|
| } |