Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: milo/frontend/routes.go

Issue 2977863002: [milo] Refactor all html knowledge out of backends. (Closed)
Patch Set: seems to work :) Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The LUCI Authors. 1 // Copyright 2015 The LUCI Authors.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and 12 // See the License for the specific language governing permissions and
13 // limitations under the License. 13 // limitations under the License.
14 14
15 package frontend 15 package frontend
16 16
17 import ( 17 import (
18 "fmt"
18 "net/http" 19 "net/http"
19 20
20 "github.com/golang/protobuf/proto" 21 "github.com/golang/protobuf/proto"
21 "golang.org/x/net/context" 22 "golang.org/x/net/context"
22 23
23 "github.com/luci/luci-go/appengine/gaemiddleware" 24 "github.com/luci/luci-go/appengine/gaemiddleware"
24 "github.com/luci/luci-go/grpc/discovery" 25 "github.com/luci/luci-go/grpc/discovery"
25 "github.com/luci/luci-go/grpc/grpcmon" 26 "github.com/luci/luci-go/grpc/grpcmon"
26 "github.com/luci/luci-go/grpc/prpc" 27 "github.com/luci/luci-go/grpc/prpc"
28 "github.com/luci/luci-go/server/router"
29
27 milo "github.com/luci/luci-go/milo/api/proto" 30 milo "github.com/luci/luci-go/milo/api/proto"
31 "github.com/luci/luci-go/milo/buildsource"
28 "github.com/luci/luci-go/milo/buildsource/buildbot" 32 "github.com/luci/luci-go/milo/buildsource/buildbot"
29 "github.com/luci/luci-go/milo/buildsource/buildbucket" 33 "github.com/luci/luci-go/milo/buildsource/buildbucket"
30 "github.com/luci/luci-go/milo/buildsource/rawpresentation" 34 "github.com/luci/luci-go/milo/buildsource/rawpresentation"
31 "github.com/luci/luci-go/milo/buildsource/swarming" 35 "github.com/luci/luci-go/milo/buildsource/swarming"
32 "github.com/luci/luci-go/milo/common"
33 "github.com/luci/luci-go/milo/frontend/console"
34 "github.com/luci/luci-go/milo/rpc" 36 "github.com/luci/luci-go/milo/rpc"
35 "github.com/luci/luci-go/server/router"
36 ) 37 )
37 38
38 func emptyPrelude(c context.Context, methodName string, req proto.Message) (cont ext.Context, error) { 39 func emptyPrelude(c context.Context, methodName string, req proto.Message) (cont ext.Context, error) {
39 return c, nil 40 return c, nil
40 } 41 }
41 42
42 // Run sets up all the routes and runs the server. 43 // Run sets up all the routes and runs the server.
43 func Run(templatePath string) { 44 func Run(templatePath string) {
44 // Register plain ol' http handlers. 45 // Register plain ol' http handlers.
45 r := router.New() 46 r := router.New()
46 gaemiddleware.InstallHandlers(r) 47 gaemiddleware.InstallHandlers(r)
47 48
48 » basemw := common.Base(templatePath) 49 » basemw := base(templatePath)
49 r.GET("/", basemw, frontpageHandler) 50 r.GET("/", basemw, frontpageHandler)
50 51
51 // Admin and cron endpoints. 52 // Admin and cron endpoints.
52 r.GET("/admin/update", basemw.Extend(gaemiddleware.RequireCron), UpdateC onfigHandler) 53 r.GET("/admin/update", basemw.Extend(gaemiddleware.RequireCron), UpdateC onfigHandler)
53 r.GET("/admin/configs", basemw, ConfigsHandler) 54 r.GET("/admin/configs", basemw, ConfigsHandler)
54 55
55 // Console 56 // Console
56 » r.GET("/console/:project/:name", basemw, console.ConsoleHandler) 57 » r.GET("/console/:project/:name", basemw, ConsoleHandler)
57 » r.GET("/console/:project", basemw, console.Main) 58 » r.GET("/console/:project", basemw, ConsoleMainHandler)
58 59
59 // Swarming 60 // Swarming
60 » r.GET(swarming.URLBase+"/:id/steps/*logname", basemw, swarming.LogHandle r) 61 » r.GET(swarming.URLBase+"/:id/steps/*logname", basemw, func(c *router.Con text) {
Ryan Tseng 2017/07/13 22:00:47 I'm seeing some multi-line repetition, consider mo
iannucci 2017/07/14 19:00:23 I considered that, but I prefer this way, because
Ryan Tseng 2017/07/14 19:18:21 makes sense then. this is fine then. moving them
61 » r.GET(swarming.URLBase+"/:id", basemw, swarming.BuildHandler) 62 » » LogHandler(c, &swarming.BuildID{
63 » » » TaskID: c.Params.ByName("id"),
64 » » }, c.Params.ByName("logname"))
65 » })
66 » r.GET(swarming.URLBase+"/:id", basemw, func(c *router.Context) {
67 » » BuildHandler(c, &swarming.BuildID{TaskID: c.Params.ByName("id")} )
68 » })
62 // Backward-compatible URLs for Swarming: 69 // Backward-compatible URLs for Swarming:
63 » r.GET("/swarming/prod/:id/steps/*logname", basemw, swarming.LogHandler) 70 » r.GET("/swarming/prod/:id/steps/*logname", basemw, func(c *router.Contex t) {
64 » r.GET("/swarming/prod/:id", basemw, swarming.BuildHandler) 71 » » LogHandler(c, &swarming.BuildID{
72 » » » TaskID: c.Params.ByName("id"),
73 » » }, c.Params.ByName("logname"))
74 » })
75 » r.GET("/swarming/prod/:id", basemw, func(c *router.Context) {
76 » » BuildHandler(c, &swarming.BuildID{TaskID: c.Params.ByName("id")} )
77 » })
65 78
66 // Buildbucket 79 // Buildbucket
67 » r.GET("/buildbucket/:bucket/:builder", basemw, buildbucket.BuilderHandle r) 80 » r.GET("/buildbucket/:bucket/:builder", basemw, func(c *router.Context) {
81 » » BuilderHandler(c, buildsource.BuilderID(
82 » » » fmt.Sprintf("buildbucket/%s/%s", c.Params.ByName("bucket "), c.Params.ByName("builder"))))
83 » })
68 84
69 // Buildbot 85 // Buildbot
70 » r.GET("/buildbot/:master/:builder/:build", basemw, buildbot.BuildHandler ) 86 » r.GET("/buildbot/:master/:builder/:build", basemw, func(c *router.Contex t) {
71 » r.GET("/buildbot/:master/:builder/", basemw, buildbot.BuilderHandler) 87 » » BuildHandler(c, buildbot.NewBuildID(
88 » » » c.Params.ByName("master"),
89 » » » c.Params.ByName("builder"),
90 » » » c.Params.ByName("build"),
91 » » ))
92 » })
93 » r.GET("/buildbot/:master/:builder/", basemw, func(c *router.Context) {
94 » » BuilderHandler(c, buildsource.BuilderID(
95 » » » fmt.Sprintf("buildbot/%s/%s", c.Params.ByName("master"), c.Params.ByName("builder"))))
96 » })
72 97
73 // LogDog Milo Annotation Streams. 98 // LogDog Milo Annotation Streams.
74 // This mimicks the `logdog://logdog_host/project/*path` url scheme seen on 99 // This mimicks the `logdog://logdog_host/project/*path` url scheme seen on
75 // swarming tasks. 100 // swarming tasks.
76 » r.GET("/raw/build/:logdog_host/:project/*path", basemw, rawpresentation. BuildHandler) 101 » r.GET("/raw/build/:logdog_host/:project/*path", basemw, func(c *router.C ontext) {
102 » » BuildHandler(c, rawpresentation.NewBuildID(
103 » » » c.Params.ByName("logdog_host"),
104 » » » c.Params.ByName("project"),
105 » » » c.Params.ByName("path"),
106 » » ))
107 » })
77 108
78 // PubSub subscription endpoints. 109 // PubSub subscription endpoints.
79 r.POST("/_ah/push-handlers/buildbot", basemw, buildbot.PubSubHandler) 110 r.POST("/_ah/push-handlers/buildbot", basemw, buildbot.PubSubHandler)
80 r.POST("/_ah/push-handlers/buildbucket", basemw, buildbucket.PubSubHandl er) 111 r.POST("/_ah/push-handlers/buildbucket", basemw, buildbucket.PubSubHandl er)
81 112
82 // pRPC style endpoints. 113 // pRPC style endpoints.
83 api := prpc.Server{ 114 api := prpc.Server{
84 UnaryServerInterceptor: grpcmon.NewUnaryServerInterceptor(nil), 115 UnaryServerInterceptor: grpcmon.NewUnaryServerInterceptor(nil),
85 } 116 }
86 milo.RegisterBuildbotServer(&api, &milo.DecoratedBuildbot{ 117 milo.RegisterBuildbotServer(&api, &milo.DecoratedBuildbot{
87 Service: &buildbot.Service{}, 118 Service: &buildbot.Service{},
88 Prelude: emptyPrelude, 119 Prelude: emptyPrelude,
89 }) 120 })
90 milo.RegisterBuildInfoServer(&api, &milo.DecoratedBuildInfo{ 121 milo.RegisterBuildInfoServer(&api, &milo.DecoratedBuildInfo{
91 Service: &rpc.BuildInfoService{}, 122 Service: &rpc.BuildInfoService{},
92 Prelude: emptyPrelude, 123 Prelude: emptyPrelude,
93 }) 124 })
94 discovery.Enable(&api) 125 discovery.Enable(&api)
95 api.InstallHandlers(r, gaemiddleware.BaseProd()) 126 api.InstallHandlers(r, gaemiddleware.BaseProd())
96 127
97 http.DefaultServeMux.Handle("/", r) 128 http.DefaultServeMux.Handle("/", r)
98 } 129 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698