ic-query 0.84.0

Internet Computer query library for CloudEngine, NNS, SNS, ICRC, system canisters, and public network metadata
Documentation
mod info;
mod list;
mod refresh;

pub use info::subnet_catalog_info_report_text;
pub use list::{subnet_catalog_list_report_text, subnet_catalog_list_report_verbose_text};
pub use refresh::subnet_catalog_refresh_report_text;

use crate::subnet_catalog::{CacheDisposition, SubnetCatalogReportMetadata};
use ic_host_text::escape::terminal_text;

pub(super) fn append_catalog_authority(
    lines: &mut Vec<String>,
    metadata: &SubnetCatalogReportMetadata,
    disposition: CacheDisposition,
) {
    lines.extend([
        format!("assurance: {}", metadata.assurance.as_str()),
        format!("cache_disposition: {}", disposition.as_str()),
        format!(
            "catalog_digest: {}",
            terminal_text(&metadata.catalog_digest)
        ),
        format!(
            "source_endpoints: {}",
            metadata
                .source_endpoints
                .iter()
                .map(|endpoint| terminal_text(endpoint))
                .collect::<Vec<_>>()
                .join(",")
        ),
        format!(
            "agreement_digest: {}",
            metadata.agreement_digest.as_deref().unwrap_or("-")
        ),
        format!(
            "registry_query_call_count: {}",
            metadata.registry_query_call_count
        ),
        format!("routing_source: {}", metadata.routing_source.as_str()),
        format!("registry_record_count: {}", metadata.registry_records.len()),
    ]);
}

pub(super) fn append_catalog_policy(
    lines: &mut Vec<String>,
    metadata: &SubnetCatalogReportMetadata,
) {
    lines.extend([
        format!(
            "collector_version: {}",
            terminal_text(&metadata.collector_version)
        ),
        format!(
            "classification_schema_version: {}",
            metadata.classification_schema_version
        ),
        format!(
            "classification_policy_digest: {}",
            terminal_text(&metadata.classification_policy_digest)
        ),
        format!(
            "resolver_schema_version: {}",
            metadata.resolver_schema_version
        ),
        format!(
            "resolver_backend: {}",
            terminal_text(&metadata.resolver_backend)
        ),
    ]);
}

fn compact_principal(value: &str) -> String {
    crate::text_value::compact_text(value, 5)
}