Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
1.5 kB · 63 lines
Go
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364package xrpc
import ( "encoding/json" "fmt" "net/http"
"github.com/bluesky-social/indigo/atproto/syntax" "tangled.org/core/api/tangled" "tangled.org/core/knotserver/git" xrpcerr "tangled.org/core/xrpc/errors")
func (x *Xrpc) HiddenRef(w http.ResponseWriter, r *http.Request) { l := x.Logger.With("handler", "HiddenRef")
actorDid, ok := r.Context().Value(ActorDid).(syntax.DID) if !ok { badRequest(xrpcerr.MissingActorDidError).send(l, w) return }
var data tangled.RepoHiddenRef_Input if err := json.NewDecoder(r.Body).Decode(&data); err != nil { badRequest(xrpcerr.GenericError(err)).send(l, w) return }
forkRef := data.ForkRef remoteRef := data.RemoteRef
if forkRef == "" || remoteRef == "" { badRequest(xrpcerr.GenericError(fmt.Errorf("forkRef and remoteRef are required"))).send(l, w) return }
repo, denial := x.pushableRepoDID(actorDid, data.Repo) if denial != nil { denial.send(l, w) return }
gr, err := git.PlainOpen(repo.path) if err != nil { badRequest(xrpcerr.GenericError(fmt.Errorf("failed to open repository: %w", err))).send(l, w) return }
err = gr.TrackHiddenRemoteRef(forkRef, remoteRef) if err != nil { l.Error("error tracking hidden remote ref", "error", err.Error()) serverError(xrpcerr.GitError(err)).send(l, w) return }
response := tangled.RepoHiddenRef_Output{ Success: true, }
w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(response)}