def expire(self):
     # get reference to group by id
     try:
         group_ref = db.reference("/groups/" + self.group_id)
         group_dict = group_ref.get()
         members_list = group_dict["members"].keys()
         # Prepare message
         message_title = "Group has expired!"
         message_body = "The group " + group_dict[
             'groupname'] + " has expired."
         message = Message(self.group_id, message_title, message_body)
         # Create resource manager
         rm = ResourceManager(self.group_id)
         # Set the current group of everyone who was in this group to null
         for member in members_list:
             user_group_ref = db.reference("/users/" + member +
                                           "/current_group")
             user_group_ref.delete()
         #Clean all resources
         group_ref.delete()
         rm.delete_blobs()
         # Notify all users in group
         message.send()
     except Exception as ex:
         print(ex)
         return
def delete_group():
    #get headers
    data = request.headers
    id_token = data['Authorization']
    try:
        decoded_token = auth.verify_id_token(id_token)
    except Exception as ex:
        return make_response('user not found', 401)
    # get user information
    uid = decoded_token["uid"]
    group_id = data["group_id"]
    user = decoded_token["name"]
    try:
        # get reference to group by id
        group_ref = db.reference("/groups/" + group_id)
        group_dict = group_ref.get()
        members_list = group_dict["members"].keys()
        #uid belongs to owner -> Delete group
        if uid == group_dict['owner']['id']:
            #Prepare message
            message_title = "Group deleted!"
            message_body = "The group " + group_dict[
                'groupname'] + " has been deleted by the owner"
            message = Message(group_id, message_title, message_body)
            #Create resource manager
            rm = ResourceManager(group_id)
            #Set the current group of everyone who was in this group to null
            for member in members_list:
                user_group_ref = db.reference("/users/" + member +
                                              "/current_group")
                user_group_ref.delete()
            #Clean all resources
            group_ref.delete()
            rm.delete_blobs()
            # Notify all users in group
            message.send()
            return make_response('group deleted', 200)
        #uid belongs to member -> Leave group
        elif uid in group_dict['members']:
            #Set the current group of user to null
            group_ref.child('members/' + uid).delete()
            user_group_ref = db.reference("/users/" + uid + "/current_group")
            user_group_ref.delete()
            # Notify all users in group
            message_title = "A member left your group!"
            message_body = user + " has left your group " + group_dict[
                'groupname']
            message = Message(group_id, message_title, message_body)
            message.send()
            return make_response('left group', 200)
        else:
            return make_response('not authorized', 401)
    except Exception as ex:
        return make_response('Leaving group unsuccessful', 500)