
    ,h                    l    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y)	    )annotationsN)URLHeaders)PlainTextResponseRedirectResponseResponse)ASGIAppReceiveScopeSendz6Domain wildcard patterns must be like '*.example.com'.c                  0    e Zd Z	 	 d	 	 	 	 	 	 	 ddZddZy)TrustedHostMiddlewareNc                    |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
startswithapplistallowed_hosts	allow_anywww_redirect)selfr   r   r   patterns        b/var/www/html/Resume-Scraper/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-(    c                  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)scope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"   receivesendheadersr#   is_valid_hostfound_www_redirectr   r'   redirect_urlresponses               r   __call__zTrustedHostMiddleware.__call__   sN    >>U6] 3
 
 ((5'4000&{{62&,,S1!4")) 	*Gw7#5#5c#:t}}WUVUW[?Y $$')%)"	* ((5'4000 "d&7&7&"{{&3::2E{F+L0AB,-BPST5'40001 1 1 1s;   *ED=A>E,EE 	A.E7E8E EE)NT)r   r	   r   ztyping.Sequence[str] | Noner   boolreturnNone)r"   r   r.   r
   r/   r   r7   r8   )__name__
__module____qualname__r   r5    r   r   r   r      s:     6:!	)) 3) 	)
 
)$1r   r   )
__future__r   typingstarlette.datastructuresr   r   starlette.responsesr   r   r   starlette.typesr	   r
   r   r   r   r   r<   r   r   <module>rB      s*    "  1 M M 9 9R 01 01r   