| import logging |
| |
| from pip._vendor import requests |
| |
| from pip._vendor.cachecontrol.adapter import CacheControlAdapter |
| from pip._vendor.cachecontrol.cache import DictCache |
| from pip._vendor.cachecontrol.controller import logger |
| |
| from argparse import ArgumentParser |
| |
| |
| def setup_logging(): |
| logger.setLevel(logging.DEBUG) |
| handler = logging.StreamHandler() |
| logger.addHandler(handler) |
| |
| |
| def get_session(): |
| adapter = CacheControlAdapter( |
| DictCache(), |
| cache_etags=True, |
| serializer=None, |
| heuristic=None, |
| ) |
| sess = requests.Session() |
| sess.mount('http://', adapter) |
| sess.mount('https://', adapter) |
| |
| sess.cache_controller = adapter.controller |
| return sess |
| |
| |
| def get_args(): |
| parser = ArgumentParser() |
| parser.add_argument('url', help='The URL to try and cache') |
| return parser.parse_args() |
| |
| |
| def main(args=None): |
| args = get_args() |
| sess = get_session() |
| |
| # Make a request to get a response |
| resp = sess.get(args.url) |
| |
| # Turn on logging |
| setup_logging() |
| |
| # try setting the cache |
| sess.cache_controller.cache_response(resp.request, resp.raw) |
| |
| # Now try to get it |
| if sess.cache_controller.cached_request(resp.request): |
| print('Cached!') |
| else: |
| print('Not cached :(') |
| |
| |
| if __name__ == '__main__': |
| main() |