Am 27.04.2012 13:18, schrieb Sönke Ludwig:
Am 27.04.2012 11:57, schrieb David:I am not sure if you're aware of Flask, Flask is a microframework for Python.It provides something called "Blueprints", you can register e.g. "routes" to this Blueprint and to use them you've to add them to the main application. This makes code way more readable! Also some kind of after_request and before_request handlers would be great, you could use them e.g. fetching a user from the database and providing it to the handler (over a thread-local?).I didn't know flask before and the website seems to be down currently ;)
Yes :( Admin paused the server, too much IO or something.
But is the UrlRouter (see http://vibed.org/docs#http-routing and http://vibed.org/api/vibe.http.router#UrlRouter) something equivalent? It allows you to specify multiple patterns that are matched in sequence until a request handler writes a response: auto r = new UrlRouter; r.any("*", &performAuth); r.get("/", &renderHomePage); listenHttp(settings, r); This would first always match performAuth, which could check the user credentials and write out a message if the user is not authenticated. Otherwise it just does nothing and the router will continue to the next match, which is renderHomePage() in this case for "GET /".
This is useful!
Whats not directly possible in the router is something like
after_request. But you can do it easily by wrapping the call:
auto r = new UrlRouter;
//...
listenHttp(settings, (req, res){
before_request(req, res);
r.handleRequest(req, res);
after_request(req, res);
});
Awesome!
