+6
appview/db/repos.go
+6
appview/db/repos.go
···
6
"time"
7
8
"github.com/bluesky-social/indigo/atproto/syntax"
9
"tangled.sh/tangled.sh/core/api/tangled"
10
)
11
···
27
28
func (r Repo) RepoAt() syntax.ATURI {
29
return syntax.ATURI(fmt.Sprintf("at://%s/%s/%s", r.Did, tangled.RepoNSID, r.Rkey))
30
}
31
32
func GetAllRepos(e Execer, limit int) ([]Repo, error) {
···
6
"time"
7
8
"github.com/bluesky-social/indigo/atproto/syntax"
9
+
securejoin "github.com/cyphar/filepath-securejoin"
10
"tangled.sh/tangled.sh/core/api/tangled"
11
)
12
···
28
29
func (r Repo) RepoAt() syntax.ATURI {
30
return syntax.ATURI(fmt.Sprintf("at://%s/%s/%s", r.Did, tangled.RepoNSID, r.Rkey))
31
+
}
32
+
33
+
func (r Repo) DidSlashRepo() string {
34
+
p, _ := securejoin.SecureJoin(r.Did, r.Name)
35
+
return p
36
}
37
38
func GetAllRepos(e Execer, limit int) ([]Repo, error) {
+14
-3
appview/ingester.go
+14
-3
appview/ingester.go
···
13
"github.com/ipfs/go-cid"
14
"tangled.sh/tangled.sh/core/api/tangled"
15
"tangled.sh/tangled.sh/core/appview/db"
16
)
17
18
type Ingester func(ctx context.Context, e *models.Event) error
19
20
-
func Ingest(d db.DbWrapper) Ingester {
21
return func(ctx context.Context, e *models.Event) error {
22
var err error
23
defer func() {
···
40
case tangled.PublicKeyNSID:
41
ingestPublicKey(&d, e)
42
case tangled.RepoArtifactNSID:
43
-
ingestArtifact(&d, e)
44
case tangled.ActorProfileNSID:
45
ingestProfile(&d, e)
46
}
···
139
return nil
140
}
141
142
-
func ingestArtifact(d *db.DbWrapper, e *models.Event) error {
143
did := e.Did
144
var err error
145
···
155
156
repoAt, err := syntax.ParseATURI(record.Repo)
157
if err != nil {
158
return err
159
}
160
···
13
"github.com/ipfs/go-cid"
14
"tangled.sh/tangled.sh/core/api/tangled"
15
"tangled.sh/tangled.sh/core/appview/db"
16
+
"tangled.sh/tangled.sh/core/rbac"
17
)
18
19
type Ingester func(ctx context.Context, e *models.Event) error
20
21
+
func Ingest(d db.DbWrapper, enforcer *rbac.Enforcer) Ingester {
22
return func(ctx context.Context, e *models.Event) error {
23
var err error
24
defer func() {
···
41
case tangled.PublicKeyNSID:
42
ingestPublicKey(&d, e)
43
case tangled.RepoArtifactNSID:
44
+
ingestArtifact(&d, e, enforcer)
45
case tangled.ActorProfileNSID:
46
ingestProfile(&d, e)
47
}
···
140
return nil
141
}
142
143
+
func ingestArtifact(d *db.DbWrapper, e *models.Event, enforcer *rbac.Enforcer) error {
144
did := e.Did
145
var err error
146
···
156
157
repoAt, err := syntax.ParseATURI(record.Repo)
158
if err != nil {
159
+
return err
160
+
}
161
+
162
+
repo, err := db.GetRepoByAtUri(d, repoAt.String())
163
+
if err != nil {
164
+
return err
165
+
}
166
+
167
+
ok, err := enforcer.E.Enforce(did, repo.Knot, repo.DidSlashRepo(), "repo:push")
168
+
if err != nil || !ok {
169
return err
170
}
171
+1
-1
appview/state/state.go
+1
-1
appview/state/state.go