use crate::report::CollectionSourceRequest;
use crate::sns::report::{
SNS_REFRESH_MAX_PAGE_SIZE, SnsHostError, SnsListRequest, enforce_mainnet_network,
};
use ic_platform::candid::contract::Principal;
pub(in crate::sns::report) fn parse_sns_root_canister_input(
input: &str,
) -> Result<String, SnsHostError> {
Principal::from_text(input)
.map_err(|_| SnsHostError::InvalidLookup {
input: input.to_string(),
})
.map(|principal| principal.to_text())
}
pub(in crate::sns::report) fn validate_sns_refresh_page_size(
page_size: u32,
) -> Result<(), SnsHostError> {
if (1..=SNS_REFRESH_MAX_PAGE_SIZE).contains(&page_size) {
return Ok(());
}
Err(SnsHostError::InvalidRefreshPageSize {
page_size,
max_page_size: SNS_REFRESH_MAX_PAGE_SIZE,
})
}
pub(in crate::sns::report) fn sns_list_fetch_request(
request: &SnsListRequest,
) -> Result<CollectionSourceRequest, SnsHostError> {
enforce_mainnet_network(&request.network)?;
Ok(CollectionSourceRequest::from_unix_secs(
&request.network,
&request.source_endpoint,
request.now_unix_secs,
"ic-query",
))
}