Ejemplo n.º 1
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)
Ejemplo n.º 2
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)
Ejemplo n.º 3
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 })
Ejemplo n.º 4
0
async def postUser(request):
    body = request.json

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

    user_id = db.insertUser(body)
    user = db.findUserById(user_id)

    return json_response({'user': user}, status=201)
Ejemplo n.º 5
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)
Ejemplo n.º 6
0
async def postUser(request):
    body = request.json

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

    body['session_token'] = Auth.GenerateSessionToken()
    user_id = db.insertUser(body)
    user = db.findUserById(user_id)

    return json_response({'user': user}, status=201)
Ejemplo n.º 7
0
async def facebookUserLogin(request):
    if 'code' not in request.args:
        return json_response({'error': Response.BadRequest}, status=400)

    code = request.args['code'][0]

    fbookURL = 'https://graph.facebook.com/oauth/access_token? \
        client_id='                    + config.fbClientId + \
        '&redirect_uri=' + config.fbRedirectURI + \
        '&client_secret=' + config.fbClientSecret + \
        '&code=' + code

    r = requests.get(fbookURL)
    fbInfo = r.json()
    if 'access_token' not in fbInfo:
        return html('<h2 style="color:white;">' +
                    json.dumps({'error': fbInfo}) + '</h2>')

    r = requests.get(
        "https://graph.facebook.com/me?fields=id,first_name,last_name,picture&access_token="
        + fbInfo['access_token'])
    fbUser = r.json()
    if 'id' not in fbUser:
        return html('<h2 style="color:white;">' +
                    json.dumps({'error': fbUser}) + '</h2>')

    user = db.findByFBID(fbUser['id'])
    user_id = None
    new_user = user == None
    if user != None:
        db.updateUser(
            user['_id'], {
                'first_name': fbUser['first_name'],
                'last_name': fbUser['last_name'],
                'fb_id': fbUser['id'],
                'prof_pic': fbUser['picture']['data']['url']
            })
        user_id = user['_id']
    else:
        user_id = db.insertUser({
            'first_name': fbUser['first_name'],
            'last_name': fbUser['last_name'],
            'fb_id': fbUser['id'],
            'prof_pic': fbUser['picture']['data']['url']
        })

    user = db.findUserById(user_id)
    user['new'] = new_user
    resp = '<h1 id="user" style="color:white;">' + json.dumps(user) + '</h1>'

    return html(resp)
Ejemplo n.º 8
0
async def postUser(request):
    body = request.json

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

    user = db.findByUsername(body['username'])
    if user != None:
        return json_response({'error': Response.BadRequest}, status=400)

    user_id = db.insertUser(body)
    user = db.findUserById(user_id)

    return json_response({'user': user}, status=201)
Ejemplo n.º 9
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)
Ejemplo n.º 10
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' })
Ejemplo n.º 11
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 })
Ejemplo n.º 12
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})
Ejemplo n.º 13
0
async def postComment(request, user_id, page_id):
    body = request.json
    if 'message' not in body:
        return json_response({'error': Response.BadRequest}, status=400)

    user = db.findUserById(user_id)
    if user == None:
        return json_response({'error': Response.BadRequest}, status=400)

    page = db.findPageById(page_id)
    if page == None:
        return json_response({'error': Response.BadRequest}, status=400)

    comment_id = db.insertComment(user, page, body['message'])
    comment = db.findCommentById(comment_id)

    return json_response({'comment': comment}, status=201)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
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' })
Ejemplo n.º 16
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)
Ejemplo n.º 17
0
async def getUser(request, user_id):
    user = db.findUserById(user_id)
    if user == None:
        return json_response({'error': Response.NotFoundError}, status=404)

    return json_response({'user': user}, status=200)