mcfletch/python-icap
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
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.