a
    h                     @   s@   d dl Zd dlZd dlZd dlZddlmZ G dd deZdS )    N   )InfoExtractorc                   @   s   e Zd ZdZdZdddZdS )AWSIEzAWS4-HMAC-SHA256z	us-east-1Nc              	      s  |pi }t jt jjd}|d d }d| j|| jd}|d}|rR||d< dd }t	j
|}	d	}
t| D ] \}}|
|  d
| d7 }
qvddd t| D }dd|d |	|
||d	g}|| jddg}d|}d| j||||g}dd   fdd} fdd}d|d   }|D ]}|||}q6|||}dd| j|d |d| d | g|d!< | jd"| j|d |	rd#|	 nd	||d$S )%Nz%Y%m%dT%H%M%SZ   zapplication/json)AcceptHostz
X-Amz-Datez	X-Api-Keysession_tokenzX-Amz-Security-Tokenc                 S   s   t |   S N)hashlibsha256encode	hexdigest)s r   I/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/aws.pyaws_hash   s    z(AWSIE._aws_execute_api.<locals>.aws_hash :
;c                 S   s   g | ]}|  qS r   )lower).0headerr   r   r   
<listcomp>#       z*AWSIE._aws_execute_api.<locals>.<listcomp>GETurizexecute-apiZaws4_request/c                 S   s   t | | tjS r	   )hmacnewr   r
   r   keymsgr   r   r   aws_hmac3   s    z(AWSIE._aws_execute_api.<locals>.aws_hmacc                    s    | |  S r	   )digestr    r#   r   r   aws_hmac_digest6   s    z/AWSIE._aws_execute_api.<locals>.aws_hmac_digestc                    s    | |  S r	   )r   r    r%   r   r   aws_hmac_hexdigest9   s    z2AWSIE._aws_execute_api.<locals>.aws_hmac_hexdigestZAWS4Z
secret_keyz, z{} Credential={}/{}Z
access_keyzSignedHeaders=z
Signature=Authorizationzhttps://{}{}{}?)headers)dtdatetimenowtimezoneutcstrftimeZ_AWS_PROXY_HOSTZ_AWS_API_KEYgeturllibparse	urlencodesorteditemsr   joinkeys_AWS_REGION_AWS_ALGORITHMr   formatZ_download_json)selfZaws_dictZvideo_idqueryZamz_datedater*   r   r   Zcanonical_querystringZcanonical_headersheader_nameheader_valueZsigned_headersZcanonical_requestZcredential_scope_listZcredential_scopeZstring_to_signr&   r'   Z	k_signingvalue	signaturer   r%   r   _aws_execute_api   sX    




 zAWSIE._aws_execute_api)N)__name__
__module____qualname__r:   r9   rC   r   r   r   r   r   	   s   r   )	r,   r+   r
   r   urllib.parser2   commonr   r   r   r   r   r   <module>   s
   