作者:DanL
项目:kal
// HandleJobRequest routes requests to /api/v1/job/{id} to either
// handleDeleteJob if its a DELETE or handleGetJob if its a GET request.
func HandleJobRequest(cache job.JobCache, db job.JobDB) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
id := mux.Vars(r)["id"]
j, err := cache.Get(id)
if err != nil {
log.Error("Error occured when trying to get the job you requested.")
w.WriteHeader(http.StatusNotFound)
return
}
if j == nil {
w.WriteHeader(http.StatusNotFound)
return
}
if r.Method == "DELETE" {
err = j.Delete(cache, db)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
} else {
w.WriteHeader(http.StatusNoContent)
}
} else if r.Method == "GET" {
handleGetJob(w, r, j)
}
}
}
作者:AlexIzydorczy
项目:kal
// HandleListJobStatsRequest is the handler for getting job-specific stats
// /api/v1/job/stats/{id}
func HandleListJobStatsRequest(cache job.JobCache) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
id := mux.Vars(r)["id"]
j, err := cache.Get(id)
if err != nil {
log.Error("Error occured when trying to get the job you requested.")
w.WriteHeader(http.StatusNotFound)
return
}
if j == nil {
w.WriteHeader(http.StatusNotFound)
return
}
resp := &ListJobStatsResponse{
JobStats: j.Stats,
}
w.Header().Set(contentType, jsonContentType)
w.WriteHeader(http.StatusOK)
if err := json.NewEncoder(w).Encode(resp); err != nil {
log.Error("Error occured when marshalling response: %s", err)
return
}
}
}
作者:nivertec
项目:kal
// HandleListJobs responds with an array of all Jobs within the server,
// active or disabled.
func HandleListJobsRequest(cache job.JobCache) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
resp := &ListJobsResponse{
Jobs: cache.GetAll(),
}
w.Header().Set(contentType, jsonContentType)
w.WriteHeader(http.StatusOK)
if err := json.NewEncoder(w).Encode(resp); err != nil {
log.Error("Error occured when marshalling response: %s", err)
return
}
}
}
作者:AlexIzydorczy
项目:kal
// HandleStartJobRequest is the handler for manually starting jobs
// /api/v1/job/start/{id}
func HandleStartJobRequest(cache job.JobCache) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
id := mux.Vars(r)["id"]
j, err := cache.Get(id)
if err != nil {
log.Error("Error occured when trying to get the job you requested.")
w.WriteHeader(http.StatusNotFound)
return
}
if j == nil {
w.WriteHeader(http.StatusNotFound)
return
}
j.Run(cache)
w.WriteHeader(http.StatusNoContent)
}
}