Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The LUCI Authors. All rights reserved. | |
| 2 // Use of this source code is governed under the Apache License, Version 2.0 | |
| 3 // that can be found in the LICENSE file. | |
| 4 | |
| 5 package buildbucket | |
| 6 | |
| 7 import ( | |
| 8 "fmt" | |
| 9 "net/http" | |
| 10 "strconv" | |
| 11 | |
| 12 "github.com/julienschmidt/httprouter" | |
| 13 "golang.org/x/net/context" | |
| 14 | |
| 15 "github.com/luci/luci-go/appengine/cmd/milo/miloerror" | |
| 16 "github.com/luci/luci-go/appengine/cmd/milo/settings" | |
| 17 "github.com/luci/luci-go/server/templates" | |
| 18 ) | |
| 19 | |
| 20 // TODO(nodir): move this value to luci-config. | |
| 21 const defaultServer = "cr-buildbucket.appspot.com" | |
| 22 | |
| 23 // Builder displays builder view by fetching builds from buildbucket. | |
| 24 type Builder struct{} | |
| 25 | |
| 26 // GetTemplateName for Builder returns the template name for builder pages. | |
| 27 func (b Builder) GetTemplateName(t settings.Theme) string { | |
| 28 return "builder.html" | |
| 29 } | |
| 30 | |
| 31 // Render renders builder view page. | |
| 32 func (b Builder) Render(c context.Context, r *http.Request, p httprouter.Params) (*templates.Args, error) { | |
| 33 // Parse URL parameters. | |
| 34 server := r.FormValue("server") | |
| 35 if server == "" { | |
| 36 server = defaultServer | |
| 37 } | |
| 38 | |
| 39 bucket := p.ByName("bucket") | |
| 40 if bucket == "" { | |
| 41 return nil, &miloerror.Error{ | |
| 42 Message: "No bucket", | |
| 43 Code: http.StatusBadRequest, | |
| 44 } | |
| 45 } | |
| 46 | |
| 47 builder := p.ByName("builder") | |
| 48 if builder == "" { | |
| 49 return nil, &miloerror.Error{ | |
| 50 Message: "No builder", | |
| 51 Code: http.StatusBadRequest, | |
| 52 } | |
| 53 } | |
| 54 | |
| 55 // numbuilds is a name of buildbot's query string parameter for specifyi ng | |
| 56 // maximum number of builds to show. | |
| 57 // We are retaining the parameter name for user convenience. | |
| 58 numBuildsStr := r.FormValue("numbuilds") | |
| 59 numBuilds := 0 | |
|
hinoka
2016/07/08 23:26:05
Shouldn't this default to something like 25?
Oh y
nodir
2016/07/09 00:00:49
ok I will treat anything <0 as "use default"
-1 is
| |
| 60 if numBuildsStr != "" { | |
| 61 var err error | |
| 62 numBuilds, err = strconv.Atoi(numBuildsStr) | |
| 63 if err != nil { | |
| 64 return nil, &miloerror.Error{ | |
| 65 Message: fmt.Sprintf("numbuilds parameter value %q is not a number: %s", numBuildsStr, err), | |
| 66 Code: http.StatusBadRequest, | |
| 67 } | |
| 68 } | |
| 69 } | |
| 70 | |
| 71 result, err := builderImpl(c, server, bucket, builder, numBuilds) | |
| 72 if err != nil { | |
| 73 return nil, err | |
| 74 } | |
| 75 | |
| 76 // Render into the template | |
| 77 args := &templates.Args{ | |
| 78 "Builder": result, | |
| 79 } | |
| 80 return args, nil | |
| 81 } | |
| OLD | NEW |