Is there interest in a std.http?

Tyler Jameson Little beatgammit at gmail.com
Mon Nov 19 12:38:54 PST 2012


I'd like to see an HTTP module in Phobos, but I wanted to gauge 
interest first and see if this has been discussed before.

An example of how I would like to interface with it (for creating 
a server):

     interface HTTPHandler {
         void serveHTTP(Request, Response);
     }

     class CustomHandler : HTTPHandler {
         ....
         void serveHTTP(Request req, Response res) {
         }
     }

     auto handler = new CustomHandler(); // implements http.Handler
     auto server = new HttpServer(handler);
     server.listen("0.0.0.0", 80);

As long as serveHttp() is thread safe, the http server could be 
concurrent or evented (with libev or similar) and the custom 
handler code wouldn't have to change.

I'm willing to put in the lion's share of the work (I've already 
written a bunch of it), but I'd naturally like to get some 
community input so I don't go in a completely wrong direction. 
I'm thinking of emulating Go's http library 
(http://golang.org/pkg/net/http), but of course D style.

I think the following are necessary:

* Access to underlying TcpSocket (for protocol upgrades, like 
WebSocket)
* HTTP body is a stream
* Simple HTTP requests
* Errors can be recovered from (allow user-defined error 
handlers):
* User settable size limits
   * Size of request line (1024 bytes by default)
   * Size of each header (1024 bytes by default)
   * Total size of header block (4096 bytes by default)

So, basically I'm looking for two things:

1. Interest level: willing to writ code, willing to test, want to 
use
2. Suggestions for the API/behavior


More information about the Digitalmars-d mailing list