···25252626}27272828+func (s *State) UploadArchive(w http.ResponseWriter, r *http.Request) {2929+ user, ok := r.Context().Value("resolvedId").(identity.Identity)3030+ if !ok {3131+ http.Error(w, "failed to resolve user", http.StatusInternalServerError)3232+ return3333+ }3434+ repo := r.Context().Value("repo").(*models.Repo)3535+3636+ scheme := "https"3737+ if s.config.Core.Dev {3838+ scheme = "http"3939+ }4040+4141+ targetURL := fmt.Sprintf("%s://%s/%s/%s/git-upload-archive?%s", scheme, repo.Knot, user.DID, repo.Name, r.URL.RawQuery)4242+ s.proxyRequest(w, r, targetURL)4343+}4444+2845func (s *State) UploadPack(w http.ResponseWriter, r *http.Request) {2946 user, ok := r.Context().Value("resolvedId").(identity.Identity)3047 if !ok {
+1
appview/state/router.go
···101101102102 // These routes get proxied to the knot103103 r.Get("/info/refs", s.InfoRefs)104104+ r.Post("/git-upload-archive", s.UploadArchive)104105 r.Post("/git-upload-pack", s.UploadPack)105106 r.Post("/git-receive-pack", s.ReceivePack)106107