o
    nÒYi?  ã                   @   s\   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
mZ G dd„ deƒZdS )é    N)Úsha1)Úurlparse)ÚcompareÚremove_portÚadd_portÚRequestValidatorc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )r   c                 C   s   t |ƒ| _| ¡ | _d S ©N)ÚTwilioRequestValidatorÚcompatibility_validatorÚencodeÚtoken)Úselfr   © r   ú`/var/www/html/asistente-voz-ia/venv/lib/python3.10/site-packages/signalwire/request_validator.pyÚ__init__
   s   
zRequestValidator.__init__c                 C   s   | j  ||¡S r   )r
   Úcompute_signature)r   ÚuriÚparamsr   r   r   Ú"build_signature_with_compatibility   s   z3RequestValidator.build_signature_with_compatibilityc                 C   s   | j  |||¡S r   )r
   Úvalidate)r   r   r   Ú	signaturer   r   r   Úvalidate_with_compatibility   s   z,RequestValidator.validate_with_compatibilityc                 C   s8   |}|r||7 }t  | j| ¡ t¡}| ¡  ¡ }| ¡ S r   )ÚhmacÚnewr   r   r   ÚdigestÚhexÚstrip)r   r   r   ÚsÚhmac_bufferÚresultr   r   r   Úbuild_signature   s   z RequestValidator.build_signaturec              
   C   s¤   t |tƒrKt|ƒ}t|ƒ}t|ƒ}t|  ||¡|ƒ}t|  ||¡|ƒ}|s'|r)dS zt |¡}	|  	||	|¡W S  tj
yJ }
 zW Y d }
~
dS d }
~
ww |  	|||¡S )NTF)Ú
isinstanceÚstrr   r   r   r   r    ÚjsonÚloadsr   ÚJSONDecodeError)r   r   r   r   Ú
parsed_uriÚ	with_portÚwithout_portÚvalid_signature_without_portÚvalid_signature_with_portÚparsed_paramsÚer   r   r   r      s,   

þ
þ
€ÿzRequestValidator.validateN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r   r   r   r   r   r   	   s    
r   )Úbase64r   r#   Úhashlibr   Úurllib.parser   Útwilio.request_validatorr   r   r   r   r	   Úobjectr   r   r   r   Ú<module>   s    