···
"github.com/bluesky-social/indigo/atproto/identity"
15
-
"github.com/bluesky-social/indigo/atproto/syntax"
securejoin "github.com/cyphar/filepath-securejoin"
"github.com/go-chi/chi/v5"
"tangled.sh/tangled.sh/core/appview/config"
···
type ResolvedRepo struct {
OwnerId identity.Identity
···
func (rr *RepoResolver) Resolve(r *http.Request) (*ResolvedRepo, error) {
54
-
repoName := chi.URLParam(r, "repo")
55
-
knot, ok := r.Context().Value("knot").(string)
48
+
repo, ok := r.Context().Value("repo").(*db.Repo)
57
-
log.Println("malformed middleware")
50
+
log.Println("malformed middleware: `repo` not exist in context")
return nil, fmt.Errorf("malformed middleware")
id, ok := r.Context().Value("resolvedId").(identity.Identity)
···
return nil, fmt.Errorf("malformed middleware")
66
-
repoAt, ok := r.Context().Value("repoAt").(string)
68
-
log.Println("malformed middleware")
69
-
return nil, fmt.Errorf("malformed middleware")
72
-
parsedRepoAt, err := syntax.ParseATURI(repoAt)
74
-
log.Println("malformed repo at-uri")
75
-
return nil, fmt.Errorf("malformed middleware")
ref := chi.URLParam(r, "ref")
81
-
us, err := knotclient.NewUnsignedClient(knot, rr.config.Core.Dev)
62
+
us, err := knotclient.NewUnsignedClient(repo.Knot, rr.config.Core.Dev)
86
-
defaultBranch, err := us.DefaultBranch(id.DID.String(), repoName)
67
+
defaultBranch, err := us.DefaultBranch(id.DID.String(), repo.Name)
···
currentDir := path.Dir(extractPathAfterRef(r.URL.EscapedPath(), ref))
96
-
// pass through values from the middleware
97
-
description, ok := r.Context().Value("repoDescription").(string)
98
-
addedAt, ok := r.Context().Value("repoAddedAt").(string)
99
-
spindle, ok := r.Context().Value("repoSpindle").(string)
104
-
RepoName: repoName,
105
-
RepoAt: parsedRepoAt,
106
-
Description: description,
107
-
CreatedAt: addedAt,
109
-
CurrentDir: currentDir,
81
+
CurrentDir: currentDir,
···
if handle != "" && !handle.IsInvalidHandle() {
129
-
p, _ = securejoin.SecureJoin(fmt.Sprintf("@%s", handle), f.RepoName)
100
+
p, _ = securejoin.SecureJoin(fmt.Sprintf("@%s", handle), f.Name)
131
-
p, _ = securejoin.SecureJoin(f.OwnerDid(), f.RepoName)
102
+
p, _ = securejoin.SecureJoin(f.OwnerDid(), f.Name)
137
-
func (f *ResolvedRepo) DidSlashRepo() string {
138
-
p, _ := securejoin.SecureJoin(f.OwnerDid(), f.RepoName)
func (f *ResolvedRepo) Collaborators(ctx context.Context) ([]pages.Collaborator, error) {
repoCollaborators, err := f.rr.enforcer.E.GetImplicitUsersForResourceByDomain(f.DidSlashRepo(), f.Knot)
···
// this function is a bit weird since it now returns RepoInfo from an entirely different
// package. we should refactor this or get rid of RepoInfo entirely.
func (f *ResolvedRepo) RepoInfo(user *oauth.User) repoinfo.RepoInfo {
156
+
repoAt := f.RepoAt()
192
-
isStarred = db.GetStarStatus(f.rr.execer, user.Did, syntax.ATURI(f.RepoAt))
159
+
isStarred = db.GetStarStatus(f.rr.execer, user.Did, repoAt)
195
-
starCount, err := db.GetStarCount(f.rr.execer, f.RepoAt)
162
+
starCount, err := db.GetStarCount(f.rr.execer, repoAt)
197
-
log.Println("failed to get star count for ", f.RepoAt)
164
+
log.Println("failed to get star count for ", repoAt)
199
-
issueCount, err := db.GetIssueCount(f.rr.execer, f.RepoAt)
166
+
issueCount, err := db.GetIssueCount(f.rr.execer, repoAt)
201
-
log.Println("failed to get issue count for ", f.RepoAt)
168
+
log.Println("failed to get issue count for ", repoAt)
203
-
pullCount, err := db.GetPullCount(f.rr.execer, f.RepoAt)
170
+
pullCount, err := db.GetPullCount(f.rr.execer, repoAt)
205
-
log.Println("failed to get issue count for ", f.RepoAt)
172
+
log.Println("failed to get issue count for ", repoAt)
207
-
source, err := db.GetRepoSource(f.rr.execer, f.RepoAt)
174
+
source, err := db.GetRepoSource(f.rr.execer, repoAt)
if errors.Is(err, sql.ErrNoRows) {
211
-
log.Println("failed to get repo source for ", f.RepoAt, err)
178
+
log.Println("failed to get repo source for ", repoAt, err)
···
log.Printf("failed to create unsigned client for %s: %v", knot, err)
236
-
result, err := us.Branches(f.OwnerDid(), f.RepoName)
203
+
result, err := us.Branches(f.OwnerDid(), f.Name)
238
-
log.Printf("failed to get branches for %s/%s: %v", f.OwnerDid(), f.RepoName, err)
205
+
log.Printf("failed to get branches for %s/%s: %v", f.OwnerDid(), f.Name, err)
if len(result.Branches) == 0 {
···
repoInfo := repoinfo.RepoInfo{
OwnerHandle: f.OwnerHandle(),
Description: f.Description,