use crate::sns::report::{
SnsHostError, SnsLookupRequest, SnsUpgradeReport, SnsUpgradeSource,
assemble::sns_upgrade_report_from_parts, live::LiveSnsSource, lookup::resolve_sns_lookup,
source::canonicalize_mainnet_sns_upgrade,
};
pub async fn build_sns_upgrade_report(
request: &SnsLookupRequest,
) -> Result<SnsUpgradeReport, SnsHostError> {
build_sns_upgrade_report_with_source(request, &LiveSnsSource::default()).await
}
pub async fn build_sns_upgrade_report_with_source(
request: &SnsLookupRequest,
source: &dyn SnsUpgradeSource,
) -> Result<SnsUpgradeReport, SnsHostError> {
let lookup = resolve_sns_lookup(request, source).await?;
let upgrade = source
.fetch_sns_upgrade(&lookup.fetch_request, &lookup.sns)
.await?;
canonicalize_mainnet_sns_upgrade(&upgrade, &lookup.sns.governance_canister_id)?;
Ok(sns_upgrade_report_from_parts(
lookup.fetch_request,
lookup.sns,
upgrade,
))
}