Exemplo n.º 1
0
def lambda_handler(event, context):
    connection_id = event["requestContext"].get("connectionId")
    connection = _delete_connection_from_connections(connection_id)
    if connection:
        user = connection['user']
        rooms = connection['rooms']
        delete_connection_from_rooms(event, connection_id, user, rooms)
Exemplo n.º 2
0
def lambda_handler(event, context):

    connection_id = event["requestContext"].get("connectionId")
    data = json.loads(event['body'])['data']

    room = data['room']
    token = data.get('token')
    user = get_user(token)

    if user:
        previous_joined_room_ids = []
        connection = get_connection(connection_id)
        if connection:
            previous_joined_room_ids = connection['rooms']

        delete_connection_from_rooms(event, connection_id, user, [room['id']])
        room_ids = [
            r_id for r_id in previous_joined_room_ids if r_id != room['id']
        ]
        # save connection - {'user':{}, 'rooms':[]}
        save_connection(connection_id, user, room_ids)
        # save user - {'connections':[]}
        # save_user(connection_id, user['id'])

        # TODO: client shouldn't see other user's connections
        res = {"name": "left room", "data": {"roomId": room['id']}}

        return {'statusCode': 200, 'body': json.dumps(res)}
    else:
        return {'statusCode': 400, 'body': json.dumps('not logged in!')}
Exemplo n.º 3
0
def handler(connection_id):

    delete_connection_from_rooms(event, connection_id, user, rooms)

    connection = _delete_connection_from_connections(connection_id)
    if connection:
        user = connection['user']
        rooms = connection['rooms']
        delete_connection_from_rooms(event, connection_id, user, rooms)
Exemplo n.º 4
0
def handle(connection, data):
    """
    Remove connection from room
    Remove room from connection
    """
    room_id = data['roomId']
    user = connection.user

    delete_connection_from_rooms(connection, [room_id])
    connection.leave_room(room_id)

    return {"name": "left_room", "roomId": room_id, "user": user}
Exemplo n.º 5
0
def lambda_handler(event, context):

    connection_id = event["requestContext"].get("connectionId")
    data = json.loads(event['body'])['data']

    rooms = data['rooms']
    room_ids = [r['id'] for r in rooms]
    token = data.get('token')
    get_chat_history = data.get('getChatHistory')

    user = get_user(token)

    if user:
        previous_joined_room_ids = []
        connection = get_connection(connection_id)
        if connection:
            previous_joined_room_ids = connection['rooms']

        # join room if not already in
        joined_rooms = {}
        for room in rooms:
            room_info = join_room(connection_id, user, room['id'],
                                  room['type'], event)
            if get_chat_history:
                room_info['chatHistory'] = get_room_messages(room['id'])
            joined_rooms[room['id']] = room_info

        # leave room not in payload
        for room_id in previous_joined_room_ids:
            if not (room_id in room_ids):
                delete_connection_from_rooms(event, connection_id, user,
                                             [room_id])

        # save connection - {'user':{}, 'rooms':[]}
        save_connection(connection_id, user, room_ids)
        # save user - {'connections':[]}
        # save_user(connection_id, user['id'])

        # TODO: client shouldn't see other user's connections
        res = {"name": "room info", "data": joined_rooms}

        return {'statusCode': 200, 'body': json.dumps(res)}
    else:
        return {'statusCode': 400, 'body': json.dumps('not logged in!')}
Exemplo n.º 6
0
def handle(connection, data):
    """
    Remove connection from room
    Remove room from connection
    """
    connection_id = connection.id

    room_id = data['roomId']
    token = data.get('token')
    # user = get_user(token) # user is already on connection object
    user = connection.user
    if user:

        delete_connection_from_rooms(connection_id, user, [room_id])

        connection.leave_room(room_id)
        return {"name": "left room", "data": {"roomId": room_id}}

    else:
        return {'error': 'not logged in'}
Exemplo n.º 7
0
def handle(connection):
    delete_connection_from_rooms(connection, connection.room_ids)