Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion crates/aleph-cli/src/main.rs
Original file line number Diff line number Diff line change
@@ -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;

Expand Down
24 changes: 18 additions & 6 deletions crates/aleph-sdk/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,21 +191,31 @@ pub struct GetMessagesResponse {
pub pagination_total: u32,
}

#[allow(async_fn_in_trait)]
pub trait AlephMessageClient {
async fn get_message(&self, item_hash: &ItemHash) -> Result<MessageWithStatus, MessageError>;
async fn get_messages(&self, filter: &MessageFilter) -> Result<Vec<Message>, MessageError>;
}

#[allow(async_fn_in_trait)]
pub trait AlephStorageClient {
async fn get_file_size(&self, file_hash: &ItemHash) -> Result<Bytes, MessageError>;
}

impl AlephClient {
pub fn new(ccn_url: Url) -> Self {
Self {
http_client: reqwest::Client::new(),
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<MessageWithStatus, MessageError> {
async fn get_message(&self, item_hash: &ItemHash) -> Result<MessageWithStatus, MessageError> {
let url = self
.ccn_url
.join(&format!("/api/v0/messages/{}", item_hash))
Expand All @@ -222,7 +232,7 @@ impl AlephClient {
Ok(get_message_response.message)
}

pub async fn get_messages(&self, filter: &MessageFilter) -> Result<Vec<Message>, MessageError> {
async fn get_messages(&self, filter: &MessageFilter) -> Result<Vec<Message>, MessageError> {
let url = self
.ccn_url
.join("/api/v0/messages.json")
Expand All @@ -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<Bytes, MessageError> {
impl AlephStorageClient for AlephClient {
async fn get_file_size(&self, file_hash: &ItemHash) -> Result<Bytes, MessageError> {
let url = self
.ccn_url
.join(&format!("/api/v0/storage/raw/{}", file_hash))
Expand Down