ic-query 0.20.1

Internet Computer query library for NNS, SNS, ICRC, and related public network metadata
Documentation
use super::{
    NNS_NODE_OPERATOR_CACHE_DIR, NNS_NODE_OPERATOR_CACHE_FILE,
    NNS_NODE_OPERATOR_REFRESH_REPORT_SCHEMA_VERSION, NnsInventoryRefreshRequest,
    NnsNodeOperatorHostError, NnsNodeOperatorListReport, NnsNodeOperatorRefreshReport,
    enforce_mainnet_network,
    source::{NnsNodeOperatorSource, fetch_nns_node_operator_list_report_with_source},
};
use crate::nns::{LiveNnsSource, leaf::write_nns_leaf_json_refresh_cache};

pub fn refresh_nns_node_operator_report(
    request: &NnsInventoryRefreshRequest,
) -> Result<NnsNodeOperatorRefreshReport, NnsNodeOperatorHostError> {
    refresh_nns_node_operator_report_with_source(request, &LiveNnsSource)
}

pub fn refresh_nns_node_operator_report_with_source(
    request: &NnsInventoryRefreshRequest,
    source: &dyn NnsNodeOperatorSource,
) -> Result<NnsNodeOperatorRefreshReport, NnsNodeOperatorHostError> {
    refresh_nns_node_operator_cache_with_source(request, source).map(|(_, report)| report)
}

pub(super) fn refresh_nns_node_operator_cache_with_source(
    request: &NnsInventoryRefreshRequest,
    source: &dyn NnsNodeOperatorSource,
) -> Result<(NnsNodeOperatorListReport, NnsNodeOperatorRefreshReport), NnsNodeOperatorHostError> {
    enforce_mainnet_network(&request.cache.network)?;
    let report = fetch_nns_node_operator_list_report_with_source(
        &request.cache.network,
        &request.source_endpoint,
        request.now_unix_secs,
        source,
    )?;
    let write_result = write_nns_leaf_json_refresh_cache(
        request,
        NNS_NODE_OPERATOR_CACHE_DIR,
        NNS_NODE_OPERATOR_CACHE_FILE,
        &report,
    )?;
    let refresh_report = nns_leaf_refresh_report!(
        NnsNodeOperatorRefreshReport,
        NNS_NODE_OPERATOR_REFRESH_REPORT_SCHEMA_VERSION,
        request,
        report,
        write_result,
        node_operator_count,
    );
    Ok((report, refresh_report))
}