async def login(request): params = ['identity'] data = with_body(request, params) if len(data) == len(params): user = find_identity(data) if user is not None: return __create_session(user) else: email = '{}@opentact.org'.format(data[0]) avatar = gravatar(email) new_user = ['Anonymous', '', email, '', avatar, data[0]] if create_user(new_user): new_user = user_by_identity(data[0]) if new_user is not None: return __create_session(new_user) else: return response.json( {'message': 'cannot find user for identity'}, status=500) else: return response.json({'message': 'cannot create user'}, status=500) else: return response.json({'message': 'missing data'}, status=400)
async def login(request): params = ['username', 'password'] data = with_body(request, params) if len(data) == len(params): user = find_user(data) if user is not None: return __create_session(user) else: return response.json({'message': 'invalid credentials'}, status=404) else: return response.json({'message': 'missing data'}, status=400)
async def search(request): token = request.headers.get('token', None) if token is not None: user = find_session(token) if user is not None: params = ['keywords'] data = with_body(request, params) if len(data) == len(params): contacts = search_contacts(user, data[0]) return json(encode_contacts(contacts)) else: return response.json({'message': 'missing keywords'}, status=400) else: return response.json({'message': 'no such session'}, status=401) else: return response.json({'message': 'requires a session'}, status=401)
async def register(request): data = with_body(request, ['first', 'last', 'email', 'password']) if len(data) == 4: avatar = gravatar(data[2]) fullname = '{} {}'.format(data[0], data[1]) data.append(avatar) identity = create_identity(data[2], fullname, avatar) if identity is not None: data.append(identity) if create_user(data): return json({'message': 'ok'}) else: return response.json({'message': 'already exists'}, status=409) else: return response.json({'message': 'cannot create identity'}, status=500) else: return response.json({'message': 'missing data'}, status=400)
async def accept(request): token = request.headers.get('token', None) if token is not None: user = find_session(token) if user is not None: params = ['email'] data = with_body(request, params) if len(data) == len(params): contact = user_by_email(data[0]) if contact is not None: if decline_follow(user, contact): if decline_follow_request(user, contact): contacts = find_contacts(user) return json(encode_contacts(contacts)) else: return response.json( { 'message': 'cannot decline follow request in db' }, status=500) else: return response.json( { 'message': 'cannot decline follow request in opentact' }, status=500) else: return response.json({'message': 'no such contact'}, status=404) else: return response.json({'message': 'missing email'}, status=400) else: return response.json({'message': 'no such session'}, status=401) else: return response.json({'message': 'requires a session'}, status=401)