U
    ÞgØj|  ã                   @   sP   d dl Z d dlZd dlZd dlmZ d dlmZmZ dd„ Zdd„ Zdd	„ Z	dS )
é    N)ÚPath)ÚdatetimeÚtimezonec                    sZ   t | tƒsdS |  d¡‰ t ˆ tƒs&dS d}t‡ fdd„|D ƒƒsDdS t‡ fdd„|D ƒƒS )NFÚresponse)ZgamesZ	prevGamesZ	nextGamesc                 3   s   | ]}t ˆ  |¡tƒV  qd S ©N)Ú
isinstanceÚgetÚlist©Ú.0Úk©r   © úhermes_lmp_epg_cache.pyÚ	<genexpr>   s   ÿzvalidar.<locals>.<genexpr>c                 3   s   | ]}ˆ | V  qd S r   r   r
   r   r   r   r      s     )r   Údictr   ÚallÚany)ÚepgZsectionsr   r   r   Úvalidar   s    


þr   c              	   C   s¼   t | ƒsdS t|ƒ}t tj¡ ¡ | dœ}tj|j	d t
|jƒd�\}}zVtj|ddd��,}tj||dd� | ¡  t | ¡ ¡ W 5 Q R X t |t
|ƒ¡ W 5 tj |¡r¶t |¡ X d	S )
NF)Zreceived_atr   Ú.)ÚprefixÚdirÚwúutf-8©Úencoding)Zensure_asciiT)r   r   r   Znowr   ZutcZ	isoformatÚtempfileZmkstempÚnameÚstrÚparentÚosÚpathÚexistsÚunlinkÚfdopenÚjsonÚdumpÚflushÚfsyncÚfilenoÚreplace)r   ÚrutaÚpÚregistroÚfdZtemporalÚfr   r   r   Úguardar   s&    þþ
r1   c              
   C   sb   t | ƒ}| ¡ sd S z,t |jdd�¡}t| d¡ƒs<W d S |W S  ttt	fk
r\   Y d S X d S )Nr   r   r   )
r   r#   r&   ÚloadsZ	read_textr   r   ÚOSErrorÚ
ValueErrorÚ	TypeError)r,   r-   r.   r   r   r   Úcargar5   s    r6   )
r&   r!   r   Úpathlibr   r   r   r   r1   r6   r   r   r   r   Ú<module>   s   