novel_openai/spec/files/
form.rs1use crate::error::OpenAIError;
2use crate::spec::files::CreateFileRequest;
3use crate::traits::AsyncTryFrom;
4use crate::util::create_file_part;
5
6impl AsyncTryFrom<CreateFileRequest> for reqwest::multipart::Form {
7 type Error = OpenAIError;
8
9 async fn try_from(request: CreateFileRequest) -> Result<Self, Self::Error> {
10 let file_part = create_file_part(request.file.source).await?;
11 let mut form = reqwest::multipart::Form::new()
12 .part("file", file_part)
13 .text("purpose", request.purpose.to_string());
14
15 if let Some(expires_after) = request.expires_after {
16 form = form
17 .text("expires_after[anchor]", expires_after.anchor.to_string())
18 .text("expires_after[seconds]", expires_after.seconds.to_string());
19 }
20 Ok(form)
21 }
22}