
    df                     `    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y)    N)URLHeaders)PlainTextResponseRedirectResponseResponse)ASGIAppReceiveScopeSendz6Domain wildcard patterns must be like '*.example.com'.c            	       v    e Zd Z	 	 ddedej
                  ej                  e      deddfdZ	de
ded	eddfd
Zy)TrustedHostMiddlewareNappallowed_hostswww_redirectreturnc                     |dg}|D ]H  }d|dd  vsJ t                |j                  d      s'|dk7  s-|j                  d      r?J t                 || _        t        |      | _        d|v | _        || _        y )N*   z*.)ENFORCE_DOMAIN_WILDCARD
startswithr   listr   	allow_anyr   )selfr   r   r   patterns        Y/home/api-vastappli/venv/lib/python3.12/site-packages/starlette/middleware/trustedhost.py__init__zTrustedHostMiddleware.__init__   s       EM$ 	IGgabk)B+BB!!#&7c>))$/H1HH	I !-0-(    scopereceivesendc                   K   | j                   s|d   dvr| j                  |||       d {    y t        |      }|j                  dd      j	                  d      d   }d}d}| j
                  D ];  }||k(  s%|j                  d	      r|j                  |d
d        rd} nd|z   |k(  s:d}= |r| j                  |||       d {    y |rM| j                  rAt        |      }	|	j                  d|	j                  z         }
t        t        |
            }nt        dd      } ||||       d {    y 7 7 w7 
w)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__   sM    >>U6] 3
 
 ((5'4000&{{62&,,S1!4")) 	*Gw""3'DMM'!"+,F $$')%)"	* ((5'4000 "d&7&7&"{{&3::2E{F+L0AB,-BPST5'40005 1" 1 1s;   *ED=A>E,EE 	A.E7E8E EE)NT)__name__
__module____qualname__r   typingOptionalSequencer/   boolr   r
   r	   r   r5    r   r   r   r   
   sj     @D!	)) vs';<) 	)
 
)$1E 1G 14 1D 1r   r   )r9   starlette.datastructuresr   r   starlette.responsesr   r   r   starlette.typesr   r	   r
   r   r   r   r=   r   r   <module>rA      s'     1 M M 9 9R 21 21r   