2014-04-30 23: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.
2015-12-04 17:16:42 -05:00
package user
2014-04-30 23:48:01 -04:00
import (
2014-07-26 00:24:27 -04:00
"github.com/Unknwon/com"
2016-11-11 10:39:44 +01:00
api "code.gitea.io/sdk/gitea"
2014-11-14 17:11:30 -05:00
2016-11-10 17:24:48 +01:00
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
2014-04-30 23:48:01 -04:00
)
2016-03-13 18:49:16 -04:00
func Search ( ctx * context . APIContext ) {
2016-03-11 15:33:12 -05:00
opts := & models . SearchUserOptions {
Keyword : ctx . Query ( "q" ) ,
2016-11-07 17:53:22 +01:00
Type : models . UserTypeIndividual ,
2016-03-11 15:33:12 -05:00
PageSize : com . StrTo ( ctx . Query ( "limit" ) ) . MustInt ( ) ,
2014-08-26 18:11:15 +08:00
}
2016-03-11 15:33:12 -05:00
if opts . PageSize == 0 {
opts . PageSize = 10
2014-04-30 23:48:01 -04:00
}
2016-03-11 15:33:12 -05:00
users , _ , err := models . SearchUserByName ( opts )
2014-04-30 23:48:01 -04:00
if err != nil {
2014-08-26 18:11:15 +08:00
ctx . JSON ( 500 , map [ string ] interface { } {
"ok" : false ,
"error" : err . Error ( ) ,
} )
2014-04-30 23:48:01 -04:00
return
}
2016-03-11 15:33:12 -05:00
results := make ( [ ] * api . User , len ( users ) )
for i := range users {
2014-11-14 17:11:30 -05:00
results [ i ] = & api . User {
2016-07-24 01:08:22 +08:00
ID : users [ i ] . ID ,
2016-03-11 15:33:12 -05:00
UserName : users [ i ] . Name ,
AvatarUrl : users [ i ] . AvatarLink ( ) ,
FullName : users [ i ] . FullName ,
2014-08-26 18:11:15 +08:00
}
2015-08-19 05:47:45 +08:00
if ctx . IsSigned {
2016-03-11 15:33:12 -05:00
results [ i ] . Email = users [ i ] . Email
2015-08-19 05:47:45 +08:00
}
2014-04-30 23:48:01 -04:00
}
2015-11-17 02:18:05 -05:00
ctx . JSON ( 200 , map [ string ] interface { } {
2014-04-30 23:48:01 -04:00
"ok" : true ,
"data" : results ,
} )
}
2014-11-18 11:07:16 -05:00
2016-03-13 18:49:16 -04:00
func GetInfo ( ctx * context . APIContext ) {
2014-11-18 11:07:16 -05:00
u , err := models . GetUserByName ( ctx . Params ( ":username" ) )
if err != nil {
2015-08-05 11:14:17 +08:00
if models . IsErrUserNotExist ( err ) {
2016-03-13 18:49:16 -04:00
ctx . Status ( 404 )
2014-11-18 11:07:16 -05:00
} else {
2016-03-13 18:49:16 -04:00
ctx . Error ( 500 , "GetUserByName" , err )
2014-11-18 11:07:16 -05:00
}
return
}
2015-07-14 23:21:34 +08:00
// Hide user e-mail when API caller isn't signed in.
if ! ctx . IsSigned {
u . Email = ""
}
2016-08-14 04:17:26 -07:00
ctx . JSON ( 200 , u . APIFormat ( ) )
2016-08-11 15:29:39 -07:00
}
func GetAuthenticatedUser ( ctx * context . APIContext ) {
2016-08-14 04:17:26 -07:00
ctx . JSON ( 200 , ctx . User . APIFormat ( ) )
2014-11-18 11:07:16 -05:00
}