def register():
    str_data = urllib.unquote_plus(request.get_data()).decode('utf-8')
    input_data = json.loads(str_data)
    username = input_data.get('username', None)
    try:
        user_obj = User.register(input_data, collection)
    except UsernameAlreadyExists as e:
        return svc_utils.get_response_from_dict(
            get_sample_response(True, e.message, {}, username))
    login_user(user_obj)
    return svc_utils.get_response_from_dict(
        get_sample_response(False, None, "Logged in successfully", username))
def get_comparison_with_firends():
    logger.info("Received request")
    try:
        response = FRIEND_COMPARISON.invoke_insert(request)
    except Exception as e:
        return svc_utils.get_response_from_dict(
            svc_utils.get_sample_response(True, e.message, "Failed",
                                          current_user.get_id()))
    return response
def add_friend():
    logger.info("Add friend request")
    try:
        response = ADD_FRIEND.invoke_insert(request)
    except Exception as e:
        return svc_utils.get_response_from_dict(
            svc_utils.get_sample_response(
                True, e.message, "Error while sending friend request",
                current_user.get_id()))
    return response
def get_users_list():
    logger.info("received request")

    try:
        response = GET_USERS_LIST.invoke_insert(request)
    except Exception as e:
        return svc_utils.get_response_from_dict(
            svc_utils.get_sample_response(True, e.message,
                                          "Error while fetching users list",
                                          current_user.get_id()))
    return response
def handle_activities():
    logger.info("Recieved request for fetching activities %s",
                current_user.get_id())
    try:
        response = GET_USER_FEED.invoke_insert(request)
    except Exception as e:
        return svc_utils.get_response_from_dict(
            svc_utils.get_sample_response(True, e.message,
                                          "Error while fetching activities",
                                          current_user.get_id()))
    return response
def login():
    str_data = urllib.unquote_plus(request.get_data()).decode('utf-8')
    input_data = json.loads(str_data)
    if request.method == 'POST':
        user = User.get(input_data['username'], collection)
        if user and User.validate_login(user['password'],
                                        input_data['password']):
            user_obj = User(user['username'])
            login_user(user_obj)
            return svc_utils.get_response_from_dict(
                get_sample_response(False, None, "Successfully logged in!!",
                                    user['username']))
        else:
            return svc_utils.get_response_from_dict(
                get_sample_response(True, "Login failed", "Login failed!",
                                    user['username']))
    else:
        return svc_utils.get_response_from_dict(
            get_sample_response(
                True, "Please provide Username and password to login",
                "Please provide Username and password to login",
                input_data['username']))
def take_action_friend_request():
    logger.info(
        "Received request for taking action on a friend request. request-%s",
        request)

    try:
        response = FRIEND_REQUEST_ACTION.invoke_insert(request)
    except Exception as e:
        return svc_utils.get_response_from_dict(
            svc_utils.get_sample_response(
                True, e.message, "Error while acting on friend request",
                current_user.get_id()))
    return response
def update_user_info():
    logger.info("Recieved request for updating user's info by user- %s",
                current_user.get_id())
    start = time.time()
    try:
        response = UPDATE_INFO_SERV.invoke_insert(request)
    except Exception as e:
        return svc_utils.get_response_from_dict(
            svc_utils.get_sample_response(True, e.message,
                                          "Error while updating info",
                                          current_user.get_id()))
    logger.info("Request evaluation time in seconds: %s",
                str(time.time() - start))
    logger.info("Sending a reponse for single request for raw text")
    return response
def home():
    return svc_utils.get_response_from_dict(
        get_sample_response(None, None, None, None))
def unauthorized():
    return svc_utils.get_response_from_dict(
        get_sample_response(True, "Login required", None, None))
def logout():
    logout_user()
    return svc_utils.get_response_from_dict(
        get_sample_response(False, None, "Successfully logged out!", None))