K iddlmZddlZddlZddlZddlmZmZddlm Z m Z m Z ddl m Z ddlmZddlmZmZd d lmZmZd d gZeeefZdd ZGdd eZ d ddZy)) annotationsN) AwaitableIterable)AnyCallablecast)Headers) InvalidHeader)build_www_authenticate_basicparse_authorization_basic) HTTPResponseWebSocketServerProtocol BasicAuthWebSocketServerProtocolbasic_auth_protocol_factoryc| |\}}t|txrt|tS#ttf$rYywxYwNF) isinstancestr TypeError ValueError)valueusernamepasswords \/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/websockets/legacy/auth.pyis_credentialsrsFG"((C(FZ#-FF z "s );;ceZdZUdZdZded< dZded< ddd d fd Zd d Z dfd Z xZ S)rzC WebSocket server protocol that enforces HTTP Basic Auth. rrealmN str | Nonerr check_credentialscD|||_||_t| |i|yN)r _check_credentialssuper__init__)selfr r#argskwargs __class__s rr(z)BasicAuthWebSocketServerProtocol.__init__.s,  DJ"3 $)&)c\K|j|j||d{Sy7w)a Check whether credentials are authorized. This coroutine may be overridden in a subclass, for example to authenticate against a database or an external service. Args: username: HTTP Basic Auth username. password: HTTP Basic Auth password. Returns: :obj:`True` if the handshake should continue; :obj:`False` if it should fail with an HTTP 401 error. NF)r&)r)rrs rr#z2BasicAuthWebSocketServerProtocol.check_credentials:s3  " " .008DD DEs ",*,cK |d} t |\}}|j||d{s3tjjdt |j fgdfS||_ t|-||d{S#t$r6tjjdt |j fgdfcYSwxYw#t$r6tjjdt |j fgdfcYSwxYw77w)zS Check HTTP Basic Auth and return an HTTP 401 response if needed. AuthorizationzWWW-AuthenticatesMissing credentials sUnsupported credentials NsInvalid credentials ) KeyErrorhttp HTTPStatus UNAUTHORIZEDr r r r r#rr'process_request)r)pathrequest_headers authorizationrrr,s rr5z0BasicAuthWebSocketServerProtocol.process_requestOs +Oz.basic_auth_protocol_factory..sI~d+Iszinvalid credentials argument: cbK |}tj||S#t$rYywxYwwr)r1hmaccompare_digest)rrexpected_passwordcredentials_dicts rr#z6basic_auth_protocol_factory..check_credentialss@ $4X$>!&&'8(C C  s/ / ,/,/.r"r<) rrr Credentialsrrlistalldictrr functoolspartial)r credentialsr#create_protocolcredentials_listrMs @rrrvsL t!2d!:;IJJ + & $[+ >?   X .#D+)> $LM I8HII"@ NOO<[MJK K 01 D:667O   + r-)rrr:r=)NNNN) r r!rTz*Credentials | Iterable[Credentials] | Noner#r9rUz6Callable[..., BasicAuthWebSocketServerProtocol] | Noner:z/Callable[..., BasicAuthWebSocketServerProtocol]) __future__rrRrJr2collections.abcrrtypingrrrdatastructuresr exceptionsr headersr r serverrr__all__tuplerrNrrrr-rras" /&&$&M9 ./L MCHo GVD'>VDt>BFJNR H H;HDHL H 5 Hr-