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.

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