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  }