2014-05-01 07:48:01 +04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package v1
import (
2014-07-26 08:24:27 +04:00
"github.com/Unknwon/com"
2014-11-15 01:11:30 +03:00
api "github.com/gogits/go-gogs-client"
2014-05-01 07:48:01 +04:00
"github.com/gogits/gogs/models"
2014-11-18 19:07:16 +03:00
"github.com/gogits/gogs/modules/base"
2014-05-01 07:48:01 +04:00
"github.com/gogits/gogs/modules/middleware"
2014-12-13 04:30:32 +03:00
"github.com/gogits/gogs/modules/setting"
2014-05-01 07:48:01 +04:00
)
2014-12-13 04:30:32 +03:00
// ToApiUser converts user to API format.
func ToApiUser ( u * models . User ) * api . User {
return & api . User {
2015-08-19 00:47:45 +03:00
ID : u . Id ,
2014-12-13 04:30:32 +03:00
UserName : u . Name ,
AvatarUrl : string ( setting . Protocol ) + u . AvatarLink ( ) ,
}
}
2014-07-12 08:55:19 +04:00
func SearchUsers ( ctx * middleware . Context ) {
2014-08-26 14:11:15 +04:00
opt := models . SearchOption {
Keyword : ctx . Query ( "q" ) ,
Limit : com . StrTo ( ctx . Query ( "limit" ) ) . MustInt ( ) ,
}
if opt . Limit == 0 {
opt . Limit = 10
2014-05-01 07:48:01 +04:00
}
2014-08-26 14:11:15 +04:00
us , err := models . SearchUserByName ( opt )
2014-05-01 07:48:01 +04:00
if err != nil {
2014-08-26 14:11:15 +04:00
ctx . JSON ( 500 , map [ string ] interface { } {
"ok" : false ,
"error" : err . Error ( ) ,
} )
2014-05-01 07:48:01 +04:00
return
}
2014-11-15 01:11:30 +03:00
results := make ( [ ] * api . User , len ( us ) )
2014-05-01 07:48:01 +04:00
for i := range us {
2014-11-15 01:11:30 +03:00
results [ i ] = & api . User {
2015-08-19 00:47:45 +03:00
ID : us [ i ] . Id ,
2014-11-13 10:32:18 +03:00
UserName : us [ i ] . Name ,
AvatarUrl : us [ i ] . AvatarLink ( ) ,
2014-12-02 12:43:51 +03:00
FullName : us [ i ] . FullName ,
2014-08-26 14:11:15 +04:00
}
2015-08-19 00:47:45 +03:00
if ctx . IsSigned {
results [ i ] . Email = us [ i ] . Email
}
2014-05-01 07:48:01 +04:00
}
ctx . Render . JSON ( 200 , map [ string ] interface { } {
"ok" : true ,
"data" : results ,
} )
}
2014-11-18 19:07:16 +03:00
// GET /users/:username
func GetUserInfo ( ctx * middleware . Context ) {
u , err := models . GetUserByName ( ctx . Params ( ":username" ) )
if err != nil {
2015-08-05 06:14:17 +03:00
if models . IsErrUserNotExist ( err ) {
2014-11-18 19:07:16 +03:00
ctx . Error ( 404 )
} else {
ctx . JSON ( 500 , & base . ApiJsonErr { "GetUserByName: " + err . Error ( ) , base . DOC_URL } )
}
return
}
2015-07-14 18:21:34 +03:00
// Hide user e-mail when API caller isn't signed in.
if ! ctx . IsSigned {
u . Email = ""
}
2014-11-18 19:07:16 +03:00
ctx . JSON ( 200 , & api . User { u . Id , u . Name , u . FullName , u . Email , u . AvatarLink ( ) } )
}