use crate::sns::report::{
SnsCanisterReport, SnsCanisterSource, SnsHostError, SnsLookupRequest,
assemble::sns_canister_report_from_parts, live::LiveSnsSource, lookup::resolve_sns_lookup,
source::canonicalize_mainnet_sns_canister_inventory,
};
pub fn build_sns_canister_report(
request: &SnsLookupRequest,
) -> Result<SnsCanisterReport, SnsHostError> {
build_sns_canister_report_with_source(request, &LiveSnsSource)
}
pub fn build_sns_canister_report_with_source(
request: &SnsLookupRequest,
source: &dyn SnsCanisterSource,
) -> Result<SnsCanisterReport, SnsHostError> {
let lookup = resolve_sns_lookup(request, source)?;
let mut inventory = source.fetch_sns_canisters(&lookup.fetch_request, &lookup.sns)?;
canonicalize_mainnet_sns_canister_inventory(&mut inventory)?;
Ok(sns_canister_report_from_parts(
lookup.list,
lookup.id,
lookup.sns,
inventory,
))
}