| 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 := -1 |
| 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 |