77import httpx
88
99from ..._types import NOT_GIVEN , Body , Query , Headers , NotGiven
10+ from ..._utils import maybe_transform , async_maybe_transform
1011from ..._compat import cached_property
1112from ..._resource import SyncAPIResource , AsyncAPIResource
1213from ..._response import (
1718)
1819from ..._wrappers import ResultWrapper
1920from ..._base_client import make_request_options
21+ from ...types .stream import download_create_params
22+ from ...types .stream .download_delete_response import DownloadDeleteResponse
2023
2124__all__ = ["DownloadsResource" , "AsyncDownloadsResource" ]
2225
@@ -41,6 +44,96 @@ def with_streaming_response(self) -> DownloadsResourceWithStreamingResponse:
4144 """
4245 return DownloadsResourceWithStreamingResponse (self )
4346
47+ def create (
48+ self ,
49+ identifier : str ,
50+ * ,
51+ account_id : str ,
52+ body : object ,
53+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
54+ # The extra values given here take precedence over values defined on the client or passed to this method.
55+ extra_headers : Headers | None = None ,
56+ extra_query : Query | None = None ,
57+ extra_body : Body | None = None ,
58+ timeout : float | httpx .Timeout | None | NotGiven = NOT_GIVEN ,
59+ ) -> object :
60+ """
61+ Creates a download for a video when a video is ready to view.
62+
63+ Args:
64+ account_id: Identifier.
65+
66+ identifier: A Cloudflare-generated unique identifier for a media item.
67+
68+ extra_headers: Send extra headers
69+
70+ extra_query: Add additional query parameters to the request
71+
72+ extra_body: Add additional JSON properties to the request
73+
74+ timeout: Override the client-level default timeout for this request, in seconds
75+ """
76+ if not account_id :
77+ raise ValueError (f"Expected a non-empty value for `account_id` but received { account_id !r} " )
78+ if not identifier :
79+ raise ValueError (f"Expected a non-empty value for `identifier` but received { identifier !r} " )
80+ return self ._post (
81+ f"/accounts/{ account_id } /stream/{ identifier } /downloads" ,
82+ body = maybe_transform (body , download_create_params .DownloadCreateParams ),
83+ options = make_request_options (
84+ extra_headers = extra_headers ,
85+ extra_query = extra_query ,
86+ extra_body = extra_body ,
87+ timeout = timeout ,
88+ post_parser = ResultWrapper [Optional [object ]]._unwrapper ,
89+ ),
90+ cast_to = cast (Type [object ], ResultWrapper [object ]),
91+ )
92+
93+ def delete (
94+ self ,
95+ identifier : str ,
96+ * ,
97+ account_id : str ,
98+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
99+ # The extra values given here take precedence over values defined on the client or passed to this method.
100+ extra_headers : Headers | None = None ,
101+ extra_query : Query | None = None ,
102+ extra_body : Body | None = None ,
103+ timeout : float | httpx .Timeout | None | NotGiven = NOT_GIVEN ,
104+ ) -> str :
105+ """
106+ Delete the downloads for a video.
107+
108+ Args:
109+ account_id: Identifier.
110+
111+ identifier: A Cloudflare-generated unique identifier for a media item.
112+
113+ extra_headers: Send extra headers
114+
115+ extra_query: Add additional query parameters to the request
116+
117+ extra_body: Add additional JSON properties to the request
118+
119+ timeout: Override the client-level default timeout for this request, in seconds
120+ """
121+ if not account_id :
122+ raise ValueError (f"Expected a non-empty value for `account_id` but received { account_id !r} " )
123+ if not identifier :
124+ raise ValueError (f"Expected a non-empty value for `identifier` but received { identifier !r} " )
125+ return self ._delete (
126+ f"/accounts/{ account_id } /stream/{ identifier } /downloads" ,
127+ options = make_request_options (
128+ extra_headers = extra_headers ,
129+ extra_query = extra_query ,
130+ extra_body = extra_body ,
131+ timeout = timeout ,
132+ post_parser = ResultWrapper [Optional [DownloadDeleteResponse ]]._unwrapper ,
133+ ),
134+ cast_to = cast (Type [str ], ResultWrapper [str ]),
135+ )
136+
44137 def get (
45138 self ,
46139 identifier : str ,
@@ -106,6 +199,96 @@ def with_streaming_response(self) -> AsyncDownloadsResourceWithStreamingResponse
106199 """
107200 return AsyncDownloadsResourceWithStreamingResponse (self )
108201
202+ async def create (
203+ self ,
204+ identifier : str ,
205+ * ,
206+ account_id : str ,
207+ body : object ,
208+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
209+ # The extra values given here take precedence over values defined on the client or passed to this method.
210+ extra_headers : Headers | None = None ,
211+ extra_query : Query | None = None ,
212+ extra_body : Body | None = None ,
213+ timeout : float | httpx .Timeout | None | NotGiven = NOT_GIVEN ,
214+ ) -> object :
215+ """
216+ Creates a download for a video when a video is ready to view.
217+
218+ Args:
219+ account_id: Identifier.
220+
221+ identifier: A Cloudflare-generated unique identifier for a media item.
222+
223+ extra_headers: Send extra headers
224+
225+ extra_query: Add additional query parameters to the request
226+
227+ extra_body: Add additional JSON properties to the request
228+
229+ timeout: Override the client-level default timeout for this request, in seconds
230+ """
231+ if not account_id :
232+ raise ValueError (f"Expected a non-empty value for `account_id` but received { account_id !r} " )
233+ if not identifier :
234+ raise ValueError (f"Expected a non-empty value for `identifier` but received { identifier !r} " )
235+ return await self ._post (
236+ f"/accounts/{ account_id } /stream/{ identifier } /downloads" ,
237+ body = await async_maybe_transform (body , download_create_params .DownloadCreateParams ),
238+ options = make_request_options (
239+ extra_headers = extra_headers ,
240+ extra_query = extra_query ,
241+ extra_body = extra_body ,
242+ timeout = timeout ,
243+ post_parser = ResultWrapper [Optional [object ]]._unwrapper ,
244+ ),
245+ cast_to = cast (Type [object ], ResultWrapper [object ]),
246+ )
247+
248+ async def delete (
249+ self ,
250+ identifier : str ,
251+ * ,
252+ account_id : str ,
253+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
254+ # The extra values given here take precedence over values defined on the client or passed to this method.
255+ extra_headers : Headers | None = None ,
256+ extra_query : Query | None = None ,
257+ extra_body : Body | None = None ,
258+ timeout : float | httpx .Timeout | None | NotGiven = NOT_GIVEN ,
259+ ) -> str :
260+ """
261+ Delete the downloads for a video.
262+
263+ Args:
264+ account_id: Identifier.
265+
266+ identifier: A Cloudflare-generated unique identifier for a media item.
267+
268+ extra_headers: Send extra headers
269+
270+ extra_query: Add additional query parameters to the request
271+
272+ extra_body: Add additional JSON properties to the request
273+
274+ timeout: Override the client-level default timeout for this request, in seconds
275+ """
276+ if not account_id :
277+ raise ValueError (f"Expected a non-empty value for `account_id` but received { account_id !r} " )
278+ if not identifier :
279+ raise ValueError (f"Expected a non-empty value for `identifier` but received { identifier !r} " )
280+ return await self ._delete (
281+ f"/accounts/{ account_id } /stream/{ identifier } /downloads" ,
282+ options = make_request_options (
283+ extra_headers = extra_headers ,
284+ extra_query = extra_query ,
285+ extra_body = extra_body ,
286+ timeout = timeout ,
287+ post_parser = ResultWrapper [Optional [DownloadDeleteResponse ]]._unwrapper ,
288+ ),
289+ cast_to = cast (Type [str ], ResultWrapper [str ]),
290+ )
291+
109292 async def get (
110293 self ,
111294 identifier : str ,
@@ -155,6 +338,12 @@ class DownloadsResourceWithRawResponse:
155338 def __init__ (self , downloads : DownloadsResource ) -> None :
156339 self ._downloads = downloads
157340
341+ self .create = to_raw_response_wrapper (
342+ downloads .create ,
343+ )
344+ self .delete = to_raw_response_wrapper (
345+ downloads .delete ,
346+ )
158347 self .get = to_raw_response_wrapper (
159348 downloads .get ,
160349 )
@@ -164,6 +353,12 @@ class AsyncDownloadsResourceWithRawResponse:
164353 def __init__ (self , downloads : AsyncDownloadsResource ) -> None :
165354 self ._downloads = downloads
166355
356+ self .create = async_to_raw_response_wrapper (
357+ downloads .create ,
358+ )
359+ self .delete = async_to_raw_response_wrapper (
360+ downloads .delete ,
361+ )
167362 self .get = async_to_raw_response_wrapper (
168363 downloads .get ,
169364 )
@@ -173,6 +368,12 @@ class DownloadsResourceWithStreamingResponse:
173368 def __init__ (self , downloads : DownloadsResource ) -> None :
174369 self ._downloads = downloads
175370
371+ self .create = to_streamed_response_wrapper (
372+ downloads .create ,
373+ )
374+ self .delete = to_streamed_response_wrapper (
375+ downloads .delete ,
376+ )
176377 self .get = to_streamed_response_wrapper (
177378 downloads .get ,
178379 )
@@ -182,6 +383,12 @@ class AsyncDownloadsResourceWithStreamingResponse:
182383 def __init__ (self , downloads : AsyncDownloadsResource ) -> None :
183384 self ._downloads = downloads
184385
386+ self .create = async_to_streamed_response_wrapper (
387+ downloads .create ,
388+ )
389+ self .delete = async_to_streamed_response_wrapper (
390+ downloads .delete ,
391+ )
185392 self .get = async_to_streamed_response_wrapper (
186393 downloads .get ,
187394 )
0 commit comments