forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

appview: replace all occurrences of TID with global tid package

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li 4145917b cb4cc5e0

verified
Changed files
+39 -394
appview
+6 -6
appview/issues/issues.go
···
"github.com/go-chi/chi/v5"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/config"
"tangled.sh/tangled.sh/core/appview/db"
"tangled.sh/tangled.sh/core/appview/idresolver"
···
"tangled.sh/tangled.sh/core/appview/pages"
"tangled.sh/tangled.sh/core/appview/pagination"
"tangled.sh/tangled.sh/core/appview/reporesolver"
+
"tangled.sh/tangled.sh/core/tid"
)
type Issues struct {
···
DidHandleMap: didHandleMap,
OrderedReactionKinds: db.OrderedReactionKinds,
-
Reactions: reactionCountMap,
-
UserReacted: userReactions,
+
Reactions: reactionCountMap,
+
UserReacted: userReactions,
})
}
···
_, err = client.RepoPutRecord(r.Context(), &comatproto.RepoPutRecord_Input{
Collection: tangled.RepoIssueStateNSID,
Repo: user.Did,
-
Rkey: appview.TID(),
+
Rkey: tid.TID(),
Record: &lexutil.LexiconTypeDecoder{
Val: &tangled.RepoIssueState{
Issue: issue.IssueAt,
···
}
commentId := mathrand.IntN(1000000)
-
rkey := appview.TID()
+
rkey := tid.TID()
err := db.NewIssueComment(rp.db, &db.Comment{
OwnerDid: user.Did,
···
resp, err := client.RepoPutRecord(r.Context(), &comatproto.RepoPutRecord_Input{
Collection: tangled.RepoIssueNSID,
Repo: user.Did,
-
Rkey: appview.TID(),
+
Rkey: tid.TID(),
Record: &lexutil.LexiconTypeDecoder{
Val: &tangled.RepoIssue{
Repo: atUri,
+2 -2
appview/knots/knots.go
···
"github.com/go-chi/chi/v5"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/config"
"tangled.sh/tangled.sh/core/appview/db"
"tangled.sh/tangled.sh/core/appview/idresolver"
···
"tangled.sh/tangled.sh/core/eventconsumer"
"tangled.sh/tangled.sh/core/knotclient"
"tangled.sh/tangled.sh/core/rbac"
+
"tangled.sh/tangled.sh/core/tid"
comatproto "github.com/bluesky-social/indigo/api/atproto"
lexutil "github.com/bluesky-social/indigo/lex/util"
···
resp, err := client.RepoPutRecord(r.Context(), &comatproto.RepoPutRecord_Input{
Collection: tangled.KnotMemberNSID,
Repo: currentUser.Did,
-
Rkey: appview.TID(),
+
Rkey: tid.TID(),
Record: &lexutil.LexiconTypeDecoder{
Val: &tangled.KnotMember{
Subject: subjectIdentity.DID.String(),
+4 -4
appview/pulls/pulls.go
···
"time"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/config"
"tangled.sh/tangled.sh/core/appview/db"
"tangled.sh/tangled.sh/core/appview/idresolver"
···
"tangled.sh/tangled.sh/core/appview/reporesolver"
"tangled.sh/tangled.sh/core/knotclient"
"tangled.sh/tangled.sh/core/patchutil"
+
"tangled.sh/tangled.sh/core/tid"
"tangled.sh/tangled.sh/core/types"
"github.com/bluekeyes/go-gitdiff/gitdiff"
···
atResp, err := client.RepoPutRecord(r.Context(), &comatproto.RepoPutRecord_Input{
Collection: tangled.RepoPullCommentNSID,
Repo: user.Did,
-
Rkey: appview.TID(),
+
Rkey: tid.TID(),
Record: &lexutil.LexiconTypeDecoder{
Val: &tangled.RepoPullComment{
Repo: &atUri,
···
body = formatPatches[0].Body
-
rkey := appview.TID()
+
rkey := tid.TID()
initialSubmission := db.PullSubmission{
Patch: patch,
SourceRev: sourceRev,
···
title := fp.Title
body := fp.Body
-
rkey := appview.TID()
+
rkey := tid.TID()
initialSubmission := db.PullSubmission{
Patch: fp.Raw,
+2 -2
appview/repo/artifact.go
···
"github.com/go-git/go-git/v5/plumbing"
"github.com/ipfs/go-cid"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/db"
"tangled.sh/tangled.sh/core/appview/pages"
"tangled.sh/tangled.sh/core/appview/reporesolver"
"tangled.sh/tangled.sh/core/knotclient"
+
"tangled.sh/tangled.sh/core/tid"
"tangled.sh/tangled.sh/core/types"
)
···
log.Println("uploaded blob", humanize.Bytes(uint64(uploadBlobResp.Blob.Size)), uploadBlobResp.Blob.Ref.String())
-
rkey := appview.TID()
+
rkey := tid.TID()
createdAt := time.Now()
putRecordResp, err := client.RepoPutRecord(r.Context(), &comatproto.RepoPutRecord_Input{
+2 -2
appview/repo/repo.go
···
"time"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/commitverify"
"tangled.sh/tangled.sh/core/appview/config"
"tangled.sh/tangled.sh/core/appview/db"
···
"tangled.sh/tangled.sh/core/knotclient"
"tangled.sh/tangled.sh/core/patchutil"
"tangled.sh/tangled.sh/core/rbac"
+
"tangled.sh/tangled.sh/core/tid"
"tangled.sh/tangled.sh/core/types"
securejoin "github.com/cyphar/filepath-securejoin"
···
forkSourceUrl := fmt.Sprintf("%s://%s/%s/%s", uri, f.Knot, f.OwnerDid(), f.RepoName)
sourceAt := f.RepoAt.String()
-
rkey := appview.TID()
+
rkey := tid.TID()
repo := &db.Repo{
Did: user.Did,
Name: forkName,
+2 -2
appview/settings/settings.go
···
"github.com/go-chi/chi/v5"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/config"
"tangled.sh/tangled.sh/core/appview/db"
"tangled.sh/tangled.sh/core/appview/email"
"tangled.sh/tangled.sh/core/appview/middleware"
"tangled.sh/tangled.sh/core/appview/oauth"
"tangled.sh/tangled.sh/core/appview/pages"
+
"tangled.sh/tangled.sh/core/tid"
comatproto "github.com/bluesky-social/indigo/api/atproto"
lexutil "github.com/bluesky-social/indigo/lex/util"
···
return
}
-
rkey := appview.TID()
+
rkey := tid.TID()
tx, err := s.Db.Begin()
if err != nil {
+2 -2
appview/spindles/spindles.go
···
"github.com/go-chi/chi/v5"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/config"
"tangled.sh/tangled.sh/core/appview/db"
"tangled.sh/tangled.sh/core/appview/idresolver"
···
"tangled.sh/tangled.sh/core/appview/pages"
verify "tangled.sh/tangled.sh/core/appview/spindleverify"
"tangled.sh/tangled.sh/core/rbac"
+
"tangled.sh/tangled.sh/core/tid"
comatproto "github.com/bluesky-social/indigo/api/atproto"
"github.com/bluesky-social/indigo/atproto/syntax"
···
s.Enforcer.E.LoadPolicy()
}()
-
rkey := appview.TID()
+
rkey := tid.TID()
// add member to db
if err = db.AddSpindleMember(tx, db.SpindleMember{
+4 -4
appview/state/follow.go
···
comatproto "github.com/bluesky-social/indigo/api/atproto"
lexutil "github.com/bluesky-social/indigo/lex/util"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/db"
"tangled.sh/tangled.sh/core/appview/pages"
+
"tangled.sh/tangled.sh/core/tid"
)
func (s *State) Follow(w http.ResponseWriter, r *http.Request) {
···
switch r.Method {
case http.MethodPost:
createdAt := time.Now().Format(time.RFC3339)
-
rkey := appview.TID()
+
rkey := tid.TID()
resp, err := client.RepoPutRecord(r.Context(), &comatproto.RepoPutRecord_Input{
Collection: tangled.GraphFollowNSID,
Repo: currentUser.Did,
···
log.Println("created atproto record: ", resp.Uri)
follow := &db.Follow{
-
UserDid: currentUser.Did,
+
UserDid: currentUser.Did,
SubjectDid: subjectIdent.DID.String(),
-
Rkey: rkey,
+
Rkey: rkey,
}
err = db.AddFollow(s.db, follow)
+8 -8
appview/state/reaction.go
···
lexutil "github.com/bluesky-social/indigo/lex/util"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/db"
"tangled.sh/tangled.sh/core/appview/pages"
+
"tangled.sh/tangled.sh/core/tid"
)
func (s *State) React(w http.ResponseWriter, r *http.Request) {
···
switch r.Method {
case http.MethodPost:
createdAt := time.Now().Format(time.RFC3339)
-
rkey := appview.TID()
+
rkey := tid.TID()
resp, err := client.RepoPutRecord(r.Context(), &comatproto.RepoPutRecord_Input{
Collection: tangled.FeedReactionNSID,
Repo: currentUser.Did,
···
log.Println("created atproto record: ", resp.Uri)
s.pages.ThreadReactionFragment(w, pages.ThreadReactionFragmentParams{
-
ThreadAt: subjectUri,
-
Kind: reactionKind,
-
Count: count,
+
ThreadAt: subjectUri,
+
Kind: reactionKind,
+
Count: count,
IsReacted: true,
})
···
}
s.pages.ThreadReactionFragment(w, pages.ThreadReactionFragmentParams{
-
ThreadAt: subjectUri,
-
Kind: reactionKind,
-
Count: count,
+
ThreadAt: subjectUri,
+
Kind: reactionKind,
+
Count: count,
IsReacted: false,
})
+4 -4
appview/state/star.go
···
"github.com/bluesky-social/indigo/atproto/syntax"
lexutil "github.com/bluesky-social/indigo/lex/util"
"tangled.sh/tangled.sh/core/api/tangled"
-
"tangled.sh/tangled.sh/core/appview"
"tangled.sh/tangled.sh/core/appview/db"
"tangled.sh/tangled.sh/core/appview/pages"
+
"tangled.sh/tangled.sh/core/tid"
)
func (s *State) Star(w http.ResponseWriter, r *http.Request) {
···
switch r.Method {
case http.MethodPost:
createdAt := time.Now().Format(time.RFC3339)
-
rkey := appview.TID()
+
rkey := tid.TID()
resp, err := client.RepoPutRecord(r.Context(), &comatproto.RepoPutRecord_Input{
Collection: tangled.FeedStarNSID,
Repo: currentUser.Did,
···
star := &db.Star{
StarredByDid: currentUser.Did,
-
RepoAt: subjectUri,
-
Rkey: rkey,
+
RepoAt: subjectUri,
+
Rkey: rkey,
}
err = db.AddStar(s.db, star)
+2 -346
appview/state/state.go
···
"time"
comatproto "github.com/bluesky-social/indigo/api/atproto"
-
"github.com/bluesky-social/indigo/atproto/syntax"
lexutil "github.com/bluesky-social/indigo/lex/util"
securejoin "github.com/cyphar/filepath-securejoin"
"github.com/go-chi/chi/v5"
···
"tangled.sh/tangled.sh/core/knotclient"
tlog "tangled.sh/tangled.sh/core/log"
"tangled.sh/tangled.sh/core/rbac"
+
"tangled.sh/tangled.sh/core/tid"
)
type State struct {
···
notifier notify.Notifier
oauth *oauth.OAuth
enforcer *rbac.Enforcer
-
tidClock syntax.TIDClock
pages *pages.Pages
sess *session.SessionStore
idResolver *idresolver.Resolver
···
if err != nil {
return nil, fmt.Errorf("failed to create enforcer: %w", err)
}
-
-
clock := syntax.NewTIDClock(0)
pgs := pages.NewPages(config)
···
notifier,
oauth,
enforcer,
-
clock,
pgs,
sess,
res,
···
return state, nil
}
-
func TID(c *syntax.TIDClock) string {
-
return c.Next().String()
-
}
-
func (s *State) Timeline(w http.ResponseWriter, r *http.Request) {
user := s.oauth.GetUser(r)
···
return
}
-
// requires auth
-
// func (s *State) RegistrationKey(w http.ResponseWriter, r *http.Request) {
-
// switch r.Method {
-
// case http.MethodGet:
-
// // list open registrations under this did
-
//
-
// return
-
// case http.MethodPost:
-
// session, err := s.oauth.Stores().Get(r, oauth.SessionName)
-
// if err != nil || session.IsNew {
-
// log.Println("unauthorized attempt to generate registration key")
-
// http.Error(w, "Forbidden", http.StatusUnauthorized)
-
// return
-
// }
-
//
-
// did := session.Values[oauth.SessionDid].(string)
-
//
-
// // check if domain is valid url, and strip extra bits down to just host
-
// domain := r.FormValue("domain")
-
// if domain == "" {
-
// http.Error(w, "Invalid form", http.StatusBadRequest)
-
// return
-
// }
-
//
-
// key, err := db.GenerateRegistrationKey(s.db, domain, did)
-
//
-
// if err != nil {
-
// log.Println(err)
-
// http.Error(w, "unable to register this domain", http.StatusNotAcceptable)
-
// return
-
// }
-
//
-
// w.Write([]byte(key))
-
// }
-
// }
-
func (s *State) Keys(w http.ResponseWriter, r *http.Request) {
user := chi.URLParam(r, "user")
user = strings.TrimPrefix(user, "@")
···
}
}
-
// create a signed request and check if a node responds to that
-
// func (s *State) InitKnotServer(w http.ResponseWriter, r *http.Request) {
-
// user := s.oauth.GetUser(r)
-
//
-
// noticeId := "operation-error"
-
// defaultErr := "Failed to register spindle. Try again later."
-
// fail := func() {
-
// s.pages.Notice(w, noticeId, defaultErr)
-
// }
-
//
-
// domain := chi.URLParam(r, "domain")
-
// if domain == "" {
-
// http.Error(w, "malformed url", http.StatusBadRequest)
-
// return
-
// }
-
// log.Println("checking ", domain)
-
//
-
// secret, err := db.GetRegistrationKey(s.db, domain)
-
// if err != nil {
-
// log.Printf("no key found for domain %s: %s\n", domain, err)
-
// return
-
// }
-
//
-
// client, err := knotclient.NewSignedClient(domain, secret, s.config.Core.Dev)
-
// if err != nil {
-
// log.Println("failed to create client to ", domain)
-
// }
-
//
-
// resp, err := client.Init(user.Did)
-
// if err != nil {
-
// w.Write([]byte("no dice"))
-
// log.Println("domain was unreachable after 5 seconds")
-
// return
-
// }
-
//
-
// if resp.StatusCode == http.StatusConflict {
-
// log.Println("status conflict", resp.StatusCode)
-
// w.Write([]byte("already registered, sorry!"))
-
// return
-
// }
-
//
-
// if resp.StatusCode != http.StatusNoContent {
-
// log.Println("status nok", resp.StatusCode)
-
// w.Write([]byte("no dice"))
-
// return
-
// }
-
//
-
// // verify response mac
-
// signature := resp.Header.Get("X-Signature")
-
// signatureBytes, err := hex.DecodeString(signature)
-
// if err != nil {
-
// return
-
// }
-
//
-
// expectedMac := hmac.New(sha256.New, []byte(secret))
-
// expectedMac.Write([]byte("ok"))
-
//
-
// if !hmac.Equal(expectedMac.Sum(nil), signatureBytes) {
-
// log.Printf("response body signature mismatch: %x\n", signatureBytes)
-
// return
-
// }
-
//
-
// tx, err := s.db.BeginTx(r.Context(), nil)
-
// if err != nil {
-
// log.Println("failed to start tx", err)
-
// http.Error(w, err.Error(), http.StatusInternalServerError)
-
// return
-
// }
-
// defer func() {
-
// tx.Rollback()
-
// err = s.enforcer.E.LoadPolicy()
-
// if err != nil {
-
// log.Println("failed to rollback policies")
-
// }
-
// }()
-
//
-
// // mark as registered
-
// err = db.Register(tx, domain)
-
// if err != nil {
-
// log.Println("failed to register domain", err)
-
// http.Error(w, err.Error(), http.StatusInternalServerError)
-
// return
-
// }
-
//
-
// // set permissions for this did as owner
-
// reg, err := db.RegistrationByDomain(tx, domain)
-
// if err != nil {
-
// log.Println("failed to register domain", err)
-
// http.Error(w, err.Error(), http.StatusInternalServerError)
-
// return
-
// }
-
//
-
// // add basic acls for this domain
-
// err = s.enforcer.AddKnot(domain)
-
// if err != nil {
-
// log.Println("failed to setup owner of domain", err)
-
// http.Error(w, err.Error(), http.StatusInternalServerError)
-
// return
-
// }
-
//
-
// // add this did as owner of this domain
-
// err = s.enforcer.AddKnotOwner(domain, reg.ByDid)
-
// if err != nil {
-
// log.Println("failed to setup owner of domain", err)
-
// http.Error(w, err.Error(), http.StatusInternalServerError)
-
// return
-
// }
-
//
-
// err = tx.Commit()
-
// if err != nil {
-
// log.Println("failed to commit changes", err)
-
// http.Error(w, err.Error(), http.StatusInternalServerError)
-
// return
-
// }
-
//
-
// err = s.enforcer.E.SavePolicy()
-
// if err != nil {
-
// log.Println("failed to update ACLs", err)
-
// http.Error(w, err.Error(), http.StatusInternalServerError)
-
// return
-
// }
-
//
-
// // add this knot to knotstream
-
// go s.knotstream.AddSource(
-
// context.Background(),
-
// eventconsumer.NewKnotSource(domain),
-
// )
-
//
-
// w.Write([]byte("check success"))
-
// }
-
-
// func (s *State) KnotServerInfo(w http.ResponseWriter, r *http.Request) {
-
// domain := chi.URLParam(r, "domain")
-
// if domain == "" {
-
// http.Error(w, "malformed url", http.StatusBadRequest)
-
// return
-
// }
-
//
-
// user := s.oauth.GetUser(r)
-
// reg, err := db.RegistrationByDomain(s.db, domain)
-
// if err != nil {
-
// w.Write([]byte("failed to pull up registration info"))
-
// return
-
// }
-
//
-
// var members []string
-
// if reg.Registered != nil {
-
// members, err = s.enforcer.GetUserByRole("server:member", domain)
-
// if err != nil {
-
// w.Write([]byte("failed to fetch member list"))
-
// return
-
// }
-
// }
-
//
-
// var didsToResolve []string
-
// for _, m := range members {
-
// didsToResolve = append(didsToResolve, m)
-
// }
-
// didsToResolve = append(didsToResolve, reg.ByDid)
-
// resolvedIds := s.idResolver.ResolveIdents(r.Context(), didsToResolve)
-
// didHandleMap := make(map[string]string)
-
// for _, identity := range resolvedIds {
-
// if !identity.Handle.IsInvalidHandle() {
-
// didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String())
-
// } else {
-
// didHandleMap[identity.DID.String()] = identity.DID.String()
-
// }
-
// }
-
//
-
// ok, err := s.enforcer.IsKnotOwner(user.Did, domain)
-
// isOwner := err == nil && ok
-
//
-
// p := pages.KnotParams{
-
// LoggedInUser: user,
-
// DidHandleMap: didHandleMap,
-
// Registration: reg,
-
// Members: members,
-
// IsOwner: isOwner,
-
// }
-
//
-
// s.pages.Knot(w, p)
-
// }
-
-
// get knots registered by this user
-
// func (s *State) Knots(w http.ResponseWriter, r *http.Request) {
-
// // for now, this is just pubkeys
-
// user := s.oauth.GetUser(r)
-
// registrations, err := db.RegistrationsByDid(s.db, user.Did)
-
// if err != nil {
-
// log.Println(err)
-
// }
-
//
-
// s.pages.Knots(w, pages.KnotsParams{
-
// LoggedInUser: user,
-
// Registrations: registrations,
-
// })
-
// }
-
-
// list members of domain, requires auth and requires owner status
-
// func (s *State) ListMembers(w http.ResponseWriter, r *http.Request) {
-
// domain := chi.URLParam(r, "domain")
-
// if domain == "" {
-
// http.Error(w, "malformed url", http.StatusBadRequest)
-
// return
-
// }
-
//
-
// // list all members for this domain
-
// memberDids, err := s.enforcer.GetUserByRole("server:member", domain)
-
// if err != nil {
-
// w.Write([]byte("failed to fetch member list"))
-
// return
-
// }
-
//
-
// w.Write([]byte(strings.Join(memberDids, "\n")))
-
// return
-
// }
-
-
// add member to domain, requires auth and requires invite access
-
// func (s *State) AddMember(w http.ResponseWriter, r *http.Request) {
-
// domain := chi.URLParam(r, "domain")
-
// if domain == "" {
-
// http.Error(w, "malformed url", http.StatusBadRequest)
-
// return
-
// }
-
//
-
// subjectIdentifier := r.FormValue("subject")
-
// if subjectIdentifier == "" {
-
// http.Error(w, "malformed form", http.StatusBadRequest)
-
// return
-
// }
-
//
-
// subjectIdentity, err := s.idResolver.ResolveIdent(r.Context(), subjectIdentifier)
-
// if err != nil {
-
// w.Write([]byte("failed to resolve member did to a handle"))
-
// return
-
// }
-
// log.Printf("adding %s to %s\n", subjectIdentity.Handle.String(), domain)
-
//
-
// // announce this relation into the firehose, store into owners' pds
-
// client, err := s.oauth.AuthorizedClient(r)
-
// if err != nil {
-
// http.Error(w, "failed to authorize client", http.StatusInternalServerError)
-
// return
-
// }
-
// currentUser := s.oauth.GetUser(r)
-
// createdAt := time.Now().Format(time.RFC3339)
-
// resp, err := client.RepoPutRecord(r.Context(), &comatproto.RepoPutRecord_Input{
-
// Collection: tangled.KnotMemberNSID,
-
// Repo: currentUser.Did,
-
// Rkey: appview.TID(),
-
// Record: &lexutil.LexiconTypeDecoder{
-
// Val: &tangled.KnotMember{
-
// Subject: subjectIdentity.DID.String(),
-
// Domain: domain,
-
// CreatedAt: createdAt,
-
// }},
-
// })
-
//
-
// // invalid record
-
// if err != nil {
-
// log.Printf("failed to create record: %s", err)
-
// return
-
// }
-
// log.Println("created atproto record: ", resp.Uri)
-
//
-
// secret, err := db.GetRegistrationKey(s.db, domain)
-
// if err != nil {
-
// log.Printf("no key found for domain %s: %s\n", domain, err)
-
// return
-
// }
-
//
-
// ksClient, err := knotclient.NewSignedClient(domain, secret, s.config.Core.Dev)
-
// if err != nil {
-
// log.Println("failed to create client to ", domain)
-
// return
-
// }
-
//
-
// ksResp, err := ksClient.AddMember(subjectIdentity.DID.String())
-
// if err != nil {
-
// log.Printf("failed to make request to %s: %s", domain, err)
-
// return
-
// }
-
//
-
// if ksResp.StatusCode != http.StatusNoContent {
-
// w.Write([]byte(fmt.Sprint("knotserver failed to add member: ", err)))
-
// return
-
// }
-
//
-
// err = s.enforcer.AddKnotMember(domain, subjectIdentity.DID.String())
-
// if err != nil {
-
// w.Write([]byte(fmt.Sprint("failed to add member: ", err)))
-
// return
-
// }
-
//
-
// w.Write([]byte(fmt.Sprint("added member: ", subjectIdentity.Handle.String())))
-
// }
-
-
// func (s *State) RemoveMember(w http.ResponseWriter, r *http.Request) {
-
// }
-
func validateRepoName(name string) error {
// check for path traversal attempts
if name == "." || name == ".." ||
···
return
}
-
rkey := appview.TID()
+
rkey := tid.TID()
repo := &db.Repo{
Did: user.Did,
Name: repoName,
-11
appview/tid.go
···
-
package appview
-
-
import (
-
"github.com/bluesky-social/indigo/atproto/syntax"
-
)
-
-
var c syntax.TIDClock = syntax.NewTIDClock(0)
-
-
func TID() string {
-
return c.Next().String()
-
}
+1 -1
go.mod
···
require (
github.com/Blank-Xu/sql-adapter v1.1.1
github.com/alecthomas/chroma/v2 v2.15.0
+
github.com/avast/retry-go/v4 v4.6.1
github.com/bluekeyes/go-gitdiff v0.8.1
github.com/bluesky-social/indigo v0.0.0-20250520232546-236dd575c91e
github.com/bluesky-social/jetstream v0.0.0-20241210005130-ea96859b93d1
···
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/ProtonMail/go-crypto v1.2.0 // indirect
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect
-
github.com/avast/retry-go/v4 v4.6.1 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bmatcuk/doublestar/v4 v4.7.1 // indirect