Monorepo for Tangled
tangled.org
1package xrpc
2
3import (
4 "database/sql"
5 "errors"
6 "net/http"
7
8 "github.com/bluesky-social/indigo/atproto/syntax"
9 "tangled.org/core/api/tangled"
10 xrpcerr "tangled.org/core/xrpc/errors"
11)
12
13func (x *Xrpc) RepoDescribeRepo(w http.ResponseWriter, r *http.Request) {
14 raw := r.URL.Query().Get("repoDid")
15 repoDid, err := syntax.ParseDID(raw)
16 if err != nil {
17 writeError(w, xrpcerr.NewXrpcError(
18 xrpcerr.WithTag("InvalidRequest"),
19 xrpcerr.WithMessage("missing or invalid repoDid parameter"),
20 ), http.StatusBadRequest)
21 return
22 }
23
24 ownerDid, rkey, err := x.Db.GetRepoKeyOwner(repoDid.String())
25 if errors.Is(err, sql.ErrNoRows) {
26 writeError(w, xrpcerr.RepoNotFoundError, http.StatusNotFound)
27 return
28 }
29 if err != nil {
30 writeError(w, xrpcerr.GenericError(err), http.StatusInternalServerError)
31 return
32 }
33
34 x.writeJson(w, tangled.RepoDescribeRepo_Output{
35 RepoDid: repoDid.String(),
36 OwnerDid: ownerDid,
37 Rkey: rkey,
38 })
39}