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.
2015-12-05 01:16:42 +03:00
package user
2014-05-01 07:48:01 +04:00
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"
2016-03-11 19:56:52 +03:00
"github.com/gogits/gogs/modules/context"
2014-05-01 07:48:01 +04:00
)
2015-12-03 08:24:37 +03:00
// https://github.com/gogits/go-gogs-client/wiki/Users#search-users
2016-03-14 01:49:16 +03:00
func Search ( ctx * context . APIContext ) {
2016-03-11 23:33:12 +03:00
opts := & models . SearchUserOptions {
Keyword : ctx . Query ( "q" ) ,
Type : models . USER_TYPE_INDIVIDUAL ,
PageSize : com . StrTo ( ctx . Query ( "limit" ) ) . MustInt ( ) ,
2014-08-26 14:11:15 +04:00
}
2016-03-11 23:33:12 +03:00
if opts . PageSize == 0 {
opts . PageSize = 10
2014-05-01 07:48:01 +04:00
}
2016-03-11 23:33:12 +03:00
users , _ , err := models . SearchUserByName ( opts )
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
}
2016-03-11 23:33:12 +03:00
results := make ( [ ] * api . User , len ( users ) )
for i := range users {
2014-11-15 01:11:30 +03:00
results [ i ] = & api . User {
2016-03-11 23:33:12 +03:00
ID : users [ i ] . Id ,
UserName : users [ i ] . Name ,
AvatarUrl : users [ i ] . AvatarLink ( ) ,
FullName : users [ i ] . FullName ,
2014-08-26 14:11:15 +04:00
}
2015-08-19 00:47:45 +03:00
if ctx . IsSigned {
2016-03-11 23:33:12 +03:00
results [ i ] . Email = users [ i ] . Email
2015-08-19 00:47:45 +03:00
}
2014-05-01 07:48:01 +04:00
}
2015-11-17 10:18:05 +03:00
ctx . JSON ( 200 , map [ string ] interface { } {
2014-05-01 07:48:01 +04:00
"ok" : true ,
"data" : results ,
} )
}
2014-11-18 19:07:16 +03:00
2015-12-03 08:24:37 +03:00
// https://github.com/gogits/go-gogs-client/wiki/Users#get-a-single-user
2016-03-14 01:49:16 +03:00
func GetInfo ( ctx * context . APIContext ) {
2014-11-18 19:07:16 +03:00
u , err := models . GetUserByName ( ctx . Params ( ":username" ) )
if err != nil {
2015-08-05 06:14:17 +03:00
if models . IsErrUserNotExist ( err ) {
2016-03-14 01:49:16 +03:00
ctx . Status ( 404 )
2014-11-18 19:07:16 +03:00
} else {
2016-03-14 01:49:16 +03:00
ctx . Error ( 500 , "GetUserByName" , err )
2014-11-18 19:07:16 +03:00
}
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 ( ) } )
}