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