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  }