1#![allow(deprecated)]
2
3use crate::{
4 config::Config,
5 error::OpenAIError,
6 types::videos::{
7 CreateVideoCharacterRequest, CreateVideoEditRequest, CreateVideoExtendRequest,
8 CreateVideoRequest, DeletedVideoResource, RemixVideoRequest, VideoCharacterResource,
9 VideoListResource, VideoResource,
10 },
11 Client, RequestOptions,
12};
13use bytes::Bytes;
14
15#[deprecated(note = "The Videos API is deprecated.")]
18pub struct Videos<'c, C: Config> {
19 client: &'c Client<C>,
20 pub(crate) request_options: RequestOptions,
21}
22
23impl<'c, C: Config> Videos<'c, C> {
24 pub fn new(client: &'c Client<C>) -> Self {
25 Self {
26 client,
27 request_options: RequestOptions::new(),
28 }
29 }
30
31 #[crate::byot(
33 T0 = Clone,
34 R = serde::de::DeserializeOwned,
35 where_clause = "reqwest::multipart::Form: crate::traits::AsyncTryFrom<T0, Error = OpenAIError>, T0: crate::traits::MaybeSend + 'static",
36 )]
37 pub async fn create(&self, request: CreateVideoRequest) -> Result<VideoResource, OpenAIError> {
38 self.client
39 .post_form("/videos", request, &self.request_options)
40 .await
41 }
42
43 #[crate::byot(T0 = std::fmt::Display, T1 = serde::Serialize, R = serde::de::DeserializeOwned)]
45 pub async fn remix(
46 &self,
47 video_id: &str,
48 request: RemixVideoRequest,
49 ) -> Result<VideoResource, OpenAIError> {
50 self.client
51 .post(
52 &format!("/videos/{video_id}/remix"),
53 request,
54 &self.request_options,
55 )
56 .await
57 }
58
59 #[crate::byot(
61 T0 = Clone,
62 R = serde::de::DeserializeOwned,
63 where_clause = "reqwest::multipart::Form: crate::traits::AsyncTryFrom<T0, Error = OpenAIError>, T0: crate::traits::MaybeSend + 'static",
64 )]
65 pub async fn create_character(
66 &self,
67 request: CreateVideoCharacterRequest,
68 ) -> Result<VideoCharacterResource, OpenAIError> {
69 self.client
70 .post_form("/videos/characters", request, &self.request_options)
71 .await
72 }
73
74 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
76 pub async fn get_character(
77 &self,
78 character_id: &str,
79 ) -> Result<VideoCharacterResource, OpenAIError> {
80 self.client
81 .get(
82 &format!("/videos/characters/{character_id}"),
83 &self.request_options,
84 )
85 .await
86 }
87
88 #[crate::byot(
90 T0 = Clone,
91 R = serde::de::DeserializeOwned,
92 where_clause = "reqwest::multipart::Form: crate::traits::AsyncTryFrom<T0, Error = OpenAIError>, T0: crate::traits::MaybeSend + 'static",
93 )]
94 pub async fn edit(
95 &self,
96 request: CreateVideoEditRequest,
97 ) -> Result<VideoResource, OpenAIError> {
98 self.client
99 .post_form("/videos/edits", request, &self.request_options)
100 .await
101 }
102
103 #[crate::byot(
105 T0 = Clone,
106 R = serde::de::DeserializeOwned,
107 where_clause = "reqwest::multipart::Form: crate::traits::AsyncTryFrom<T0, Error = OpenAIError>, T0: crate::traits::MaybeSend + 'static",
108 )]
109 pub async fn extend(
110 &self,
111 request: CreateVideoExtendRequest,
112 ) -> Result<VideoResource, OpenAIError> {
113 self.client
114 .post_form("/videos/extensions", request, &self.request_options)
115 .await
116 }
117
118 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
120 pub async fn retrieve(&self, video_id: &str) -> Result<VideoResource, OpenAIError> {
121 self.client
122 .get(&format!("/videos/{}", video_id), &self.request_options)
123 .await
124 }
125
126 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
128 pub async fn delete(&self, video_id: &str) -> Result<DeletedVideoResource, OpenAIError> {
129 self.client
130 .delete(&format!("/videos/{}", video_id), &self.request_options)
131 .await
132 }
133
134 #[crate::byot(R = serde::de::DeserializeOwned)]
136 pub async fn list(&self) -> Result<VideoListResource, OpenAIError> {
137 self.client.get("/videos", &self.request_options).await
138 }
139
140 pub async fn download_content(&self, video_id: &str) -> Result<Bytes, OpenAIError> {
143 let (bytes, _headers) = self
144 .client
145 .get_raw(
146 &format!("/videos/{video_id}/content"),
147 &self.request_options,
148 )
149 .await?;
150 Ok(bytes)
151 }
152}