def rename()

in source/backend/src/transfer_sftp_backend.py [0:0]


def rename():
    try:
        logger.info(f'TaskID: {fargate_task_id}(PID:{pid}) - rename(): Request received')
        sftp_hostname = app.config.get('sftp_hostname')
        usr, passwd = authenticate_request(request)

        response_body = {}
        request_data = request.get_json()
        node_type = request_data['node_type']
        current_path = request_data['current_path']
        new_path = request_data['new_path']
        logger.info(f'TaskID: {fargate_task_id}(PID:{pid}) - rename(): Current Path: {current_path}')
        logger.info(f'TaskID: {fargate_task_id}(PID:{pid}) - rename(): New Path: {new_path}')

        if new_path != current_path:
            if node_type == "folder":
                logger.info(f'TaskID: {fargate_task_id}(PID:{pid}) - rename(): Cannot rename a folder')
                return bad_request(f'Cannot rename a folder', 500)  # cant rename a directory
            elif node_type == "file":

                if contains_special_characters(request_data['file_name']):
                    return bad_request("Name contains special characters.", 400)

                sftp_connection = get_sftp_connection(usr, passwd, sftp_hostname)
                sftp_connection.rename(current_path,new_path)
                response_body['message'] = "File renamed successfully."
                response_body['new_path'] = new_path
                response_body['new_name'] = new_path[new_path.rfind('/')+1:]
                logger.debug(f'TaskID: {fargate_task_id}(PID:{pid}) - rename(): File renamed successfully.')

                response = jsonify(response_body)
                response.status_code = 200
                logger.info(f'TaskID: {fargate_task_id}(PID:{pid}) - rename(): Responding back with 200 status code')
            else:
                logger.info(f'TaskID: {fargate_task_id}(PID:{pid}) - rename(): Bad Input')
                return bad_request(f'Bad Input', 500)
        else:
            response = jsonify("No name change detected.")
            logger.info(f'TaskID: {fargate_task_id}(PID:{pid}) - rename(): No name change detected')
            response.status_code = 200

        return response

    except Exception as e:
        logger.error(f'TaskID: {fargate_task_id}(PID:{pid}) - rename(): call to /api/rename returned exception {e}')
        return bad_request("Bad or Invalid Request", 500)