async_openai/
containers.rs1use serde::Serialize;
2
3use crate::{
4 config::Config,
5 container_files::ContainerFiles,
6 error::OpenAIError,
7 types::{
8 ContainerListResource, ContainerResource, CreateContainerRequest, DeleteContainerResponse,
9 },
10 Client,
11};
12
13pub struct Containers<'c, C: Config> {
14 client: &'c Client<C>,
15}
16
17impl<'c, C: Config> Containers<'c, C> {
18 pub fn new(client: &'c Client<C>) -> Self {
19 Self { client }
20 }
21
22 pub fn files(&self, container_id: &str) -> ContainerFiles<'_, C> {
24 ContainerFiles::new(self.client, container_id)
25 }
26
27 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
29 pub async fn create(
30 &self,
31 request: CreateContainerRequest,
32 ) -> Result<ContainerResource, OpenAIError> {
33 self.client.post("/containers", request).await
34 }
35
36 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
38 pub async fn list<Q>(&self, query: &Q) -> Result<ContainerListResource, OpenAIError>
39 where
40 Q: Serialize + ?Sized,
41 {
42 self.client.get_with_query("/containers", &query).await
43 }
44
45 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
47 pub async fn retrieve(&self, container_id: &str) -> Result<ContainerResource, OpenAIError> {
48 self.client
49 .get(format!("/containers/{container_id}").as_str())
50 .await
51 }
52
53 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
55 pub async fn delete(&self, container_id: &str) -> Result<DeleteContainerResponse, OpenAIError> {
56 self.client
57 .delete(format!("/containers/{container_id}").as_str())
58 .await
59 }
60}