ic-query 0.2.21

Internet Computer query CLI for NNS, SNS, and related public network metadata
Documentation
use crate::{
    nns::{
        data_center::report::build_nns_data_center_list_report,
        node::report::build_nns_node_list_report,
        node_operator::report::build_nns_node_operator_list_report,
        node_provider::report::build_nns_node_provider_list_report,
        topology::report::{
            NnsTopologyHostError, NnsTopologySummaryReport, NnsTopologySummaryRequest,
            enforce_mainnet_network,
            request::{
                TopologyRequestParts, data_center_list_request, node_list_request,
                node_operator_list_request, node_provider_list_request,
                subnet_catalog_list_request,
            },
            summary::topology_summary_report_from_reports,
        },
    },
    subnet_catalog::build_subnet_catalog_list_report,
};

pub fn build_nns_topology_summary_report(
    request: &NnsTopologySummaryRequest,
) -> Result<NnsTopologySummaryReport, NnsTopologyHostError> {
    enforce_mainnet_network(request.network())?;

    let subnet_report = build_subnet_catalog_list_report(&subnet_catalog_list_request(request))?;
    let node_report = build_nns_node_list_report(&node_list_request(request))?;
    let node_provider_report =
        build_nns_node_provider_list_report(&node_provider_list_request(request))?;
    let node_operator_report =
        build_nns_node_operator_list_report(&node_operator_list_request(request))?;
    let data_center_report = build_nns_data_center_list_report(&data_center_list_request(request))?;

    Ok(topology_summary_report_from_reports(
        request.network().to_string(),
        request.source_endpoint().to_string(),
        subnet_report,
        node_report,
        node_provider_report,
        node_operator_report,
        data_center_report,
    ))
}