func()

in pkg/testutil/bldr/git_smart_http_server.go [87:113]


func (s *GitSmartHTTPServer) handleUploadPack(w http.ResponseWriter, r *http.Request) {
	uploadReq := packp.NewUploadPackRequest()
	err := uploadReq.Decode(r.Body)
	if err != nil {
		http.Error(w, fmt.Sprintf("Failed to decode HTTP request body: %v", err), http.StatusBadRequest)
		return
	}

	session, err := s.establishUploadPackSession()
	if err != nil {
		http.Error(w, fmt.Sprintf("Failed to establish git-upload-pack session: %v", err), http.StatusInternalServerError)
		return
	}

	uploadResponse, err := session.UploadPack(r.Context(), uploadReq)
	if err != nil {
		http.Error(w, fmt.Sprintf("Failed to upload pack: %v", err), http.StatusInternalServerError)
		return
	}

	w.Header().Add("Content-Type", "application/x-git-upload-pack-result")
	w.Header().Add("Cache-Control", "no-cache")
	err = uploadResponse.Encode(w)
	if err != nil {
		panic(err) // too late to write the error to the response
	}
}