Encrypted messaging app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.3 KiB

  1. package Friends
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "net/url"
  6. "strconv"
  7. "time"
  8. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Api/Auth"
  9. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
  10. )
  11. // FriendRequestList gets friend request list
  12. func FriendRequestList(w http.ResponseWriter, r *http.Request) {
  13. var (
  14. userSession Database.Session
  15. friends Database.FriendRequestList
  16. query url.Values
  17. acceptedAtString []string
  18. acceptedAt time.Time
  19. page int
  20. ok bool
  21. returnJSON []byte
  22. err error
  23. )
  24. query = r.URL.Query()
  25. page, err = strconv.Atoi(query.Get("page"))
  26. if err != nil {
  27. page = 0
  28. }
  29. acceptedAtString, ok = query["updated_at"]
  30. if ok {
  31. acceptedAt, err = time.Parse(time.RFC3339, acceptedAtString[0])
  32. if err != nil {
  33. http.Error(w, "Invalid Data", http.StatusBadGateway)
  34. return
  35. }
  36. }
  37. userSession, _ = Auth.CheckCookie(r)
  38. friends, err = Database.GetFriendRequestsByUserID(userSession.UserID.String(), page, acceptedAt)
  39. if err != nil {
  40. http.Error(w, "Error", http.StatusInternalServerError)
  41. return
  42. }
  43. returnJSON, err = json.MarshalIndent(friends, "", " ")
  44. if err != nil {
  45. http.Error(w, "Error", http.StatusInternalServerError)
  46. return
  47. }
  48. w.WriteHeader(http.StatusOK)
  49. w.Write(returnJSON)
  50. }