github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/apiv3/route/service.go (about) 1 package route 2 3 import ( 4 "net/http" 5 6 "github.com/evergreen-ci/evergreen" 7 "github.com/evergreen-ci/evergreen/apiv3" 8 "github.com/evergreen-ci/evergreen/apiv3/servicecontext" 9 "github.com/gorilla/mux" 10 ) 11 12 // AttachHandler attaches the api's request handlers to the given mux router. 13 // It builds a ServiceContext then attaches each of the main functions for 14 // the api to the router. 15 func AttachHandler(root *mux.Router, superUsers []string, URL, prefix string) http.Handler { 16 sc := &servicecontext.DBServiceContext{} 17 18 sc.SetURL(URL) 19 sc.SetPrefix(prefix) 20 sc.SetSuperUsers(superUsers) 21 return GetHandler(root, sc) 22 } 23 24 // GetHandler builds each of the functions that this api implements and then 25 // registers them on the given router. It then returns the given router as an 26 // http handler which can be given more functions. 27 func GetHandler(r *mux.Router, sc servicecontext.ServiceContext) http.Handler { 28 // PLACE HOLDER ROUTE DEFINITION 29 // make object 30 placeHolderGet := MethodHandler{ 31 Authenticator: &NoAuthAuthenticator{}, 32 // call handler 33 RequestHandler: &PlaceHolderRequestHandler{}, 34 MethodType: evergreen.MethodGet, 35 } 36 37 placeHolderRoute := RouteManager{ 38 Route: "/", 39 Methods: []MethodHandler{placeHolderGet}, 40 Version: 2, 41 } 42 43 getHostRouteManager("/hosts", 2).Register(r, sc) 44 getTaskRouteManager("/tasks/{task_id}", 2).Register(r, sc) 45 getTestRouteManager("/tasks/{task_id}/tests", 2).Register(r, sc) 46 getTasksByProjectAndCommitRouteManager("/projects/{project_id}/revisions/{commit_hash}/tasks", 2).Register(r, sc) 47 getTasksByBuildRouteManager("/builds/{build_id}/tasks", 2).Register(r, sc) 48 getTaskRestartRouteManager("/tasks/{task_id}/restart", 2).Register(r, sc) 49 placeHolderRoute.Register(r, sc) 50 return r 51 } 52 53 type PlaceHolderRequestHandler struct { 54 } 55 56 func (p *PlaceHolderRequestHandler) Handler() RequestHandler { 57 return &PlaceHolderRequestHandler{} 58 } 59 60 func (p *PlaceHolderRequestHandler) ParseAndValidate(r *http.Request) error { 61 return nil 62 } 63 func (p *PlaceHolderRequestHandler) Execute(sc servicecontext.ServiceContext) (ResponseData, error) { 64 return ResponseData{}, apiv3.APIError{ 65 StatusCode: 200, 66 Message: "this is a placeholder for now", 67 } 68 }