pub mod routes;
use crate::{
client::{node_api::error::Error as NodeApiError, Client, ClientError},
types::{
api::core::{OutputResponse, OutputWithMetadataResponse},
block::output::{OutputId, OutputMetadata},
},
};
impl Client {
pub async fn get_outputs(&self, output_ids: &[OutputId]) -> Result<Vec<OutputResponse>, ClientError> {
futures::future::try_join_all(output_ids.iter().map(|id| self.get_output(id))).await
}
pub async fn get_outputs_ignore_not_found(
&self,
output_ids: &[OutputId],
) -> Result<Vec<OutputResponse>, ClientError> {
futures::future::join_all(output_ids.iter().map(|id| self.get_output(id)))
.await
.into_iter()
.filter(|res| !matches!(res, Err(ClientError::Node(NodeApiError::NotFound(_)))))
.collect()
}
pub async fn get_outputs_metadata(&self, output_ids: &[OutputId]) -> Result<Vec<OutputMetadata>, ClientError> {
futures::future::try_join_all(output_ids.iter().map(|id| self.get_output_metadata(id))).await
}
pub async fn get_outputs_metadata_ignore_not_found(
&self,
output_ids: &[OutputId],
) -> Result<Vec<OutputMetadata>, ClientError> {
futures::future::join_all(output_ids.iter().map(|id| self.get_output_metadata(id)))
.await
.into_iter()
.filter(|res| !matches!(res, Err(ClientError::Node(NodeApiError::NotFound(_)))))
.collect()
}
pub async fn get_outputs_with_metadata(
&self,
output_ids: &[OutputId],
) -> Result<Vec<OutputWithMetadataResponse>, ClientError> {
futures::future::try_join_all(output_ids.iter().map(|id| self.get_output_with_metadata(id))).await
}
pub async fn get_outputs_with_metadata_ignore_not_found(
&self,
output_ids: &[OutputId],
) -> Result<Vec<OutputWithMetadataResponse>, ClientError> {
futures::future::join_all(output_ids.iter().map(|id| self.get_output_with_metadata(id)))
.await
.into_iter()
.filter(|res| !matches!(res, Err(ClientError::Node(NodeApiError::NotFound(_)))))
.collect()
}
}