From 1453e91f419e52fc74e3ec51b47a080a27a33342 Mon Sep 17 00:00:00 2001
From: Unknwon <u@gogs.io>
Date: Wed, 19 Aug 2015 20:08:57 +0800
Subject: [PATCH] minor fix on API response

---
 cmd/web.go                      |  2 ++
 models/access.go                |  2 +-
 models/migrations/migrations.go |  2 +-
 routers/api/v1/repo.go          | 18 ++++++------------
 routers/api/v1/user.go          |  5 +++--
 5 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/cmd/web.go b/cmd/web.go
index ae4403c0cac..05daf558b01 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -232,6 +232,8 @@ func runWeb(ctx *cli.Context) {
 			m.Combo("/user/repos", middleware.ApiReqToken()).Get(v1.ListMyRepos).
 				Post(bind(api.CreateRepoOption{}), v1.CreateRepo)
 			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.Get("/search", v1.SearchRepos)
 				m.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), v1.MigrateRepo)
diff --git a/models/access.go b/models/access.go
index 8d698f151da..917f1c280de 100644
--- a/models/access.go
+++ b/models/access.go
@@ -68,7 +68,7 @@ func HasAccess(u *User, repo *Repository, testMode AccessMode) (bool, error) {
 }
 
 // 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) {
 	accesses := make([]*Access, 0, 10)
 	if err := x.Find(&accesses, &Access{UserID: u.Id}); err != nil {
diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go
index f1d6c91af58..08a503e6dac 100644
--- a/models/migrations/migrations.go
+++ b/models/migrations/migrations.go
@@ -470,7 +470,7 @@ func trimCommitActionAppUrlPrefix(x *xorm.Engine) error {
 		if _, err = sess.Id(actID).Update(&Action{
 			Content: string(p),
 		}); err != nil {
-			return fmt.Errorf("update action[%s]: %v", actID, err)
+			return fmt.Errorf("update action[%d]: %v", actID, err)
 		}
 	}
 	return sess.Commit()
diff --git a/routers/api/v1/repo.go b/routers/api/v1/repo.go
index c6dabfcb86d..3f5394172ab 100644
--- a/routers/api/v1/repo.go
+++ b/routers/api/v1/repo.go
@@ -120,7 +120,7 @@ func createRepo(ctx *middleware.Context, owner *models.User, opt api.CreateRepoO
 		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
@@ -254,17 +254,11 @@ func ListMyRepos(ctx *middleware.Context) {
 	i := numOwnRepos
 
 	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++
 	}
 
diff --git a/routers/api/v1/user.go b/routers/api/v1/user.go
index 60b6adcd120..57bf68bb566 100644
--- a/routers/api/v1/user.go
+++ b/routers/api/v1/user.go
@@ -12,7 +12,6 @@ import (
 	"github.com/gogits/gogs/models"
 	"github.com/gogits/gogs/modules/base"
 	"github.com/gogits/gogs/modules/middleware"
-	"github.com/gogits/gogs/modules/setting"
 )
 
 // ToApiUser converts user to API format.
@@ -20,7 +19,9 @@ func ToApiUser(u *models.User) *api.User {
 	return &api.User{
 		ID:        u.Id,
 		UserName:  u.Name,
-		AvatarUrl: string(setting.Protocol) + u.AvatarLink(),
+		FullName:  u.FullName,
+		Email:     u.Email,
+		AvatarUrl: u.AvatarLink(),
 	}
 }