Skip to main content

openai_core/resources/
files.rs

1//! File namespace implementations.
2
3use http::Method;
4
5use super::{
6    BytesRequestBuilder, DeleteResponse, FileObject, FilesResource, JsonRequestBuilder,
7    ListRequestBuilder, encode_path_segment,
8};
9
10impl FilesResource {
11    /// 创建文件上传请求。
12    pub fn create(&self) -> JsonRequestBuilder<FileObject> {
13        JsonRequestBuilder::new(self.client.clone(), "files.create", Method::POST, "/files")
14    }
15
16    /// 获取文件对象。
17    pub fn retrieve(&self, file_id: impl Into<String>) -> JsonRequestBuilder<FileObject> {
18        JsonRequestBuilder::new(
19            self.client.clone(),
20            "files.retrieve",
21            Method::GET,
22            format!("/files/{}", encode_path_segment(file_id.into())),
23        )
24    }
25
26    /// 列出文件。
27    pub fn list(&self) -> ListRequestBuilder<FileObject> {
28        ListRequestBuilder::new(self.client.clone(), "files.list", "/files")
29    }
30
31    /// 删除文件。
32    pub fn delete(&self, file_id: impl Into<String>) -> JsonRequestBuilder<DeleteResponse> {
33        JsonRequestBuilder::new(
34            self.client.clone(),
35            "files.delete",
36            Method::DELETE,
37            format!("/files/{}", encode_path_segment(file_id.into())),
38        )
39    }
40
41    /// 获取文件内容。
42    pub fn content(&self, file_id: impl Into<String>) -> BytesRequestBuilder {
43        BytesRequestBuilder::new(
44            self.client.clone(),
45            "files.content",
46            Method::GET,
47            format!("/files/{}/content", encode_path_segment(file_id.into())),
48        )
49    }
50}