Skip to main content

novel_openai/spec/files/
form.rs

1use 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}