m.Combo("/user/repos", middleware.ApiReqToken()).Get(v1.ListMyRepos). | m.Combo("/user/repos", middleware.ApiReqToken()).Get(v1.ListMyRepos). | ||||
Post(bind(api.CreateRepoOption{}), v1.CreateRepo) | Post(bind(api.CreateRepoOption{}), v1.CreateRepo) | ||||
m.Post("/org/:org/repos", middleware.ApiReqToken(), bind(api.CreateRepoOption{}), v1.CreateOrgRepo) | m.Post("/org/:org/repos", middleware.ApiReqToken(), bind(api.CreateRepoOption{}), v1.CreateOrgRepo) | ||||
// TODO: https://github.com/gogits/go-gogs-client/wiki | |||||
m.Group("/repos", func() { | m.Group("/repos", func() { | ||||
m.Get("/search", v1.SearchRepos) | m.Get("/search", v1.SearchRepos) | ||||
m.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), v1.MigrateRepo) | m.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), v1.MigrateRepo) |
} | } | ||||
// GetAccessibleRepositories finds all repositories where a user has access to, | // GetAccessibleRepositories finds all repositories where a user has access to, | ||||
// besides his own. | |||||
// besides he/she owns. | |||||
func (u *User) GetAccessibleRepositories() (map[*Repository]AccessMode, error) { | func (u *User) GetAccessibleRepositories() (map[*Repository]AccessMode, error) { | ||||
accesses := make([]*Access, 0, 10) | accesses := make([]*Access, 0, 10) | ||||
if err := x.Find(&accesses, &Access{UserID: u.Id}); err != nil { | if err := x.Find(&accesses, &Access{UserID: u.Id}); err != nil { |
if _, err = sess.Id(actID).Update(&Action{ | if _, err = sess.Id(actID).Update(&Action{ | ||||
Content: string(p), | Content: string(p), | ||||
}); err != nil { | }); err != nil { | ||||
return fmt.Errorf("update action[%s]: %v", actID, err) | |||||
return fmt.Errorf("update action[%d]: %v", actID, err) | |||||
} | } | ||||
} | } | ||||
return sess.Commit() | return sess.Commit() |
return | return | ||||
} | } | ||||
ctx.JSON(200, ToApiRepository(owner, repo, api.Permission{true, true, true})) | |||||
ctx.JSON(201, ToApiRepository(owner, repo, api.Permission{true, true, true})) | |||||
} | } | ||||
// POST /user/repos | // POST /user/repos | ||||
i := numOwnRepos | i := numOwnRepos | ||||
for repo, access := range accessibleRepos { | for repo, access := range accessibleRepos { | ||||
if err = repo.GetOwner(); err != nil { | |||||
ctx.JSON(500, &base.ApiJsonErr{"GetOwner: " + err.Error(), base.DOC_URL}) | |||||
return | |||||
} | |||||
repos[i] = ToApiRepository(repo.Owner, repo, api.Permission{false, access >= models.ACCESS_MODE_WRITE, true}) | |||||
// FIXME: cache result to reduce DB query? | |||||
if repo.Owner.IsOrganization() && repo.Owner.IsOwnedBy(ctx.User.Id) { | |||||
repos[i].Permissions.Admin = true | |||||
} | |||||
repos[i] = ToApiRepository(repo.Owner, repo, api.Permission{ | |||||
Admin: access >= models.ACCESS_MODE_ADMIN, | |||||
Push: access >= models.ACCESS_MODE_WRITE, | |||||
Pull: true, | |||||
}) | |||||
i++ | i++ | ||||
} | } | ||||
"github.com/gogits/gogs/models" | "github.com/gogits/gogs/models" | ||||
"github.com/gogits/gogs/modules/base" | "github.com/gogits/gogs/modules/base" | ||||
"github.com/gogits/gogs/modules/middleware" | "github.com/gogits/gogs/modules/middleware" | ||||
"github.com/gogits/gogs/modules/setting" | |||||
) | ) | ||||
// ToApiUser converts user to API format. | // ToApiUser converts user to API format. | ||||
return &api.User{ | return &api.User{ | ||||
ID: u.Id, | ID: u.Id, | ||||
UserName: u.Name, | UserName: u.Name, | ||||
AvatarUrl: string(setting.Protocol) + u.AvatarLink(), | |||||
FullName: u.FullName, | |||||
Email: u.Email, | |||||
AvatarUrl: u.AvatarLink(), | |||||
} | } | ||||
} | } | ||||