def list_child_nodes()

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


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

        request_data = request.get_json()
        node_name = request_data['node_name']  # what is parent node
        node_type = request_data['node_type']  # do we want folders or non-folders
        response_body['data'] = []

        sftp_connection = get_sftp_connection(usr, passwdorpkey, sftp_hostname)
        nodes = sftp_connection.listdir_attr(node_name)

        for node in nodes:
            if node_type == "folder" and node.longname[:1] == "d":  # if folder node
                response_body['data'].append(
                    {
                        'label': node.filename,
                        'data': node_name + "/" + node.filename,
                        'leaf': False,
                        'key': node_name + "/" + node.filename,  # for react js
                    }
                )
            elif node_type == "file" and node.longname[:1] == "-":

                file_ext = "n/a"

                # find last "." in file name
                file_name_split = node.filename.rsplit(".", 1)

                if len(file_name_split) == 2:  # if we have 2 items come back the last is the extension.
                    file_ext = file_name_split[1]

                response_body['data'].append(
                    {
                        'name': node.filename,
                        'data': node_name + "/" + node.filename,
                        'leaf': True,
                        'type': file_ext,
                        'size': round(node.st_size/1024, 2),
                        'last_accessed_on': datetime.datetime.fromtimestamp(node.st_atime).strftime('%Y-%m-%d %H:%M:%S'),
                        'last_modified_on': datetime.datetime.fromtimestamp(node.st_mtime).strftime('%Y-%m-%d %H:%M:%S')
                    }
                )
        response = jsonify(response_body)
        response.status_code = 200
        logger.info(f'TaskID: {fargate_task_id}(PID:{pid}) - list_child_nodes(): Responding back with 200 status code')
        return response

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