
    &gu-                         d Z ddlZddlmZmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ  G d d          ZdS )z
oauthlib.oauth1.rfc5849.endpoints.base
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module is an implementation of various logic needed
for signing and checking OAuth 1.0 RFC 5849 requests.
    N)CaseInsensitiveDictRequestgenerate_token   )CONTENT_TYPE_FORM_URLENCODEDSIGNATURE_HMAC_SHA1SIGNATURE_HMAC_SHA256SIGNATURE_HMAC_SHA512SIGNATURE_PLAINTEXTSIGNATURE_RSA_SHA1SIGNATURE_RSA_SHA256SIGNATURE_RSA_SHA512SIGNATURE_TYPE_AUTH_HEADERSIGNATURE_TYPE_BODYSIGNATURE_TYPE_QUERYerrors	signatureutilsc                   6    e Zd Zd	dZd Zd Zd Zd Zd
dZdS )BaseEndpointNc                 0    || _         |pt          | _        d S N)request_validatorr   token_generator)selfr   r   s      X/var/www/api/venv/lib/python3.11/site-packages/oauthlib/oauth1/rfc5849/endpoints/base.py__init__zBaseEndpoint.__init__   s    !2.@.    c                    t          j        |j        dd          }t          j        |j        d          }t          j        |j        d          }g }|                    |           |                    |           |                    |           t          t          d t          |t          j
        |          ft          |t          j
        |          ft          |t          j
        |          ff                    }t          |          dk    r6d |D             }t          j        d	d
                    |          f          	 |d         \  }}}	n## t"          $ r t          j        d          w xY w|||	fS )zExtracts parameters from query, headers and body. Signature type
        is set to the source in which parameters were found.
        FT)headersexclude_oauth_signature
with_realm)bodyr!   )	uri_queryr!   c                     | d         S )Nr    )ss    r   <lambda>z=BaseEndpoint._get_signature_type_and_params.<locals>.<lambda>,   s
    !A$ r      c                     g | ]
}|d          S )r   r&   ).0r'   s     r   
<listcomp>z?BaseEndpoint._get_signature_type_and_params.<locals>.<listcomp>6   s    KKKA1Q4KKKr   zFoauth_ params must come from only 1 signaturetype but were found in %sz, descriptionr   #Missing mandatory OAuth parameters.)r   collect_parametersr    r#   r$   extendlistfilterr   r   filter_oauth_paramsr   r   lenr   InvalidRequestErrorjoin
IndexError)
r   requestheader_paramsbody_paramsquery_paramsparams!signature_types_with_oauth_paramsfound_typessignature_typeoauth_paramss
             r   _get_signature_type_and_paramsz+BaseEndpoint._get_signature_type_and_params   s    "4W_MR_ce e e2KPR R R 3g>OLQS S S m$$$k"""l###,0')-88: &)+668!6),779I
 2 2 - -) 011A55KK)JKKKK,9!YY{3356 6 6 6
	C3T40NFLL 	C 	C 	C,AC C C C	C v|33s   E  E:c                    t          |pi           }d|v r"t          |d         v rt          ||||          }nt          ||d|          }|                     |          \  }}}t	          t          |                    t	          |          k    rt          j        d          t          |          }|                    d          |_	        |                    d          |_
        |                    d          |_        |                    d          |_        |                    d	          |_        |                    d
          |_        |                    d          |_        |                    d          |_        t          |                              d          |_        ||_        d |D             |_        d|j                            dd          v rd |j        D             |_        |S )NzContent-Type zDuplicate OAuth1 entries.r-   oauth_signatureoauth_consumer_keyoauth_tokenoauth_nonceoauth_timestampoauth_callbackoauth_verifieroauth_signature_methodrealmc                 (    g | ]\  }}|d k    ||fS )rE   r&   r+   kvs      r   r,   z0BaseEndpoint._create_request.<locals>.<listcomp>e   s+    NNNTQq<M7M7M1a&7M7M7Mr   Authorizationc                 (    g | ]\  }}|d k    ||fS )rM   r&   rO   s      r   r,   z0BaseEndpoint._create_request.<locals>.<listcomp>h   s3     J J J"&!QALL  !!f<HLLr   )r   r   r   rB   r5   dictr   r6   getr   
