use serde::{Deserialize, Serialize};
#[derive(Serialize, Debug, Clone)]
pub enum ResponseFormat {
Url,
Base64JSON,
}
#[derive(Serialize, Debug, Clone)]
pub struct ImageArguments {
pub prompt: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub n: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub response_format: Option<ResponseFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
}
impl ImageArguments {
pub fn new(prompt: impl AsRef<str>) -> Self {
Self {
prompt: prompt.as_ref().to_owned(),
n: None,
response_format: None,
size: None,
user: None,
}
}
}
#[derive(Deserialize, Debug)]
pub(crate) enum ImageObject {
#[serde(alias = "url")]
Url(String),
#[serde(alias = "b64_json")]
Base64JSON(String),
}
#[derive(Deserialize, Debug)]
pub(crate) struct ImageResponse {
#[allow(dead_code)]
created: u32,
pub data: Vec<ImageObject>,
}