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.

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