|
|
|
|
|
|
|
|
|
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() |
|
|
|
|
|
resp = sess.get(args.url) |
|
|
|
|
|
setup_logging() |
|
|
|
|
|
sess.cache_controller.cache_response(resp.request, resp.raw) |
|
|
|
|
|
if sess.cache_controller.cached_request(resp.request): |
|
print("Cached!") |
|
else: |
|
print("Not cached :(") |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|