in runner/server.go [127:172]
func (s *Server) postRunnerGroupsRunnerResult(w http.ResponseWriter, r *http.Request) {
runnerName := mux.Vars(r)["runner_name"]
ctx := r.Context()
var found = false
var err error
for _, g := range s.groups {
found, err = g.IsControlled(ctx, runnerName)
if err != nil {
renderErrorResponse(w, http.StatusInternalServerError, err)
return
}
if found {
break
}
}
if !found {
renderErrorResponse(w, http.StatusNotFound, fmt.Errorf("no such runner %s", runnerName))
return
}
writer, err := s.store.OpenWriter()
if err != nil {
renderErrorResponse(w, http.StatusInternalServerError, err)
return
}
defer writer.Close()
_, err = io.Copy(writer, r.Body)
if err != nil {
renderErrorResponse(w, http.StatusInternalServerError, err)
return
}
err = writer.Commit(runnerName)
if err != nil {
code := http.StatusInternalServerError
if errors.Is(err, localstore.ErrAlreadyExists) {
code = http.StatusConflict
}
renderErrorResponse(w, code, err)
return
}
w.WriteHeader(http.StatusCreated)
}