diff --git a/crates/aleph-cli/src/main.rs b/crates/aleph-cli/src/main.rs index fe7a8ed..e55adce 100644 --- a/crates/aleph-cli/src/main.rs +++ b/crates/aleph-cli/src/main.rs @@ -1,5 +1,5 @@ use crate::cli::{Cli, GetMessageArgs, MessageCommand}; -use aleph_sdk::client::AlephClient; +use aleph_sdk::client::{AlephClient, AlephMessageClient}; use clap::Parser; use url::Url; diff --git a/crates/aleph-sdk/src/client.rs b/crates/aleph-sdk/src/client.rs index d9fc877..39f077b 100644 --- a/crates/aleph-sdk/src/client.rs +++ b/crates/aleph-sdk/src/client.rs @@ -191,6 +191,17 @@ pub struct GetMessagesResponse { pub pagination_total: u32, } +#[allow(async_fn_in_trait)] +pub trait AlephMessageClient { + async fn get_message(&self, item_hash: &ItemHash) -> Result; + async fn get_messages(&self, filter: &MessageFilter) -> Result, MessageError>; +} + +#[allow(async_fn_in_trait)] +pub trait AlephStorageClient { + async fn get_file_size(&self, file_hash: &ItemHash) -> Result; +} + impl AlephClient { pub fn new(ccn_url: Url) -> Self { Self { @@ -198,14 +209,13 @@ impl AlephClient { ccn_url, } } +} +impl AlephMessageClient for AlephClient { /// Queries a message by item hash. /// /// Returns the message with its corresponding status. - pub async fn get_message( - &self, - item_hash: &ItemHash, - ) -> Result { + async fn get_message(&self, item_hash: &ItemHash) -> Result { let url = self .ccn_url .join(&format!("/api/v0/messages/{}", item_hash)) @@ -222,7 +232,7 @@ impl AlephClient { Ok(get_message_response.message) } - pub async fn get_messages(&self, filter: &MessageFilter) -> Result, MessageError> { + async fn get_messages(&self, filter: &MessageFilter) -> Result, MessageError> { let url = self .ccn_url .join("/api/v0/messages.json") @@ -239,8 +249,10 @@ impl AlephClient { let get_messages_response: GetMessagesResponse = response.json().await?; Ok(get_messages_response.messages) } +} - pub async fn get_file_size(&self, file_hash: &ItemHash) -> Result { +impl AlephStorageClient for AlephClient { + async fn get_file_size(&self, file_hash: &ItemHash) -> Result { let url = self .ccn_url .join(&format!("/api/v0/storage/raw/{}", file_hash))