use serde::{Deserialize, Serialize};
#[derive(Serialize, Debug, Clone)]
pub struct ImageArguments {
pub prompt: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub n: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quality: Option<String>,
#[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(),
model: None,
n: None,
size: None,
quality: 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>,
}