dynamo_async_openai/
image.rs1use crate::{
12 Client,
13 config::Config,
14 error::OpenAIError,
15 types::{
16 CreateImageEditRequest, CreateImageRequest, CreateImageVariationRequest, ImagesResponse,
17 },
18};
19
20pub struct Images<'c, C: Config> {
24 client: &'c Client<C>,
25}
26
27impl<'c, C: Config> Images<'c, C> {
28 pub fn new(client: &'c Client<C>) -> Self {
29 Self { client }
30 }
31
32 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
34 pub async fn create(&self, request: CreateImageRequest) -> Result<ImagesResponse, OpenAIError> {
35 self.client.post("/images/generations", request).await
36 }
37
38 #[crate::byot(
40 T0 = Clone,
41 R = serde::de::DeserializeOwned,
42 where_clause = "reqwest::multipart::Form: crate::traits::AsyncTryFrom<T0, Error = OpenAIError>",
43 )]
44 pub async fn create_edit(
45 &self,
46 request: CreateImageEditRequest,
47 ) -> Result<ImagesResponse, OpenAIError> {
48 self.client.post_form("/images/edits", request).await
49 }
50
51 #[crate::byot(
53 T0 = Clone,
54 R = serde::de::DeserializeOwned,
55 where_clause = "reqwest::multipart::Form: crate::traits::AsyncTryFrom<T0, Error = OpenAIError>",
56 )]
57 pub async fn create_variation(
58 &self,
59 request: CreateImageVariationRequest,
60 ) -> Result<ImagesResponse, OpenAIError> {
61 self.client.post_form("/images/variations", request).await
62 }
63}