···
"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,