Skip to main content

novel_openai/spec/containers/
form.rs

1use crate::error::OpenAIError;
2use crate::spec::containers::CreateContainerFileRequest;
3use crate::traits::AsyncTryFrom;
4use crate::util::create_file_part;
5
6impl AsyncTryFrom<CreateContainerFileRequest> for reqwest::multipart::Form {
7    type Error = OpenAIError;
8
9    async fn try_from(request: CreateContainerFileRequest) -> Result<Self, Self::Error> {
10        let mut form = reqwest::multipart::Form::new();
11
12        // Either file or file_id should be provided
13        if let Some(file_source) = request.file {
14            let file_part = create_file_part(file_source).await?;
15            form = form.part("file", file_part);
16        } else if let Some(file_id) = request.file_id {
17            form = form.text("file_id", file_id);
18        }
19
20        Ok(form)
21    }
22}