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.

69 lines
1.5 KiB

  1. package Friends
  2. import (
  3. "encoding/json"
  4. "io/ioutil"
  5. "net/http"
  6. "time"
  7. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
  8. "github.com/gorilla/mux"
  9. )
  10. // AcceptFriendRequest accepts friend requests
  11. func AcceptFriendRequest(w http.ResponseWriter, r *http.Request) {
  12. var (
  13. oldFriendRequest Database.FriendRequest
  14. newFriendRequest Database.FriendRequest
  15. urlVars map[string]string
  16. friendRequestID string
  17. requestBody []byte
  18. ok bool
  19. err error
  20. )
  21. urlVars = mux.Vars(r)
  22. friendRequestID, ok = urlVars["requestID"]
  23. if !ok {
  24. http.Error(w, "Not Found", http.StatusNotFound)
  25. return
  26. }
  27. oldFriendRequest, err = Database.GetFriendRequestByID(friendRequestID)
  28. if err != nil {
  29. http.Error(w, "Not Found", http.StatusNotFound)
  30. return
  31. }
  32. oldFriendRequest.AcceptedAt.Time = time.Now()
  33. oldFriendRequest.AcceptedAt.Valid = true
  34. requestBody, err = ioutil.ReadAll(r.Body)
  35. if err != nil {
  36. http.Error(w, "Error", http.StatusInternalServerError)
  37. return
  38. }
  39. err = json.Unmarshal(requestBody, &newFriendRequest)
  40. if err != nil {
  41. http.Error(w, "Error", http.StatusInternalServerError)
  42. return
  43. }
  44. err = (&oldFriendRequest).UpdateFriendRequest()
  45. if err != nil {
  46. http.Error(w, "Error", http.StatusInternalServerError)
  47. return
  48. }
  49. newFriendRequest.AcceptedAt.Time = time.Now()
  50. newFriendRequest.AcceptedAt.Valid = true
  51. err = (&newFriendRequest).CreateFriendRequest()
  52. if err != nil {
  53. http.Error(w, "Error", http.StatusInternalServerError)
  54. return
  55. }
  56. w.WriteHeader(http.StatusNoContent)
  57. }