ruạṛ
a �u:je � @ s� d dl Z d dlZd dlmZ d dlmZmZ d dlmZm Z m Z mZ e jege j e f Ze jeege j e f ZG dd� d�ZdS )� N)�Request)�Response�StreamingResponse)�ASGIApp�Receive�Scope�Sendc @ sL e Zd Zdeeje dd�dd�Zee e dd�dd�Zee ed�d d �ZdS )�BaseHTTPMiddlewareN)�app�dispatch�returnc C s || _ |d u r| jn|| _d S �N)r r � dispatch_func)�selfr r � r �L/opt/bart/bart_venv/lib/python3.9/site-packages/starlette/middleware/base.py�__init__ s zBaseHTTPMiddleware.__init__)�scope�receive�sendr c � s� � d dkr$�� � ||�I d H d S ttd�� ��fdd�}t�� 4 I d H �P�t� |d�}��||�I d H }|� ||�I d H �j�� W d �I d H q�1 I d H s�0 Y d S )N�type�http)�requestr c � s� d � t �� \��d d�� ����fdd�}��|� z��� I d H }W n( t jyn � d urb� �td��Y n0 |d dks�J �tjtd f d�� �fdd�}t |d |� d �}|d |_ |S )N)r c � s� �4 I d H �\ z�� ��j�j�I d H W n( tyR } z| � W Y d } ~ n d } ~ 0 0 W d �I d H q~1 I d H st0 Y d S r )r r r � Exception)�exc)�app_excr r r �send_streamr r �coro s z<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.corozNo response returned.r zhttp.response.startc sz �4 I d H �H �2 z*3 d H W } | d dks.J �| � dd�V q6 W d �I d H qj1 I d H s`0 Y � d urv� �d S )Nr zhttp.response.body�body� )�get)�message)r �recv_streamr r �body_stream3 s <zCBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.body_stream�status)�status_code�content�headers)�anyioZcreate_memory_object_streamZ start_soonr ZEndOfStream�RuntimeError�typing�AsyncGenerator�bytesr �raw_headers)r r r! r# �response�r r Z task_group)r r"