1package checkserver 2 3import ( 4 "encoding/json" 5 "net/http" 6 "strconv" 7 8 "github.com/concourse/concourse/atc/api/accessor" 9 "github.com/concourse/concourse/atc/api/present" 10) 11 12func (s *Server) GetCheck(w http.ResponseWriter, r *http.Request) { 13 logger := s.logger.Session("get-check") 14 15 checkID, err := strconv.Atoi(r.FormValue(":check_id")) 16 if err != nil { 17 w.WriteHeader(http.StatusBadRequest) 18 return 19 } 20 21 check, found, err := s.checkFactory.Check(checkID) 22 if err != nil { 23 logger.Error("could-not-get-check", err) 24 w.WriteHeader(http.StatusInternalServerError) 25 return 26 } 27 28 if !found { 29 w.WriteHeader(http.StatusNotFound) 30 return 31 } 32 33 checkables, err := check.AllCheckables() 34 if err != nil { 35 logger.Error("failed-to-get-checkables", err) 36 w.WriteHeader(http.StatusInternalServerError) 37 return 38 } 39 40 acc := accessor.GetAccessor(r) 41 42 for _, checkable := range checkables { 43 44 if acc.IsAuthorized(checkable.TeamName()) { 45 46 w.Header().Set("Content-Type", "application/json") 47 w.WriteHeader(http.StatusOK) 48 49 err = json.NewEncoder(w).Encode(present.Check(check)) 50 if err != nil { 51 logger.Error("failed-to-encode-check", err) 52 w.WriteHeader(http.StatusInternalServerError) 53 } 54 55 return 56 } 57 } 58 59 w.WriteHeader(http.StatusForbidden) 60} 61