66
77import httpx
88
9- from ..types import asset_upload_params , asset_download_params , asset_upload_base64_params
10- from .._types import Body , Omit , Query , Headers , NotGiven , FileTypes , omit , not_given
9+ from ..types import asset_serve_params , asset_upload_params , asset_download_params , asset_upload_base64_params
10+ from .._types import Body , Omit , Query , Headers , NoneType , NotGiven , FileTypes , omit , not_given
1111from .._utils import extract_files , maybe_transform , deepcopy_minimal , async_maybe_transform
1212from .._compat import cached_property
1313from .._resource import SyncAPIResource , AsyncAPIResource
@@ -82,6 +82,46 @@ def download(
8282 cast_to = AssetDownloadResponse ,
8383 )
8484
85+ def serve (
86+ self ,
87+ * ,
88+ url : str ,
89+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
90+ # The extra values given here take precedence over values defined on the client or passed to this method.
91+ extra_headers : Headers | None = None ,
92+ extra_query : Query | None = None ,
93+ extra_body : Body | None = None ,
94+ timeout : float | httpx .Timeout | None | NotGiven = not_given ,
95+ ) -> None :
96+ """Stream a file given an mxc://, localmxc://, or file:// URL.
97+
98+ Downloads first if
99+ not cached. Supports Range requests for seeking in large files.
100+
101+ Args:
102+ url: Asset URL to serve. Accepts mxc://, localmxc://, or file:// URLs.
103+
104+ extra_headers: Send extra headers
105+
106+ extra_query: Add additional query parameters to the request
107+
108+ extra_body: Add additional JSON properties to the request
109+
110+ timeout: Override the client-level default timeout for this request, in seconds
111+ """
112+ extra_headers = {"Accept" : "*/*" , ** (extra_headers or {})}
113+ return self ._get (
114+ "/v1/assets/serve" ,
115+ options = make_request_options (
116+ extra_headers = extra_headers ,
117+ extra_query = extra_query ,
118+ extra_body = extra_body ,
119+ timeout = timeout ,
120+ query = maybe_transform ({"url" : url }, asset_serve_params .AssetServeParams ),
121+ ),
122+ cast_to = NoneType ,
123+ )
124+
85125 def upload (
86126 self ,
87127 * ,
@@ -245,6 +285,46 @@ async def download(
245285 cast_to = AssetDownloadResponse ,
246286 )
247287
288+ async def serve (
289+ self ,
290+ * ,
291+ url : str ,
292+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
293+ # The extra values given here take precedence over values defined on the client or passed to this method.
294+ extra_headers : Headers | None = None ,
295+ extra_query : Query | None = None ,
296+ extra_body : Body | None = None ,
297+ timeout : float | httpx .Timeout | None | NotGiven = not_given ,
298+ ) -> None :
299+ """Stream a file given an mxc://, localmxc://, or file:// URL.
300+
301+ Downloads first if
302+ not cached. Supports Range requests for seeking in large files.
303+
304+ Args:
305+ url: Asset URL to serve. Accepts mxc://, localmxc://, or file:// URLs.
306+
307+ extra_headers: Send extra headers
308+
309+ extra_query: Add additional query parameters to the request
310+
311+ extra_body: Add additional JSON properties to the request
312+
313+ timeout: Override the client-level default timeout for this request, in seconds
314+ """
315+ extra_headers = {"Accept" : "*/*" , ** (extra_headers or {})}
316+ return await self ._get (
317+ "/v1/assets/serve" ,
318+ options = make_request_options (
319+ extra_headers = extra_headers ,
320+ extra_query = extra_query ,
321+ extra_body = extra_body ,
322+ timeout = timeout ,
323+ query = await async_maybe_transform ({"url" : url }, asset_serve_params .AssetServeParams ),
324+ ),
325+ cast_to = NoneType ,
326+ )
327+
248328 async def upload (
249329 self ,
250330 * ,
@@ -358,6 +438,9 @@ def __init__(self, assets: AssetsResource) -> None:
358438 self .download = to_raw_response_wrapper (
359439 assets .download ,
360440 )
441+ self .serve = to_raw_response_wrapper (
442+ assets .serve ,
443+ )
361444 self .upload = to_raw_response_wrapper (
362445 assets .upload ,
363446 )
@@ -373,6 +456,9 @@ def __init__(self, assets: AsyncAssetsResource) -> None:
373456 self .download = async_to_raw_response_wrapper (
374457 assets .download ,
375458 )
459+ self .serve = async_to_raw_response_wrapper (
460+ assets .serve ,
461+ )
376462 self .upload = async_to_raw_response_wrapper (
377463 assets .upload ,
378464 )
@@ -388,6 +474,9 @@ def __init__(self, assets: AssetsResource) -> None:
388474 self .download = to_streamed_response_wrapper (
389475 assets .download ,
390476 )
477+ self .serve = to_streamed_response_wrapper (
478+ assets .serve ,
479+ )
391480 self .upload = to_streamed_response_wrapper (
392481 assets .upload ,
393482 )
@@ -403,6 +492,9 @@ def __init__(self, assets: AsyncAssetsResource) -> None:
403492 self .download = async_to_streamed_response_wrapper (
404493 assets .download ,
405494 )
495+ self .serve = async_to_streamed_response_wrapper (
496+ assets .serve ,
497+ )
406498 self .upload = async_to_streamed_response_wrapper (
407499 assets .upload ,
408500 )
0 commit comments