3 ig@s\ddlZddlZddlZddlmZddlmZddlmZddl m Z GdddeZ dS) N) HTTPAdapter)CacheController) DictCache)CallbackFileWrappercsNeZdZddhZdfdd Zdfdd Zdfd d Zfd d ZZS)CacheControlAdapterPUTDELETENTc sTtt|j|||dkr tn||_||_|p2d|_|pd}YnX|rT|j||ddS|jj|jj |t t |j |f|}|S)z Send a request. Use the request information to see if it exists in the cache and cache the response if we need to and can. NT) from_cache) rmethodrcached_requestzliberrorbuild_responseheadersupdateconditional_headersr rsend)rrequestrr cacheablecached_responseresp)rrrr$$s   zCacheControlAdapter.sendFc s|p|j}| r|j|kr|jr,|jj|}|jdkrj|jj||}||k rPd}|jdd|j|}n\|jdkr|jj ||nBt |j t j |jj |||_ |jr|jfdd}tj|||_tt|j||}|j|jko|jr|jj|j} |jj| ||_|S)z Build a response by making a request or using the cache. This will end up calling send and returning a potentially cached response i0TF)decode_contenti-cs|jdkr|jjdS)Nr) chunk_left_fp_close)r)super_update_chunk_lengthrr_update_chunk_lengthns z@CacheControlAdapter.build_response.._update_chunk_length)rrrapplystatusrupdate_cached_responseread release_conncache_responserr+ functoolspartialchunkedr.types MethodTyper rr invalidating_methodsok cache_urlurlrdeleter) rr%responserrr&r'r.r(r<)r)r-rr 9s:        z"CacheControlAdapter.build_responsecs|jjtt|jdS)N)rcloser r)r)rrrr@s zCacheControlAdapter.close)NTNNNN)N)FN) __name__ __module__ __qualname__r:rr$r r@ __classcell__rr)rrr sIr) r8r5rZpip._vendor.requests.adaptersrrrrr filewrapperrrrrrrs