follower.go 2.1 KB

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