/python-icap

ICAP library implemented in Python.

Primary LanguagePythonOtherNOASSERTION

Python ICAP server implemented using asyncio. Contains classes for parsing and
handling ICAP requests, and higher-level objects for routing requests and
performing asynchronous operations.

Still very much in the early stages right now, although usable. API can be
considered reasonably stable.

TODO:
    - generated session IDs when X-Session-ID is not available.
    - Preview support
    - opt-body support
    - Cache-Control (prevent RESPMODs from lengthening expiration)
    - remove all hop-by-hop headers
    - ensure required authorization headers are preserved
    - Allow 206 support (see Squid option)
    - Automated parsing of multipart data (similar to POST parsing)
    - Lots more logging.
    - Streaming body support. ICAP supports the idea of early returns, so
      theoretically this is possible. It would be great to do this with
      coroutines.
    - Allow for particularly horrible yet perfectly valid HTTP.
    - SSL
    - Replace assertions with proper exceptions.
    - some operations need to run in threads/processes to prevent blocking the
      proactor (e.g. gzip encoding/decoding). Providing a nice wrapper
      interface on asyncio's process/thread deferral code would be good.