async_openai_alt/
message_files.rs

1use serde::Serialize;
2
3use crate::{
4    config::Config,
5    error::OpenAIError,
6    types::{ListMessageFilesResponse, MessageFileObject},
7    Client,
8};
9
10/// Files attached to a message.
11pub struct MessageFiles<'c, C: Config> {
12    client: &'c Client<C>,
13    pub thread_id: String,
14    pub message_id: String,
15}
16
17impl<'c, C: Config> MessageFiles<'c, C> {
18    pub fn new(client: &'c Client<C>, thread_id: &str, message_id: &str) -> Self {
19        Self {
20            client,
21            thread_id: thread_id.into(),
22            message_id: message_id.into(),
23        }
24    }
25
26    /// Retrieves a message file.
27    pub async fn retrieve(&self, file_id: &str) -> Result<MessageFileObject, OpenAIError> {
28        self.client
29            .get(&format!(
30                "/threads/{}/messages/{}/files/{file_id}",
31                self.thread_id, self.message_id
32            ))
33            .await
34    }
35
36    /// Returns a list of message files.
37    pub async fn list<Q>(&self, query: &Q) -> Result<ListMessageFilesResponse, OpenAIError>
38    where
39        Q: Serialize + ?Sized,
40    {
41        self.client
42            .get_with_query(
43                &format!(
44                    "/threads/{}/messages/{}/files",
45                    self.thread_id, self.message_id
46                ),
47                query,
48            )
49            .await
50    }
51}