File: //usr/lib/python3.9/site-packages/oauthlib/oauth1/rfc5849/endpoints/__pycache__/base.cpython-39.pyc
a
�#/d�* � @ sr d Z ddlZddlmZmZmZ ddlmZmZm Z m
Z
mZmZm
Z
mZmZmZmZmZmZmZ G dd� d�ZdS )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_RSA_SHA1�SIGNATURE_RSA_SHA256�SIGNATURE_RSA_SHA512�SIGNATURE_PLAINTEXT�SIGNATURE_TYPE_AUTH_HEADER�SIGNATURE_TYPE_BODY�SIGNATURE_TYPE_QUERY�errors� signature�utilsc @ s@ e Zd Zddd�Zdd� Zdd� Zdd � Zd
d� Zdd
d�ZdS )�BaseEndpointNc C s || _ |pt| _d S )N)�request_validatorr �token_generator)�selfr r � r �J/usr/lib/python3.9/site-packages/oauthlib/oauth1/rfc5849/endpoints/base.py�__init__ s zBaseEndpoint.__init__c
C s� t j|jddd�}t j|jdd�}t j|jdd�}g }|�|� |�|� |�|� ttdd� t|t �
|�ft|t �
|�ft|t �
|�ff��}t
|�dkr�d d
� |D �}tjdd�|�fd
��z|d \}}} W n ty� tjdd
��Y n0 ||| fS )z�Extracts parameters from query, headers and body. Signature type
is set to the source in which parameters were found.
FT)�headers�exclude_oauth_signatureZ
with_realm)�bodyr )� uri_queryr c S s | d S )Nr r )�sr r r �<lambda>- � z=BaseEndpoint._get_signature_type_and_params.<locals>.<lambda>� c S s g | ]}|d �qS )r r )�.0r r r r �
<listcomp>7 r! z?BaseEndpoint._get_signature_type_and_params.<locals>.<listcomp>zFoauth_ params must come from only 1 signaturetype but were found in %sz, ��descriptionr �#Missing mandatory OAuth parameters.)r Zcollect_parametersr r r �extend�list�filterr r Zfilter_oauth_paramsr r �lenr �InvalidRequestError�join�
IndexError)
r �requestZ
header_paramsZbody_paramsZquery_params�paramsZ!signature_types_with_oauth_paramsZfound_types�signature_type�oauth_paramsr r r �_get_signature_type_and_params sP ���
���� ����z+BaseEndpoint._get_signature_type_and_paramsc C s& t |pi �}d|v r0t|d v r0t||||�}nt||d|�}| �|�\}}}tt|��t|�krntjdd��t|�}|�d�|_ |�d�|_
|�d�|_|�d�|_|�d �|_
|�d
�|_|�d�|_|�d�|_t|��d
�|_||_dd� |D �|_d
|j�dd�v �r"dd� |jD �|_|S )NzContent-Type� zDuplicate OAuth1 entries.r% �oauth_signatureZoauth_consumer_keyZoauth_tokenZoauth_nonceZoauth_timestampZoauth_callbackZoauth_verifierZoauth_signature_method�realmc S s g | ]\}}|d kr||f�qS )r5 r �r# �k�vr r r r$ f r! z0BaseEndpoint._create_request.<locals>.<listcomp>Z
Authorizationc S s g | ]\}}|d kr||f�qS )r6 r r7 r r r r$ i s �)r r r r3 r+ �dictr r, �getr �
client_key�resource_owner_key�nonce� timestampZredirect_uriZverifier�signature_methodr6 r2 r0 r ) r �uriZhttp_methodr r r/ r1 r0 r2 r r r �_create_requestF s:
����zBaseEndpoint._create_requestc C s$ | j jr |j�� �d�s t�� �d S )Nzhttps://)r Zenforce_sslrA �lower�
startswithr ZInsecureTransportError)r r/ r r r �_check_transport_securityn s �z&BaseEndpoint._check_transport_securityc C s$ t |j|j|j|j|jf�s(tjdd��|j| jj vrPtj
d�|j| jj �d��d|jv rt|jd dkrttjdd��t
|j�dkr�tjdd��zt|j�}W n ty� tjd d��Y n.0 tt�� | �| jjkr�tjd
| jj d��| j�|j��stjdd��| j�|j��s tjdd��d S )
Nr'