1# SPDX-FileCopyrightText: 2015 Eric Larson 2# 3# SPDX-License-Identifier: Apache-2.0 4 5import logging 6 7import requests 8 9from cachecontrol.adapter import CacheControlAdapter 10from cachecontrol.cache import DictCache 11from cachecontrol.controller import logger 12 13from argparse import ArgumentParser 14 15 16def setup_logging(): 17 logger.setLevel(logging.DEBUG) 18 handler = logging.StreamHandler() 19 logger.addHandler(handler) 20 21 22def get_session(): 23 adapter = CacheControlAdapter( 24 DictCache(), cache_etags=True, serializer=None, heuristic=None 25 ) 26 sess = requests.Session() 27 sess.mount("http://", adapter) 28 sess.mount("https://", adapter) 29 30 sess.cache_controller = adapter.controller 31 return sess 32 33 34def get_args(): 35 parser = ArgumentParser() 36 parser.add_argument("url", help="The URL to try and cache") 37 return parser.parse_args() 38 39 40def main(args=None): 41 args = get_args() 42 sess = get_session() 43 44 # Make a request to get a response 45 resp = sess.get(args.url) 46 47 # Turn on logging 48 setup_logging() 49 50 # try setting the cache 51 sess.cache_controller.cache_response(resp.request, resp.raw) 52 53 # Now try to get it 54 if sess.cache_controller.cached_request(resp.request): 55 print("Cached!") 56 else: 57 print("Not cached :(") 58 59 60if __name__ == "__main__": 61 main() 62