Skip to content

Commit 35a6573

Browse files
committed
add get repo API
1 parent 04af4b2 commit 35a6573

File tree

2 files changed

+32
-13
lines changed

2 files changed

+32
-13
lines changed

cmd/web.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -224,20 +224,21 @@ func runWeb(ctx *cli.Context) {
224224

225225
m.Group("/repos", func() {
226226
m.Get("/search", v1.SearchRepos)
227+
})
227228

228-
m.Group("", func() {
229-
m.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), v1.MigrateRepo)
230-
m.Delete("/:username/:reponame", v1.DeleteRepo)
231-
}, middleware.ApiReqToken())
229+
m.Group("/repos", func() {
230+
m.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), v1.MigrateRepo)
231+
m.Combo("/:username/:reponame").Get(v1.GetRepo)
232+
m.Delete("/:username/:reponame", v1.DeleteRepo)
232233

233234
m.Group("/:username/:reponame", func() {
234235
m.Combo("/hooks").Get(v1.ListRepoHooks).
235236
Post(bind(api.CreateHookOption{}), v1.CreateRepoHook)
236237
m.Patch("/hooks/:id:int", bind(api.EditHookOption{}), v1.EditRepoHook)
237238
m.Get("/raw/*", middleware.RepoRef(), v1.GetRepoRawFile)
238239
m.Get("/archive/*", v1.GetRepoArchive)
239-
}, middleware.ApiRepoAssignment(), middleware.ApiReqToken())
240-
})
240+
}, middleware.ApiRepoAssignment())
241+
}, middleware.ApiReqToken())
241242

242243
m.Any("/*", func(ctx *middleware.Context) {
243244
ctx.Error(404)

routers/api/v1/repo.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -252,37 +252,55 @@ func MigrateRepo(ctx *middleware.Context, form auth.MigrateRepoForm) {
252252
ctx.JSON(201, ToApiRepository(ctxUser, repo, api.Permission{true, true, true}))
253253
}
254254

255-
func DeleteRepo(ctx *middleware.Context) {
256-
user, err := models.GetUserByName(ctx.Params(":username"))
255+
func parseOwnerAndRepo(ctx *middleware.Context) (*models.User, *models.Repository) {
256+
owner, err := models.GetUserByName(ctx.Params(":username"))
257257
if err != nil {
258258
if models.IsErrUserNotExist(err) {
259259
ctx.APIError(422, "", err)
260260
} else {
261261
ctx.APIError(500, "GetUserByName", err)
262262
}
263-
return
263+
return nil, nil
264264
}
265265

266-
repo, err := models.GetRepositoryByName(user.Id, ctx.Params(":reponame"))
266+
repo, err := models.GetRepositoryByName(owner.Id, ctx.Params(":reponame"))
267267
if err != nil {
268268
if models.IsErrRepoNotExist(err) {
269269
ctx.Error(404)
270270
} else {
271271
ctx.APIError(500, "GetRepositoryByName", err)
272272
}
273+
return nil, nil
274+
}
275+
276+
return owner, repo
277+
}
278+
279+
func GetRepo(ctx *middleware.Context) {
280+
owner, repo := parseOwnerAndRepo(ctx)
281+
if ctx.Written() {
282+
return
283+
}
284+
285+
ctx.JSON(200, ToApiRepository(owner, repo, api.Permission{true, true, true}))
286+
}
287+
288+
func DeleteRepo(ctx *middleware.Context) {
289+
owner, repo := parseOwnerAndRepo(ctx)
290+
if ctx.Written() {
273291
return
274292
}
275293

276-
if user.IsOrganization() && !user.IsOwnedBy(ctx.User.Id) {
294+
if owner.IsOrganization() && !owner.IsOwnedBy(ctx.User.Id) {
277295
ctx.APIError(403, "", "Given user is not owner of organization.")
278296
return
279297
}
280298

281-
if err := models.DeleteRepository(user.Id, repo.ID); err != nil {
299+
if err := models.DeleteRepository(owner.Id, repo.ID); err != nil {
282300
ctx.APIError(500, "DeleteRepository", err)
283301
return
284302
}
285303

286-
log.Trace("Repository deleted: %s/%s", user.Name, repo.Name)
304+
log.Trace("Repository deleted: %s/%s", owner.Name, repo.Name)
287305
ctx.Status(204)
288306
}

0 commit comments

Comments
 (0)