chainsight-sdk-v2 0.1.0

Chainsight SDK for DFINITY Internet Computer
Documentation
use candid::Principal;
use chainsight_sdk_v2_types::SnapshotValue;
use ic_cdk::api::call::CallResult;

use crate::transport::DefaultTransport;

#[derive(Clone)]
pub struct Indexer {
    principal: Principal,
    transport: DefaultTransport,
}
impl Indexer {
    pub fn new(principal: &Principal) -> Self {
        Indexer {
            principal: principal.clone(),
            transport: DefaultTransport::new(),
        }
    }
    pub async fn get_value(&self, key: String) -> anyhow::Result<Option<SnapshotValue>> {
        let out: CallResult<(Option<SnapshotValue>,)> = (self.transport)
            .call(&self.principal, "get_value", (key,))
            .await;
        match out {
            Ok((Some(value),)) => Ok(Some(value)),
            Ok((None,)) => Ok(None),
            Err(err) => Err(anyhow::anyhow!("Error: {:?}", err)),
        }
    }
}