package Friends import ( "encoding/json" "io/ioutil" "net/http" "time" "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database" "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models" "github.com/gorilla/mux" ) // AcceptFriendRequest accepts friend requests func AcceptFriendRequest(w http.ResponseWriter, r *http.Request) { var ( oldFriendRequest Models.FriendRequest newFriendRequest Models.FriendRequest urlVars map[string]string friendRequestID string requestBody []byte ok bool err error ) urlVars = mux.Vars(r) friendRequestID, ok = urlVars["requestID"] if !ok { http.Error(w, "Not Found", http.StatusNotFound) return } oldFriendRequest, err = Database.GetFriendRequestByID(friendRequestID) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError) return } oldFriendRequest.AcceptedAt.Time = time.Now() oldFriendRequest.AcceptedAt.Valid = true requestBody, err = ioutil.ReadAll(r.Body) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError) return } err = json.Unmarshal(requestBody, &newFriendRequest) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError) return } err = Database.UpdateFriendRequest(&oldFriendRequest) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError) return } newFriendRequest.AcceptedAt.Time = time.Now() newFriendRequest.AcceptedAt.Valid = true err = Database.CreateFriendRequest(&newFriendRequest) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError) return } w.WriteHeader(http.StatusNoContent) }