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

Side by Side Diff: go/src/infra/appengine/test-results/frontend/handlers.go

Issue 2250043002: test-results: package frontend: Add delete keys task queue (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@xx_5
Patch Set: Created 4 years, 4 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 package frontend 1 package frontend
2 2
3 import ( 3 import (
4 "encoding/json"
4 "html/template" 5 "html/template"
5 "net/http" 6 "net/http"
6 "time" 7 "time"
7 8
8 "google.golang.org/appengine" 9 "google.golang.org/appengine"
9 10
11 "github.com/luci/gae/service/datastore"
10 "github.com/luci/luci-go/appengine/gaemiddleware" 12 "github.com/luci/luci-go/appengine/gaemiddleware"
13 "github.com/luci/luci-go/common/logging"
11 "github.com/luci/luci-go/server/router" 14 "github.com/luci/luci-go/server/router"
12 "github.com/luci/luci-go/server/templates" 15 "github.com/luci/luci-go/server/templates"
13 ) 16 )
14 17
18 const (
19 defaultQueueName = "default"
20 deleteKeysQueueName = "delete-keys"
21 )
22
15 func init() { 23 func init() {
16 r := router.New() 24 r := router.New()
17 baseMW := base()
18 25
19 » r.GET("/testfile", baseMW, getHandler) 26 » baseMW := gaemiddleware.BaseProd()
20 » r.GET("/testfile/", baseMW, getHandler) 27 » getMW := baseMW.Extend(templatesMiddleware())
28
29 » gaemiddleware.InstallHandlers(r, baseMW)
30
31 » r.GET("/testfile", getMW, getHandler)
32 » r.GET("/testfile/", getMW, getHandler)
33 » r.POST("/testfile/upload", baseMW.Extend(withParsedUploadForm), uploadHa ndler)
34
35 » r.GET("/builders", baseMW, getBuildersHandler)
36 » r.GET("/updatebuilders", baseMW, updateBuildersHandler)
37 » r.GET("/builderstate", baseMW, getBuilderStateHandler)
38 » r.GET("/updatebuilderstate", baseMW, updateBuilderStateHandler)
39
40 » r.POST(
41 » » "/internal/delete-keys",
42 » » baseMW.Extend(gaemiddleware.RequireTaskQueue(deleteKeysQueueName )),
43 » » deleteKeysHandler,
44 » )
21 45
22 http.DefaultServeMux.Handle("/", r) 46 http.DefaultServeMux.Handle("/", r)
23 } 47 }
24 48
25 // base returns the root middleware chain. 49 // templatesMiddleware returns the templates middleware.
26 func base() router.MiddlewareChain { 50 func templatesMiddleware() router.Middleware {
27 » templateBundle := &templates.Bundle{ 51 » return templates.WithTemplates(&templates.Bundle{
28 Loader: templates.FileSystemLoader("templates"), 52 Loader: templates.FileSystemLoader("templates"),
29 DebugMode: appengine.IsDevAppServer(), 53 DebugMode: appengine.IsDevAppServer(),
30 FuncMap: template.FuncMap{ 54 FuncMap: template.FuncMap{
31 "timeParams": func(t time.Time) string { 55 "timeParams": func(t time.Time) string {
32 return t.Format(paramsTimeFormat) 56 return t.Format(paramsTimeFormat)
33 }, 57 },
34 "timeJS": func(t time.Time) int64 { 58 "timeJS": func(t time.Time) int64 {
35 return t.Unix() * 1000 59 return t.Unix() * 1000
36 }, 60 },
37 }, 61 },
62 })
63 }
64
65 // deleteKeysHandler is task queue handler for deleting keys.
66 func deleteKeysHandler(ctx *router.Context) {
67 c, w, r := ctx.Context, ctx.Writer, ctx.Request
68
69 keys := struct {
70 Keys []string `json:"keys"`
71 }{}
72 if err := json.NewDecoder(r.Body).Decode(&keys); err != nil {
73 logging.WithError(err).Errorf(c, "deleteKeysHandler")
74 w.WriteHeader(http.StatusInternalServerError)
Vadim Sh. 2016/08/16 18:56:13 better to return 200 here otherwise Task Queue ser
nishanths 2016/08/16 20:35:13 Done, thanks!
75 return
38 } 76 }
39 77
40 » return gaemiddleware.BaseProd().Extend( 78 » dkeys := make([]*datastore.Key, 0, len(keys.Keys))
41 » » templates.WithTemplates(templateBundle), 79 » for _, k := range keys.Keys {
42 » ) 80 » » dk, err := datastore.NewKeyEncoded(k)
81 » » if err != nil {
82 » » » logging.WithError(err).Errorf(c, "deleteKeysHandler")
83 » » » w.WriteHeader(http.StatusInternalServerError)
84 » » » return
85 » » }
86 » » dkeys = append(dkeys, dk)
87 » }
88
89 » if err := datastore.Get(c).Delete(dkeys); err != nil {
90 » » logging.WithError(err).Errorf(c, "deleteKeysHandler")
91 » » w.WriteHeader(http.StatusInternalServerError)
92 » » return
93 » }
94
95 » w.WriteHeader(http.StatusOK)
43 } 96 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698