예제 #1
0
파일: view.py 프로젝트: ragnraok/Athena
def create_room():
    """
    Create Room function
        POST json format:
            {"room_name": room_name}
        Response json format:
            {"room_name": room_name, "room_id": room_id}
        If the room for name is already exist, return 406
    """
    creator = g.user
    info = get_json_post_data()
    if info is None:
        return no_post_data
    name = info.get('room_name', None)
    if name is None:
        return Response(status=406)
    room_list = ChatRoom.query.filter_by(title=name).all()
    if len(room_list) > 0:
        return Response("room %s was existed" % name, 406)
    # create the room
    room = ChatRoom(name, creator.id)
    db.session.add(room)
    db.session.commit()

    # and let creator join this room
    room_manager.join_room(room.id, creator.id)
    return jsonify(room_name=room.title, room_id=room.id)
예제 #2
0
파일: view.py 프로젝트: ragnraok/Athena
def join_room(room_id):
    """
    Join room function:
        POST:
            no data
        Response 200 if success
        If the room is not exist, return 400
        If the user is not online now, return 406
    """
    join_user = g.user
    if not online_users.is_online(join_user):
        return login_first()
    room = ChatRoom.query.get(room_id)
    if room is None:
        return room_not_exist_by_id(room_id)
    room_manager.join_room(room_id, join_user.id)
    # broadcast a message to all user
    room_manager.send_message(join_user.id, room_id, "%s join room!" % join_user.username)
    return Response("successful join room %s" % room.title, 200)