3 ÝPf- ã @ sŽ d dl Z d dlZd dlmZmZmZ d dlmZmZ dZddd„Z dd„ Z G d d „ d eƒZG dd„ deƒZ G d d„ deƒZG dd„ deƒZdS )é N)Ú formatdateÚ parsedateÚparsedate_tz)ÚdatetimeÚ timedeltaz%a, %d %b %Y %H:%M:%S GMTc C s |p t jƒ }|| S )N)r Únow)ÚdeltaÚdate© r ú /usr/lib/python3.6/heuristics.pyÚexpire_after s r c C s t tj| jƒ ƒƒS )N)r ÚcalendarÚtimegmZ timetuple)Zdtr r r Údatetime_to_header s r c @ s$ e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú BaseHeuristicc C s dS )a! Return a valid 1xx warning header value describing the cache adjustments. The response is provided too allow warnings like 113 http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need to explicitly say response is over 24 hours old. z110 - "Response is Stale"r )ÚselfÚresponser r r Úwarning s zBaseHeuristic.warningc C s i S )zïUpdate the response headers with any new headers. NOTE: This SHOULD always include some Warning header to signify that the response was cached by the client, not by way of the provided headers. r )r r r r r Úupdate_headers! s zBaseHeuristic.update_headersc C s@ | j |ƒ}|r<|jj|ƒ | j|ƒ}|d k r<|jjd|iƒ |S )NÚWarning)r ÚheadersÚupdater )r r Zupdated_headersZwarning_header_valuer r r Úapply* s zBaseHeuristic.applyN)Ú__name__Ú __module__Ú__qualname__r r r r r r r r s r c @ s e Zd ZdZdd„ ZdS )ÚOneDayCachezM Cache the response by providing an expires 1 day in the future. c C sR i }d|j krNt|j d ƒ}ttddt|d d… Ž d}t|ƒ|d<