kordophone: add support for /messages
This commit is contained in:
@@ -9,7 +9,10 @@ use hyper::{Body, Client, Method, Request, Uri};
|
||||
use async_trait::async_trait;
|
||||
use serde::{de::DeserializeOwned, Deserialize, Serialize};
|
||||
|
||||
use crate::{model::{Conversation, JwtToken}, APIInterface};
|
||||
use crate::{
|
||||
model::{Conversation, ConversationID, JwtToken, Message},
|
||||
APIInterface
|
||||
};
|
||||
|
||||
type HttpClient = Client<hyper::client::HttpConnector>;
|
||||
|
||||
@@ -111,6 +114,12 @@ impl APIInterface for HTTPAPIClient {
|
||||
self.auth_token = Some(token.clone());
|
||||
Ok(token)
|
||||
}
|
||||
|
||||
async fn get_messages(&mut self, conversation_id: &ConversationID) -> Result<Vec<Message>, Self::Error> {
|
||||
let endpoint = format!("messages?guid={}", conversation_id);
|
||||
let messages: Vec<Message> = self.request(&endpoint, Method::GET).await?;
|
||||
Ok(messages)
|
||||
}
|
||||
}
|
||||
|
||||
impl HTTPAPIClient {
|
||||
@@ -261,4 +270,18 @@ mod test {
|
||||
let conversations = client.get_conversations().await.unwrap();
|
||||
assert!(!conversations.is_empty());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_messages() {
|
||||
if !mock_client_is_reachable().await {
|
||||
log::warn!("Skipping http_client tests (mock server not reachable)");
|
||||
return;
|
||||
}
|
||||
|
||||
let mut client = local_mock_client();
|
||||
let conversations = client.get_conversations().await.unwrap();
|
||||
let conversation = conversations.first().unwrap();
|
||||
let messages = client.get_messages(&conversation.guid).await.unwrap();
|
||||
assert!(!messages.is_empty());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user