
    ~h6	                        d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ erd dlmZ  ed      Z ed      Zg d	Zdd
ZddZdddZy)    )annotations)TYPE_CHECKING	ParamSpecTypeVar)get_access_token)AccessToken)Request)ContextPR)get_contextget_http_requestget_http_headersr   r   c                 L    ddl m}  | j                         }|t        d      |S )Nr   )_current_contextzNo active context found.)fastmcp.server.contextr   getRuntimeError)r   contexts     W/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/fastmcp/server/dependencies.pyr   r      s)    7""$G566N    c                 L    ddl m}  | j                         }|t        d      |S )Nr   )_current_http_requestzNo active HTTP request found.)fastmcp.server.httpr   r   r   )r   requests     r   r   r   '   s)    9#'')G:;;Nr   c                (   | rt               }n!h d}t        d |D              st        d      i }	 t               }|j                  j                         D ](  \  }}|j                         }||vst        |      ||<   * |S # t        $ r i cY S w xY w)al  
    Extract headers from the current HTTP request if available.

    Never raises an exception, even if there is no active HTTP request (in which case
    an empty dict is returned).

    By default, strips problematic headers like `content-length` that cause issues if forwarded to downstream clients.
    If `include_all` is True, all headers are returned.
    >   
keep-alivecontent-lengthproxy-connectiontransfer-encodingproxy-authenticateproxy-authorizationtehostacceptexpectupgrade
connectionc              3  B   K   | ]  }|j                         |k(    y w)N)lower).0hs     r   	<genexpr>z#get_http_headers.<locals>.<genexpr>M   s     ;a1779>;s   z"Excluded headers must be lowercase)	setall
ValueErrorr   headersitemsr*   strr   )include_allexclude_headersr1   r   namevalue
lower_names          r   r   r   0   s     %
  ;?;;ABBG"$"??002 	1KD%J0&)%j
#	1  	s   >B 1B BBN)returnr
   )r9   r	   )F)r4   boolr9   zdict[str, str])
__future__r   typingr   r   r   'mcp.server.auth.middleware.auth_contextr   mcp.server.auth.providerr   starlette.requestsr	   r   r
   r   r   __all__r   r   r    r   r   <module>rB      sE    " 4 4 D 0 &.cNCL)r   