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.

82 lines
1.8 KiB

  1. package Messages
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "net/url"
  6. "strings"
  7. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Api/Auth"
  8. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
  9. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models"
  10. )
  11. func EncryptedConversationList(w http.ResponseWriter, r *http.Request) {
  12. var (
  13. userConversations []Models.UserConversation
  14. userSession Models.Session
  15. returnJson []byte
  16. err error
  17. )
  18. userSession, err = Auth.CheckCookie(r)
  19. if err != nil {
  20. http.Error(w, "Forbidden", http.StatusUnauthorized)
  21. return
  22. }
  23. userConversations, err = Database.GetUserConversationsByUserId(
  24. userSession.UserID.String(),
  25. )
  26. if err != nil {
  27. http.Error(w, "Error", http.StatusInternalServerError)
  28. return
  29. }
  30. returnJson, err = json.MarshalIndent(userConversations, "", " ")
  31. if err != nil {
  32. http.Error(w, "Error", http.StatusInternalServerError)
  33. return
  34. }
  35. w.WriteHeader(http.StatusOK)
  36. w.Write(returnJson)
  37. }
  38. func EncryptedConversationDetailsList(w http.ResponseWriter, r *http.Request) {
  39. var (
  40. userConversations []Models.ConversationDetail
  41. query url.Values
  42. conversationIds []string
  43. returnJson []byte
  44. ok bool
  45. err error
  46. )
  47. query = r.URL.Query()
  48. conversationIds, ok = query["conversation_detail_ids"]
  49. if !ok {
  50. http.Error(w, "Invalid Data", http.StatusBadGateway)
  51. return
  52. }
  53. // TODO: Fix error handling here
  54. conversationIds = strings.Split(conversationIds[0], ",")
  55. userConversations, err = Database.GetConversationDetailsByIds(
  56. conversationIds,
  57. )
  58. if err != nil {
  59. http.Error(w, "Error", http.StatusInternalServerError)
  60. return
  61. }
  62. returnJson, err = json.MarshalIndent(userConversations, "", " ")
  63. if err != nil {
  64. http.Error(w, "Error", http.StatusInternalServerError)
  65. return
  66. }
  67. w.WriteHeader(http.StatusOK)
  68. w.Write(returnJson)
  69. }