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 (
2017-02-11 12:00:01 +08:00
"strings"
2014-07-26 00:24:27 -04:00
"github.com/Unknwon/com"
2017-10-25 13:26:14 +08:00
"github.com/gogits/gogs/pkg/markup"
2014-07-26 00:24:27 -04:00
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-11-24 15:04:31 +08:00
// Search search users
2016-03-13 18:49:16 -04:00
func Search ( ctx * context . APIContext ) {
2017-08-21 13:13:47 +02:00
// swagger:route GET /users/search user userSearch
2017-05-02 15:35:59 +02:00
//
// Produces:
// - application/json
//
// Responses:
// 200: UserList
// 500: error
2016-03-11 15:33:12 -05:00
opts := & models . SearchUserOptions {
2017-02-11 12:00:01 +08:00
Keyword : strings . Trim ( 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
}
2017-10-25 01:36:19 +08:00
users , _ , err := models . SearchUsers ( 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 ,
2016-11-29 09:25:47 +01:00
AvatarURL : users [ i ] . AvatarLink ( ) ,
2017-10-25 13:26:14 +08:00
FullName : markup . Sanitize ( 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-11-24 15:04:31 +08:00
// GetInfo get user's information
2016-03-13 18:49:16 -04:00
func GetInfo ( ctx * context . APIContext ) {
2017-08-21 13:13:47 +02:00
// swagger:route GET /users/{username} user userGet
2017-05-02 15:35:59 +02:00
//
// Produces:
// - application/json
//
// Responses:
// 200: User
// 404: notFound
// 500: error
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
}
2016-11-24 15:04:31 +08:00
// GetAuthenticatedUser get curent user's information
2016-08-11 15:29:39 -07:00
func GetAuthenticatedUser ( ctx * context . APIContext ) {
2017-08-21 13:13:47 +02:00
// swagger:route GET /user user userGetCurrent
2017-05-02 15:35:59 +02:00
//
// Produces:
// - application/json
//
// Responses:
// 200: User
2016-08-14 04:17:26 -07:00
ctx . JSON ( 200 , ctx . User . APIFormat ( ) )
2014-11-18 11:07:16 -05:00
}