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"
2016-11-10 17:24:48 +01:00
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
2017-10-25 13:30:29 +08:00
"code.gitea.io/gitea/modules/markup"
api "code.gitea.io/sdk/gitea"
"github.com/Unknwon/com"
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-11-12 23:02:25 -08:00
// swagger:operation GET /users/search user userSearch
// ---
// summary: Search for users
// produces:
// - application/json
// parameters:
// - name: q
// in: query
// description: keyword
// type: string
// - name: limit
// in: query
// description: maximum number of users to return
// type: integer
// responses:
// "200":
// "$ref": "#/responses/UserList"
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
}
2018-07-25 13:11:22 +01:00
if ctx . IsSigned && ( ! users [ i ] . KeepEmailPrivate || ctx . User . IsAdmin ) {
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-11-12 23:02:25 -08:00
// swagger:operation GET /users/{username} user userGet
// ---
// summary: Get a user
// produces:
// - application/json
// parameters:
// - name: username
// in: path
// description: username of user to get
// type: string
// required: true
// responses:
// "200":
// "$ref": "#/responses/User"
// "404":
// "$ref": "#/responses/notFound"
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
}
2017-11-12 23:02:25 -08:00
// GetAuthenticatedUser get current user's information
2016-08-11 15:29:39 -07:00
func GetAuthenticatedUser ( ctx * context . APIContext ) {
2017-11-12 23:02:25 -08:00
// swagger:operation GET /user user userGetCurrent
// ---
// summary: Get the authenticated user
// produces:
// - application/json
// responses:
// "200":
// "$ref": "#/responses/User"
2016-08-14 04:17:26 -07:00
ctx . JSON ( 200 , ctx . User . APIFormat ( ) )
2014-11-18 11:07:16 -05:00
}