github.com/justinjmoses/evergreen@v0.0.0-20170530173719-1d50e381ff0d/rest/route/service.go (about) 1 package route 2 3 import ( 4 "net/http" 5 6 "github.com/evergreen-ci/evergreen/rest/data" 7 "github.com/gorilla/mux" 8 ) 9 10 // AttachHandler attaches the api's request handlers to the given mux router. 11 // It builds a Connector then attaches each of the main functions for 12 // the api to the router. 13 func AttachHandler(root *mux.Router, superUsers []string, URL, prefix string) http.Handler { 14 sc := &data.DBConnector{} 15 16 sc.SetURL(URL) 17 sc.SetPrefix(prefix) 18 sc.SetSuperUsers(superUsers) 19 return GetHandler(root, sc) 20 } 21 22 // GetHandler builds each of the functions that this api implements and then 23 // registers them on the given router. It then returns the given router as an 24 // http handler which can be given more functions. 25 func GetHandler(r *mux.Router, sc data.Connector) http.Handler { 26 routes := map[string]routeManagerFactory{ 27 "/builds/{build_id}/tasks": getTasksByBuildRouteManager, 28 "/hosts": getHostRouteManager, 29 "/projects/{project_id}/revisions/{commit_hash}/tasks": getTasksByProjectAndCommitRouteManager, 30 "/tasks/{task_id}": getTaskRouteManager, 31 "/tasks/{task_id}/restart": getTaskRestartRouteManager, 32 "/tasks/{task_id}/tests": getTestRouteManager, 33 "/": getPlaceHolderManger, 34 } 35 36 for path, getManager := range routes { 37 getManager(path, 2).Register(r, sc) 38 } 39 40 return r 41 }