}()
apiPusher := pusher.APIFormat()
- apiRepo := repo.APIFormat(nil)
+ apiRepo := repo.APIFormat(AccessModeNone)
var shaSum string
switch opType {
Action: api.HookIssueLabelUpdated,
Index: issue.Index,
PullRequest: issue.PullRequest.APIFormat(),
- Repository: issue.Repo.APIFormat(nil),
+ Repository: issue.Repo.APIFormat(AccessModeNone),
Sender: doer.APIFormat(),
})
}
Action: api.HookIssueLabelCleared,
Index: issue.Index,
PullRequest: issue.PullRequest.APIFormat(),
- Repository: issue.Repo.APIFormat(nil),
+ Repository: issue.Repo.APIFormat(AccessModeNone),
Sender: doer.APIFormat(),
})
}
apiPullRequest := &api.PullRequestPayload{
Index: issue.Index,
PullRequest: issue.PullRequest.APIFormat(),
- Repository: repo.APIFormat(nil),
+ Repository: repo.APIFormat(AccessModeNone),
Sender: doer.APIFormat(),
}
if isClosed {
},
},
PullRequest: issue.PullRequest.APIFormat(),
- Repository: issue.Repo.APIFormat(nil),
+ Repository: issue.Repo.APIFormat(AccessModeNone),
Sender: doer.APIFormat(),
})
}
},
},
PullRequest: issue.PullRequest.APIFormat(),
- Repository: issue.Repo.APIFormat(nil),
+ Repository: issue.Repo.APIFormat(AccessModeNone),
Sender: doer.APIFormat(),
})
}
apiPullRequest := &api.PullRequestPayload{
Index: issue.Index,
PullRequest: issue.PullRequest.APIFormat(),
- Repository: issue.Repo.APIFormat(nil),
+ Repository: issue.Repo.APIFormat(AccessModeNone),
Sender: doer.APIFormat(),
}
if isRemoveAssignee {
Ref: pr.BaseBranch,
Sha: baseCommit.ID.String(),
RepoID: pr.BaseRepoID,
- Repository: pr.BaseRepo.APIFormat(nil),
+ Repository: pr.BaseRepo.APIFormat(AccessModeNone),
}
apiHeadBranchInfo := &api.PRBranchInfo{
Name: pr.HeadBranch,
Ref: pr.HeadBranch,
Sha: headCommit.ID.String(),
RepoID: pr.HeadRepoID,
- Repository: pr.HeadRepo.APIFormat(nil),
+ Repository: pr.HeadRepo.APIFormat(AccessModeNone),
}
apiPullRequest := &api.PullRequest{
ID: pr.ID,
Action: api.HookIssueClosed,
Index: pr.Index,
PullRequest: pr.APIFormat(),
- Repository: pr.Issue.Repo.APIFormat(nil),
+ Repository: pr.Issue.Repo.APIFormat(AccessModeNone),
Sender: doer.APIFormat(),
}); err != nil {
log.Error(4, "PrepareWebhooks: %v", err)
After: pr.MergedCommitID,
CompareURL: setting.AppURL + pr.BaseRepo.ComposeCompareURL(pr.MergeBase, pr.MergedCommitID),
Commits: ListToPushCommits(l).ToAPIPayloadCommits(pr.BaseRepo.HTMLURL()),
- Repo: pr.BaseRepo.APIFormat(nil),
+ Repo: pr.BaseRepo.APIFormat(AccessModeNone),
Pusher: pr.HeadRepo.MustOwner().APIFormat(),
Sender: doer.APIFormat(),
}
Action: api.HookIssueOpened,
Index: pull.Index,
PullRequest: pr.APIFormat(),
- Repository: repo.APIFormat(nil),
+ Repository: repo.APIFormat(AccessModeNone),
Sender: pull.Poster.APIFormat(),
}); err != nil {
log.Error(4, "PrepareWebhooks: %v", err)
Action: api.HookIssueSynchronized,
Index: pr.Issue.Index,
PullRequest: pr.Issue.PullRequest.APIFormat(),
- Repository: pr.Issue.Repo.APIFormat(nil),
+ Repository: pr.Issue.Repo.APIFormat(AccessModeNone),
Sender: doer.APIFormat(),
}); err != nil {
log.Error(4, "PrepareWebhooks [pull_id: %v]: %v", pr.ID, err)
// APIFormat converts a Repository to api.Repository
// Arguments that are allowed to be nil: permission
-func (repo *Repository) APIFormat(permission *api.Permission) *api.Repository {
+func (repo *Repository) APIFormat(mode AccessMode) *api.Repository {
cloneLink := repo.CloneLink()
+ permission := &api.Permission{
+ Admin: mode >= AccessModeAdmin,
+ Push: mode >= AccessModeWrite,
+ Pull: mode >= AccessModeRead,
+ }
return &api.Repository{
ID: repo.ID,
Owner: repo.Owner.APIFormat(),
repos := make([]*api.Repository, numOwnRepos+len(accessibleRepos))
for i := range ownRepos {
- repos[i] = ownRepos[i].APIFormat(&api.Permission{true, true, true})
+ repos[i] = ownRepos[i].APIFormat(models.AccessModeOwner)
}
i := numOwnRepos
for repo, access := range accessibleRepos {
- repos[i] = repo.APIFormat(&api.Permission{
- Admin: access >= models.AccessModeAdmin,
- Push: access >= models.AccessModeWrite,
- Pull: true,
- })
+ repos[i] = repo.APIFormat(access)
i++
}
return
}
- ctx.JSON(201, repo.APIFormat(&api.Permission{true, true, true}))
+ ctx.JSON(201, repo.APIFormat(models.AccessModeOwner))
}
// Create one repository of mine
}
log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName)
- ctx.JSON(201, repo.APIFormat(&api.Permission{true, true, true}))
+ ctx.JSON(201, repo.APIFormat(models.AccessModeAdmin))
}
// Get one repository
// see https://github.com/gogits/go-gogs-client/wiki/Repositories#get
func Get(ctx *context.APIContext) {
repo := ctx.Repo.Repository
- ctx.JSON(200, repo.APIFormat(&api.Permission{true, true, true}))
+ access, err := models.AccessLevel(ctx.User, repo)
+ if err != nil {
+ ctx.Error(500, "GetRepository", err)
+ return
+ }
+ ctx.JSON(200, repo.APIFormat(access))
}
// GetByID returns a single Repository
return
}
- ctx.JSON(200, repo.APIFormat(&api.Permission{true, true, true}))
+ access, err := models.AccessLevel(ctx.User, repo)
+ if err != nil {
+ ctx.Error(500, "GetRepositoryByID", err)
+ return
+ }
+ ctx.JSON(200, repo.APIFormat(access))
}
// Delete one repository
if err != nil {
return nil, err
}
+ user, err := models.GetUserByID(userID)
+ if err != nil {
+ return nil, err
+ }
repos := make([]*api.Repository, len(starredRepos))
for i, starred := range starredRepos {
- repos[i] = starred.APIFormat(&api.Permission{true, true, true})
+ access, err := models.AccessLevel(user, starred)
+ if err != nil {
+ return nil, err
+ }
+ repos[i] = starred.APIFormat(access)
}
return repos, nil
}
},
},
},
- Repo: ctx.Repo.Repository.APIFormat(nil),
+ Repo: ctx.Repo.Repository.APIFormat(models.AccessModeNone),
Pusher: apiUser,
Sender: apiUser,
}