follower.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. // Copyright 2015 The Gogs Authors. All rights reserved.
  2. // Copyright 2018 Gitote. All rights reserved.
  3. //
  4. // This source code is licensed under the MIT license found in the
  5. // LICENSE file in the root directory of this source tree.
  6. package user
  7. import (
  8. "gitote/gitote/models"
  9. "gitote/gitote/pkg/context"
  10. api "gitlab.com/gitote/go-gitote-client"
  11. )
  12. func responseApiUsers(c *context.APIContext, users []*models.User) {
  13. apiUsers := make([]*api.User, len(users))
  14. for i := range users {
  15. apiUsers[i] = users[i].APIFormat()
  16. }
  17. c.JSON(200, &apiUsers)
  18. }
  19. func listUserFollowers(c *context.APIContext, u *models.User) {
  20. users, err := u.GetFollowers(c.QueryInt("page"))
  21. if err != nil {
  22. c.Error(500, "GetUserFollowers", err)
  23. return
  24. }
  25. responseApiUsers(c, users)
  26. }
  27. func ListMyFollowers(c *context.APIContext) {
  28. listUserFollowers(c, c.User)
  29. }
  30. func ListFollowers(c *context.APIContext) {
  31. u := GetUserByParams(c)
  32. if c.Written() {
  33. return
  34. }
  35. listUserFollowers(c, u)
  36. }
  37. func listUserFollowing(c *context.APIContext, u *models.User) {
  38. users, err := u.GetFollowing(c.QueryInt("page"))
  39. if err != nil {
  40. c.Error(500, "GetFollowing", err)
  41. return
  42. }
  43. responseApiUsers(c, users)
  44. }
  45. func ListMyFollowing(c *context.APIContext) {
  46. listUserFollowing(c, c.User)
  47. }
  48. func ListFollowing(c *context.APIContext) {
  49. u := GetUserByParams(c)
  50. if c.Written() {
  51. return
  52. }
  53. listUserFollowing(c, u)
  54. }
  55. func checkUserFollowing(c *context.APIContext, u *models.User, followID int64) {
  56. if u.IsFollowing(followID) {
  57. c.Status(204)
  58. } else {
  59. c.Status(404)
  60. }
  61. }
  62. func CheckMyFollowing(c *context.APIContext) {
  63. target := GetUserByParams(c)
  64. if c.Written() {
  65. return
  66. }
  67. checkUserFollowing(c, c.User, target.ID)
  68. }
  69. func CheckFollowing(c *context.APIContext) {
  70. u := GetUserByParams(c)
  71. if c.Written() {
  72. return
  73. }
  74. target := GetUserByParamsName(c, ":target")
  75. if c.Written() {
  76. return
  77. }
  78. checkUserFollowing(c, u, target.ID)
  79. }
  80. func Follow(c *context.APIContext) {
  81. target := GetUserByParams(c)
  82. if c.Written() {
  83. return
  84. }
  85. if err := models.FollowUser(c.User.ID, target.ID); err != nil {
  86. c.Error(500, "FollowUser", err)
  87. return
  88. }
  89. c.Status(204)
  90. }
  91. func Unfollow(c *context.APIContext) {
  92. target := GetUserByParams(c)
  93. if c.Written() {
  94. return
  95. }
  96. if err := models.UnfollowUser(c.User.ID, target.ID); err != nil {
  97. c.Error(500, "UnfollowUser", err)
  98. return
  99. }
  100. c.Status(204)
  101. }