func()

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)
}