U
    c	                     @   sP   d dl mZ d dlZd dlmZ ddlmZ ddlmZ dgZ	G dd dZ
dS )	    )	AwaitableN	to_thread   )DEFAULT_USER_AGENT)queue_fetch_taskRequestsFetcherMixinc                   @   s^   e Zd ZdddZdd Zdd Zd	d
 Zdd Zee	j
 dddZee	j
 dddZdS )r   N
   c                 C   s    |pt | _|| _i | _i | _d S N)r   
user_agentper_request_timeout_RequestsFetcherMixin__results$_RequestsFetcherMixin__result_events)selfr   r    r   Y/tmp/pip-unpacked-wheel-rwcmptg8/pyhanko_certvalidator/fetchers/requests_fetchers/util.py__init__   s    
zRequestsFetcherMixin.__init__c                 C   s   dd | j  D S )Nc                 S   s   h | ]}t |ts|qS r   )
isinstance	Exception).0vr   r   r   	<setcomp>   s    
 z3RequestsFetcherMixin.get_results.<locals>.<setcomp>)r   values)r   r   r   r   get_results   s    z RequestsFetcherMixin.get_resultsc                 C   s   | j | }t|trtd S r
   )r   r   r   KeyError)r   tagresultr   r   r   get_results_for_tag   s    

z(RequestsFetcherMixin.get_results_for_tagc                 c   s,   | j  D ]\}}t|ts
||fV  q
d S r
   )r   itemsr   r   )r   kr   r   r   r   _iter_results   s    
z"RequestsFetcherMixin._iter_resultsc                    s   t | j| j||I d H S r
   )r   r   r   )r   r   Z	fetch_funr   r   r   _perform_fetch#   s       z#RequestsFetcherMixin._perform_fetch)returnc                   s    fdd}t |S )Nc                     sD   d  jd} tjj| d}|jdkr@td|j |S )N,)Accept
User-Agent)urltimeoutheaders   status code )joinr   requestsgetr   status_codeRequestExceptionr(   responseacceptable_content_typesr   r&   r   r   task+   s      

z'RequestsFetcherMixin._get.<locals>.taskr   )r   r&   r3   r4   r   r2   r   _get(   s    zRequestsFetcherMixin._getc                   s    fdd}t |S )Nc                     sH   d  jd} tjj| d}|jdkrDtd|j |S )Nr#   )r$   r%   zContent-Type)r&   r'   r(   datar)   r*   )r+   r   r,   postr   r.   r/   r0   r3   content_typer6   r   r&   r   r   r4   >   s    

z(RequestsFetcherMixin._post.<locals>.taskr   )r   r&   r6   r9   r3   r4   r   r8   r   _post;   s    zRequestsFetcherMixin._post)Nr	   )__name__
__module____qualname__r   r   r   r    r!   r   r,   Responser5   r:   r   r   r   r   r      s   
)typingr   r,   Z%pyhanko_certvalidator._asyncio_compatr   apir   Zcommon_utilsr   __all__r   r   r   r   r   <module>   s   