From 35a65736fa1361d1d0fb83217f95d7aa8ca71336 Mon Sep 17 00:00:00 2001
From: Unknwon <u@gogs.io>
Date: Thu, 22 Oct 2015 17:46:07 -0400
Subject: add get repo API

---
 routers/api/v1/repo.go | 32 +++++++++++++++++++++++++-------
 1 file changed, 25 insertions(+), 7 deletions(-)

(limited to 'routers/api/v1')

diff --git a/routers/api/v1/repo.go b/routers/api/v1/repo.go
index 9cdb16f846..712655bf40 100644
--- a/routers/api/v1/repo.go
+++ b/routers/api/v1/repo.go
@@ -252,37 +252,55 @@ func MigrateRepo(ctx *middleware.Context, form auth.MigrateRepoForm) {
 	ctx.JSON(201, ToApiRepository(ctxUser, repo, api.Permission{true, true, true}))
 }
 
-func DeleteRepo(ctx *middleware.Context) {
-	user, err := models.GetUserByName(ctx.Params(":username"))
+func parseOwnerAndRepo(ctx *middleware.Context) (*models.User, *models.Repository) {
+	owner, err := models.GetUserByName(ctx.Params(":username"))
 	if err != nil {
 		if models.IsErrUserNotExist(err) {
 			ctx.APIError(422, "", err)
 		} else {
 			ctx.APIError(500, "GetUserByName", err)
 		}
-		return
+		return nil, nil
 	}
 
-	repo, err := models.GetRepositoryByName(user.Id, ctx.Params(":reponame"))
+	repo, err := models.GetRepositoryByName(owner.Id, ctx.Params(":reponame"))
 	if err != nil {
 		if models.IsErrRepoNotExist(err) {
 			ctx.Error(404)
 		} else {
 			ctx.APIError(500, "GetRepositoryByName", err)
 		}
+		return nil, nil
+	}
+
+	return owner, repo
+}
+
+func GetRepo(ctx *middleware.Context) {
+	owner, repo := parseOwnerAndRepo(ctx)
+	if ctx.Written() {
+		return
+	}
+
+	ctx.JSON(200, ToApiRepository(owner, repo, api.Permission{true, true, true}))
+}
+
+func DeleteRepo(ctx *middleware.Context) {
+	owner, repo := parseOwnerAndRepo(ctx)
+	if ctx.Written() {
 		return
 	}
 
-	if user.IsOrganization() && !user.IsOwnedBy(ctx.User.Id) {
+	if owner.IsOrganization() && !owner.IsOwnedBy(ctx.User.Id) {
 		ctx.APIError(403, "", "Given user is not owner of organization.")
 		return
 	}
 
-	if err := models.DeleteRepository(user.Id, repo.ID); err != nil {
+	if err := models.DeleteRepository(owner.Id, repo.ID); err != nil {
 		ctx.APIError(500, "DeleteRepository", err)
 		return
 	}
 
-	log.Trace("Repository deleted: %s/%s", user.Name, repo.Name)
+	log.Trace("Repository deleted: %s/%s", owner.Name, repo.Name)
 	ctx.Status(204)
 }
-- 
cgit v1.2.3