@@ -221,6 +221,59 @@ def _stream() -> HttpResponse[typing.Iterator[bytes]]:
221221
222222 yield _stream ()
223223
224+ @contextlib .contextmanager
225+ def get_raw_message (
226+ self , inbox_id : InboxId , message_id : MessageId , * , request_options : typing .Optional [RequestOptions ] = None
227+ ) -> typing .Iterator [HttpResponse [typing .Iterator [bytes ]]]:
228+ """
229+ Parameters
230+ ----------
231+ inbox_id : InboxId
232+
233+ message_id : MessageId
234+
235+ request_options : typing.Optional[RequestOptions]
236+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
237+
238+ Returns
239+ -------
240+ typing.Iterator[HttpResponse[typing.Iterator[bytes]]]
241+ """
242+ with self ._client_wrapper .httpx_client .stream (
243+ f"v0/inboxes/{ jsonable_encoder (inbox_id )} /messages/{ jsonable_encoder (message_id )} /raw" ,
244+ base_url = self ._client_wrapper .get_environment ().http ,
245+ method = "GET" ,
246+ request_options = request_options ,
247+ ) as _response :
248+
249+ def _stream () -> HttpResponse [typing .Iterator [bytes ]]:
250+ try :
251+ if 200 <= _response .status_code < 300 :
252+ _chunk_size = request_options .get ("chunk_size" , None ) if request_options is not None else None
253+ return HttpResponse (
254+ response = _response , data = (_chunk for _chunk in _response .iter_bytes (chunk_size = _chunk_size ))
255+ )
256+ _response .read ()
257+ if _response .status_code == 404 :
258+ raise NotFoundError (
259+ headers = dict (_response .headers ),
260+ body = typing .cast (
261+ ErrorResponse ,
262+ construct_type (
263+ type_ = ErrorResponse , # type: ignore
264+ object_ = _response .json (),
265+ ),
266+ ),
267+ )
268+ _response_json = _response .json ()
269+ except JSONDecodeError :
270+ raise ApiError (
271+ status_code = _response .status_code , headers = dict (_response .headers ), body = _response .text
272+ )
273+ raise ApiError (status_code = _response .status_code , headers = dict (_response .headers ), body = _response_json )
274+
275+ yield _stream ()
276+
224277 def send (
225278 self ,
226279 inbox_id : InboxId ,
@@ -714,6 +767,60 @@ async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[bytes]]:
714767
715768 yield await _stream ()
716769
770+ @contextlib .asynccontextmanager
771+ async def get_raw_message (
772+ self , inbox_id : InboxId , message_id : MessageId , * , request_options : typing .Optional [RequestOptions ] = None
773+ ) -> typing .AsyncIterator [AsyncHttpResponse [typing .AsyncIterator [bytes ]]]:
774+ """
775+ Parameters
776+ ----------
777+ inbox_id : InboxId
778+
779+ message_id : MessageId
780+
781+ request_options : typing.Optional[RequestOptions]
782+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
783+
784+ Returns
785+ -------
786+ typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]
787+ """
788+ async with self ._client_wrapper .httpx_client .stream (
789+ f"v0/inboxes/{ jsonable_encoder (inbox_id )} /messages/{ jsonable_encoder (message_id )} /raw" ,
790+ base_url = self ._client_wrapper .get_environment ().http ,
791+ method = "GET" ,
792+ request_options = request_options ,
793+ ) as _response :
794+
795+ async def _stream () -> AsyncHttpResponse [typing .AsyncIterator [bytes ]]:
796+ try :
797+ if 200 <= _response .status_code < 300 :
798+ _chunk_size = request_options .get ("chunk_size" , None ) if request_options is not None else None
799+ return AsyncHttpResponse (
800+ response = _response ,
801+ data = (_chunk async for _chunk in _response .aiter_bytes (chunk_size = _chunk_size )),
802+ )
803+ await _response .aread ()
804+ if _response .status_code == 404 :
805+ raise NotFoundError (
806+ headers = dict (_response .headers ),
807+ body = typing .cast (
808+ ErrorResponse ,
809+ construct_type (
810+ type_ = ErrorResponse , # type: ignore
811+ object_ = _response .json (),
812+ ),
813+ ),
814+ )
815+ _response_json = _response .json ()
816+ except JSONDecodeError :
817+ raise ApiError (
818+ status_code = _response .status_code , headers = dict (_response .headers ), body = _response .text
819+ )
820+ raise ApiError (status_code = _response .status_code , headers = dict (_response .headers ), body = _response_json )
821+
822+ yield await _stream ()
823+
717824 async def send (
718825 self ,
719826 inbox_id : InboxId ,
0 commit comments