Beispiel #1
0
async def patchChat(request, id, chat_id):
    user = db.findUserById(id)
    if user == None:
        return json_response({ 'error': Response.NotFoundError })

    if not Auth.ValidateUser(user, request):
        return json_response({ 'error':  Response.InvalidUser }, status=400)

    chat = db.findChatById(chat_id)
    if chat == None:
        return json_response({ 'error': Response.NotFoundError })

    body = request.json

    if 'user_ids' not in body:
        return json_response({ 'error': Response.BadRequest }, status=400)

    notify = Notify()
    users = db.findUsersByIds(chat['user_ids'])
    apnTokens = [otherUser['apn_token'] for otherUser in users if otherUser['_id'] != user['_id']]
    custom = { 'chat_id' : chat['_id'], 'type' : 'users_added' }
    notify.sendMessages(apnTokens, user['first_name'] + ' ' + user['last_name'] + ' added more people to one of your chats.', custom)

    newUserIdsToAdd = [userId for userId in body['user_ids'] if userId not in chat['user_ids']]

    db.addUsersToChat(chat_id, newUserIdsToAdd)
    chat = db.findChatById(chat_id)
    chat['users'] = db.findUsersByIds(chat['user_ids'])

    return json_response({ 'chat' : chat })
Beispiel #2
0
async def deleteUser(request, id):
    user = db.findUserById(id)
    if user == None:
        return json_response({'error': Response.NotFoundError}, status=404)

    if not Auth.ValidateUser(user, request):
        return json_response({'error': Response.InvalidUser}, status=400)

    db.removeUserById(id)
    return json_response({'success': True}, status=201)
Beispiel #3
0
async def getUser(request, id):
    user = db.findUserById(id)
    if user == None:
        return json_response({'error': Response.NotFoundError}, status=404)

    if not Auth.ValidateUser(user, request):
        return json_response({'error': Response.InvalidUser}, status=400)

    newSessionToken = Auth.GenerateSessionToken()
    db.updateUserSessionToken(id, newSessionToken)
    user = db.findUserById(id)

    return json_response({'user': user}, status=200)
Beispiel #4
0
async def postChat(request, id):
    user = db.findUserById(id)
    if user == None:
        return json_response({ 'error': Response.NotFoundError })

    if not Auth.ValidateUser(user, request):
        return json_response({ 'error':  Response.InvalidUser }, status=400)

    body = request.json

    if 'user_ids' not in body:
        return json_response({ 'error': Response.BadRequest }, status=400)

    chat_id = db.insertChat(body)
    return json_response({ 'chat': db.findChatById(chat_id) }, status=201)
Beispiel #5
0
async def deleteChat(request, id, chat_id):
    user = db.findUserById(id)
    if user == None:
        return json_response({ 'error': Response.NotFoundError })

    if not Auth.ValidateUser(user, request):
        return json_response({ 'error':  Response.InvalidUser }, status=400)

    chat = db.findChatById(chat_id)
    if chat == None:
        return json_response({ 'error': Response.NotFoundError })

    db.removeUserFromChat(id, chat_id)

    return json_response({ 'success' : 'user removed from chat' })
Beispiel #6
0
async def patchUser(request, id):
    user = db.findUserById(id)
    if user == None:
        return json_response({'error': Response.NotFoundError}, status=404)

    if not Auth.ValidateUser(user, request):
        return json_response({'error': Response.InvalidUser}, status=400)

    body = request.json
    if 'first_name' not in body and 'last_name' not in body:
        return json_response({'error': Response.BadRequest}, status=400)

    db.updateUserById(id, body['first_name'], body['last_name'])
    user = db.findUserById(id)
    return json_response({'user': user}, status=201)
Beispiel #7
0
async def getUserChats(request, id):
    user = db.findUserById(id)
    if user == None:
        return json_response({ 'error': Response.NotFoundError })

    if not Auth.ValidateUser(user, request):
        return json_response({ 'error':  Response.InvalidUser }, status=400)

    chats = db.findChatsByUserId(id)
    if 'removed_chat_ids' in user:
        chats = [chat for chat in chats if chat['_id'] not in user['removed_chat_ids']]

    for chat in chats:
        chat['users'] = db.findUsersByIds(chat['user_ids'])

    return json_response({ 'chats' : chats })
Beispiel #8
0
async def postChat(request, id):
    body = request.json

    user = db.findUserById(id)
    if user == None:
        return json_response({'error': Response.NotFoundError}, status=404)

    if not Auth.ValidateUser(user, request):
        return json_response({'error': Response.InvalidUser}, status=400)

    try:
        notify = Notify()
        notify.clearNotifications(user['apn_token'])
    except Exception as e:
        return json_response({'error': str(e)}, status=500)

    return json_response({'success': True})
async def getChatMessages(request, user_id, chat_id):
    user = db.findUserById(user_id)
    chat = db.findChatById(chat_id)

    if user == None or chat == None:
        return json_response({'error': Response.NotFoundError})

    if not Auth.ValidateUser(user, request):
        return json_response({'error': Response.InvalidUser}, status=400)

    messages = db.findMessagesByChatId(chat_id)
    users = db.findUsersByIds(chat['user_ids'])

    return json_response({
        'messages': messages,
        'chat': chat,
        'users': users
    },
                         status=201)
Beispiel #10
0
async def patchChat(request, id, chat_id):
    user = db.findUserById(id)
    if user == None:
        return json_response({ 'error': Response.NotFoundError })

    if not Auth.ValidateUser(user, request):
        return json_response({ 'error':  Response.InvalidUser }, status=400)

    chat = db.findChatById(chat_id)
    if chat == None:
        return json_response({ 'error': Response.NotFoundError })

    body = request.json

    if 'title' not in body:
        return json_response({ 'error': Response.BadRequest }, status=400)

    db.updateChat(chat_id, body['title'])

    return json_response({ 'success' : 'chat updated' })
Beispiel #11
0
async def postChat(request, user_id, chat_id):
    user = db.findUserById(user_id)
    chat = db.findChatById(chat_id)

    if user == None or chat == None:
        return json_response({'error': Response.NotFoundError})

    if not Auth.ValidateUser(user, request):
        return json_response({'error': Response.InvalidUser}, status=400)

    body = request.json

    if 'message' not in body:
        return json_response({'error': Response.BadRequest}, status=400)

    db.insertMessage(user_id, chat_id, body['message'])
    messages = db.findMessagesByChatId(chat_id)
    chat = db.findChatById(chat_id)
    users = db.findUsersByIds(chat['user_ids'])
    apnTokens = [
        otherUser['apn_token'] for otherUser in users
        if otherUser['_id'] != user['_id'] and (
            'removed_chat_ids' not in otherUser
            or chat['_id'] not in otherUser['removed_chat_ids'])
    ]

    # Send push notification to users.
    notify = Notify()
    custom = {'chat_id': chat['_id'], 'type': 'new_message'}
    notify.sendMessages(apnTokens,
                        'Encrypted message from ' + user['first_name'] + '.',
                        custom)

    return json_response({
        'messages': messages,
        'chat': chat,
        'users': users
    },
                         status=201)