New Gate Developments
Writing Gate middleware is so damn easy. You just write some test case method names which, in plain English, describe the intent of the test. Then, you fill out the implementation of the tests. Then, you implement the middleware itself. It’s so damn easy. You just write out the implementation. You don’t even have to think. I don’t know why I didn’t do this ages ago.
Actually, I do, but that’s a story for another time.
I’ve written some middleware. I hate the word middleware.
- HTTP Basic Authentication
- Method Override
- Content Length
- Chunked Response
Those were built with two primitives: Predicate and Transform.
I want to make these others modules:
- Header dictionary fixer-upper thing, ensures mutability and perhaps normalizes case.
- Handle X-Sendfile
- Static file server/directory index
- Digest auth
- Multipart form parsing + files
- Caching/304/ETag
- Deflate/Gzip
- Lint (to verify OWIN compliance)
These already exist in Gate/Gate.Helpers and I want to move them to Gate.Middleware:
- ContentType
- RewindableBody
- ShowExceptions
- Map
Stuff that could exist but which hella exists way far out of the scope of Gate:
- Session
- Logging
- Perhaps some kind of Compiler-as-a-service source reloading sort of thing which would probably be hosting dependent but I’m not sure.
I’m basically ripping these ideas straight off of Rack, but the foundation is compatible with both event-loop thread models like that of Node and Nginx and traditional thread-per-connection models like IIS and Apache.
What other sorts of server stuff would you like to see implemented?