
    9Cg                    t    d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZmZmZmZ dZ G d d          ZdS )	    )annotationsN)URLHeaders)PlainTextResponseRedirectResponseResponse)ASGIAppReceiveScopeSendz6Domain wildcard patterns must be like '*.example.com'.c                  $    e Zd Z	 	 dddZddZdS )TrustedHostMiddlewareNTappr	   allowed_hoststyping.Sequence[str] | Nonewww_redirectboolreturnNonec                $   |dg}|D ]\}d|dd          vsJ t                       |                    d          r*|dk    r$|                    d          sJ t                       ]|| _        t          |          | _        d|v | _        || _        d S )N*   z*.)ENFORCE_DOMAIN_WILDCARD
startswithr   listr   	allow_anyr   )selfr   r   r   patterns        R/var/www/api/venv/lib/python3.11/site-packages/starlette/middleware/trustedhost.py__init__zTrustedHostMiddleware.__init__   s       EM$ 	I 	IGgabbk)))+B)))!!#&& I7c>>))$//HH1HHHH!-00-(    scoper   receiver
   sendr   c                  K   | j         s
|d         dvr|                     |||           d {V  d S t          |          }|                    dd                              d          d         }d}d}| j        D ]I}||k    s2|                    d	          r!|                    |d
d                    rd} nd|z   |k    rd}J|r|                     |||           d {V  d S |rS| j        rLt          |          }	|	
                    d|	j        z             }
t          t          |
                    }nt          dd          } ||||           d {V  d S )Ntype)http	websocket)r"   host :r   Fr   r   Tzwww.)netloc)urlzInvalid host headeri  )status_code)r   r   r   getsplitr   r   endswithr   r   replacer,   r   strr   )r   r"   r#   r$   headersr)   is_valid_hostfound_www_redirectr   r-   redirect_urlresponses               r   __call__zTrustedHostMiddleware.__call__   s     > 	U6] 3
 
 
 ((5'4000000000F&&&{{62&&,,S11!4") 	* 	*Gw7#5#5c#:#:t}}WUVUWUW[?Y?Y $$'))%)" 
	1((5'400000000000 " Ud&7 U&&&"{{&3:2E{FF+L0A0ABBB,-BPSTTT(5'400000000000r!   )NT)r   r	   r   r   r   r   r   r   )r"   r   r#   r
   r$   r   r   r   )__name__
__module____qualname__r    r9    r!   r   r   r      sI         6:!	) ) ) ) )$1 1 1 1 1 1r!   r   )
__future__r   typingstarlette.datastructuresr   r   starlette.responsesr   r   r   starlette.typesr	   r
   r   r   r   r   r=   r!   r   <module>rC      s    " " " " " "  1 1 1 1 1 1 1 1 M M M M M M M M M M 9 9 9 9 9 9 9 9 9 9 9 9R 01 01 01 01 01 01 01 01 01 01r!   