this repo has no description
1package xrpc 2 3import ( 4 "encoding/json" 5 "log/slog" 6 "net/http" 7 8 "tangled.sh/tangled.sh/core/api/tangled" 9 "tangled.sh/tangled.sh/core/idresolver" 10 "tangled.sh/tangled.sh/core/jetstream" 11 "tangled.sh/tangled.sh/core/knotserver/config" 12 "tangled.sh/tangled.sh/core/knotserver/db" 13 "tangled.sh/tangled.sh/core/notifier" 14 "tangled.sh/tangled.sh/core/rbac" 15 xrpcerr "tangled.sh/tangled.sh/core/xrpc/errors" 16 "tangled.sh/tangled.sh/core/xrpc/serviceauth" 17 18 "github.com/go-chi/chi/v5" 19) 20 21type Xrpc struct { 22 Config *config.Config 23 Db *db.DB 24 Ingester *jetstream.JetstreamClient 25 Enforcer *rbac.Enforcer 26 Logger *slog.Logger 27 Notifier *notifier.Notifier 28 Resolver *idresolver.Resolver 29 ServiceAuth *serviceauth.ServiceAuth 30} 31 32func (x *Xrpc) Router() http.Handler { 33 r := chi.NewRouter() 34 35 r.With(x.ServiceAuth.VerifyServiceAuth).Post("/"+tangled.RepoSetDefaultBranchNSID, x.SetDefaultBranch) 36 37 return r 38} 39 40// this is slightly different from http_util::write_error to follow the spec: 41// 42// the json object returned must include an "error" and a "message" 43func writeError(w http.ResponseWriter, e xrpcerr.XrpcError, status int) { 44 w.Header().Set("Content-Type", "application/json") 45 w.WriteHeader(status) 46 json.NewEncoder(w).Encode(e) 47}