user.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package user
  2. import (
  3. "gitote/gitote/models"
  4. "gitote/gitote/models/errors"
  5. "gitote/gitote/pkg/context"
  6. "gitote/gitote/pkg/markup"
  7. "github.com/Unknwon/com"
  8. api "gitlab.com/gitote/go-gitote-client"
  9. )
  10. func Search(c *context.APIContext) {
  11. opts := &models.SearchUserOptions{
  12. Keyword: c.Query("q"),
  13. Type: models.USER_TYPE_INDIVIDUAL,
  14. PageSize: com.StrTo(c.Query("limit")).MustInt(),
  15. }
  16. if opts.PageSize == 0 {
  17. opts.PageSize = 10
  18. }
  19. users, _, err := models.SearchUserByName(opts)
  20. if err != nil {
  21. c.JSON(500, map[string]interface{}{
  22. "ok": false,
  23. "error": err.Error(),
  24. })
  25. return
  26. }
  27. results := make([]*api.User, len(users))
  28. for i := range users {
  29. results[i] = &api.User{
  30. ID: users[i].ID,
  31. UserName: users[i].Name,
  32. AvatarUrl: users[i].AvatarLink(),
  33. FullName: markup.Sanitize(users[i].FullName),
  34. }
  35. if c.IsLogged {
  36. results[i].Email = users[i].Email
  37. }
  38. }
  39. c.JSON(200, map[string]interface{}{
  40. "ok": true,
  41. "data": results,
  42. })
  43. }
  44. func GetInfo(c *context.APIContext) {
  45. u, err := models.GetUserByName(c.Params(":username"))
  46. if err != nil {
  47. if errors.IsUserNotExist(err) {
  48. c.Status(404)
  49. } else {
  50. c.Error(500, "GetUserByName", err)
  51. }
  52. return
  53. }
  54. // Hide user e-mail when API caller isn't signed in.
  55. if !c.IsLogged {
  56. u.Email = ""
  57. }
  58. c.JSON(200, u.APIFormat())
  59. }
  60. func GetAuthenticatedUser(c *context.APIContext) {
  61. c.JSON(200, c.User.APIFormat())
  62. }