client_keyresource_owner_keynonce	timestampredirect_uriverifiersignature_methodrM   rA   r=   r    )	r   urihttp_methodr#   r    r9   r@   r=   rA   s	            r   _create_requestzBaseEndpoint._create_requestE   s    %gm44g%%,0GGGc;g>>GGc;G<<G //88 	-
 tL!!""c,&7&777,79 9 9 9 L))(,,->??)--.BCC%1%5%5m%D%D"$((77(,,->??+//0@AA'++,<==#/#3#34L#M#M V((11+ ONVNNNgo))/2>>>>J J*1.J J JGN r   c                     | j         j        r?|j                                                            d          st          j                    d S d S )Nzhttps://)r   enforce_sslr]   lower
startswithr   InsecureTransportError)r   r9   s     r   _check_transport_securityz&BaseEndpoint._check_transport_securitym   sW    ". 	2K%%''22:>>	2/111	2 	2 	2 	2r   c                    t          |j        |j        |j        |j        |j        f          st          j        d          |j        | j        j	        vr8t          j
        d                    |j        | j        j	                            d|j        v r&|j        d         dk    rt          j        d          t          |j                  dk    rt          j        d          	 t          |j                  }t          t!          j                    |z
            | j        j        k    r"t          j        d	| j        j        z            n## t$          $ r t          j        d
          w xY w| j                            |j                  st          j        d          | j                            |j                  st          j        d          d S )Nr/   r-   z"Invalid signature, {} not in {!r}.oauth_versionz1.0zInvalid OAuth version.
   zInvalid timestamp sizezCTimestamp given is invalid, differ from allowed by over %s seconds.zTimestamp must be an integer.zInvalid client key format.zInvalid nonce format.)allr   rV   rX   rY   r\   r   r6   r   allowed_signature_methodsInvalidSignatureMethodErrorformatrA   r5   intabstimetimestamp_lifetime
ValueErrorcheck_client_keycheck_nonce)r   r9   tss      r   _check_mandatory_parametersz(BaseEndpoint._check_mandatory_parameterss   sZ    G%w'9M7#4,. / / 	C ,AC C C C (&@A A4@GG,*DF FG G G G w333$_5>>,46 6 6 6 w !!R'',46 6 6 6	RW&''B 49;;#$$t'='PPP0"?%)%;%N"PR R R R Q  	= 	= 	=,;= = = =	=  %66w7IJJ 	:,8: : : : %11'-@@ 	5,35 5 5 5	5 	5s   +E  E3Fc                    |j         t          k    s |j         t          k    s|j         t          k    r| j                            |j        |          }|j         t          k    rt          j        ||          }nh|j         t          k    rt          j	        ||          }nA|j         t          k    rt          j
        ||          }nd}n| j                            |j        |          }d }|j        rO|r'| j                            |j        |j        |          }n&| j                            |j        |j        |          }|j         t          k    rt          j        |||          }nw|j         t"          k    rt          j        |||          }nP|j         t&          k    rt          j        |||          }n)|j         t*          k    rt          j        |||          }nd}|S )NF)r\   r   r   r   r   get_rsa_keyrV   r   verify_rsa_sha1verify_rsa_sha256verify_rsa_sha512get_client_secretrW   get_request_token_secretget_access_token_secretr   verify_hmac_sha1r	   verify_hmac_sha256r
   verify_hmac_sha512r   verify_plaintext)r   r9   is_token_requestrsa_keyvalid_signatureclient_secretresource_owner_secrets          r   _check_signaturezBaseEndpoint._check_signature   s   #'999#';;;#';;; ,88"G- -G '+==="+";GW"M"M)-AAA"+"=gw"O"O)-AAA"+"=gw"O"O"' !2DD"G- -M %)!) 
%# 	%.GG#.0J#% % *) .FF#.0J#% % *
 '+>>>"+"<],A#C #C)-BBB"+">],A#C #C)-BBB"+">],A#C #C)-@@@"+"<],A#C #C #(r   r   )F)	__name__
__module____qualname__r   rB   r_   re   ru   r   r&   r   r   r   r      s        A A A A(4 (4 (4T& & &P2 2 2@5 @5 @5D? ? ? ? ? ?r   r   )__doc__ro   oauthlib.commonr   r   r   rD   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r&   r   r   <module>r      s     H H H H H H H H H H                               _ _ _ _ _ _ _ _ _ _r   