| 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() |