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.

94 lines
2.3 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. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models"
  9. )
  10. // CreateFriendRequest creates a FriendRequest from post data
  11. func CreateFriendRequest(w http.ResponseWriter, r *http.Request) {
  12. var (
  13. friendRequest Models.FriendRequest
  14. requestBody []byte
  15. returnJSON []byte
  16. err error
  17. )
  18. requestBody, err = ioutil.ReadAll(r.Body)
  19. if err != nil {
  20. http.Error(w, "Error", http.StatusInternalServerError)
  21. w.WriteHeader(http.StatusInternalServerError)
  22. return
  23. }
  24. err = json.Unmarshal(requestBody, &friendRequest)
  25. if err != nil {
  26. http.Error(w, "Error", http.StatusInternalServerError)
  27. w.WriteHeader(http.StatusInternalServerError)
  28. return
  29. }
  30. friendRequest.AcceptedAt.Scan(nil)
  31. err = Database.CreateFriendRequest(&friendRequest)
  32. if err != nil {
  33. http.Error(w, "Error", http.StatusInternalServerError)
  34. w.WriteHeader(http.StatusInternalServerError)
  35. return
  36. }
  37. returnJSON, err = json.MarshalIndent(friendRequest, "", " ")
  38. if err != nil {
  39. http.Error(w, "Error", http.StatusInternalServerError)
  40. w.WriteHeader(http.StatusInternalServerError)
  41. return
  42. }
  43. // Return updated json
  44. w.WriteHeader(http.StatusOK)
  45. w.Write(returnJSON)
  46. }
  47. // CreateFriendRequestQrCode creates a FriendRequest from post data from qr code scan
  48. func CreateFriendRequestQrCode(w http.ResponseWriter, r *http.Request) {
  49. var (
  50. friendRequests []Models.FriendRequest
  51. requestBody []byte
  52. i int
  53. err error
  54. )
  55. requestBody, err = ioutil.ReadAll(r.Body)
  56. if err != nil {
  57. http.Error(w, "Error", http.StatusInternalServerError)
  58. w.WriteHeader(http.StatusInternalServerError)
  59. return
  60. }
  61. err = json.Unmarshal(requestBody, &friendRequests)
  62. if err != nil {
  63. http.Error(w, "Error", http.StatusInternalServerError)
  64. w.WriteHeader(http.StatusInternalServerError)
  65. return
  66. }
  67. for i = range friendRequests {
  68. friendRequests[i].AcceptedAt.Time = time.Now()
  69. friendRequests[i].AcceptedAt.Valid = true
  70. }
  71. err = Database.CreateFriendRequests(&friendRequests)
  72. if err != nil {
  73. http.Error(w, "Error", http.StatusInternalServerError)
  74. w.WriteHeader(http.StatusInternalServerError)
  75. return
  76. }
  77. // Return updated json
  78. w.WriteHeader(http.StatusOK)
  79. }