Hi all,
I started using web.py for programming web services and, although I'm
quite happy with the framework, I couldn't find an out-of-the-box
solution for what I was looking for. More specifically, I wanted to
select the appropriate representation for the service's resources in a
RESTful way, i.e. using the HTTP Accept header.
I didn't like this:

render_html = web.template.render('templates/html')
render_xml = web.template.render('templates/xml')
render_json = lambda **args: json.dumps(args)

class hello:
    def GET(self, name):
        if not name: name = 'world'
        message = 'Hello, %s!'%name
        accept_string = web.ctx.env['HTTP_ACCEPT']
        mime = find_best_supported_mime(accept_string)
        if mime=='application/html':
            return render_html.hello(message)
        elif mime=='application/xml':
            return render_xml.hello(message)
        elif mime=='application/json':
            return render_json(message)
        else:
            raise web.internalerror('no representation for "%s"'%mime)

So I made it like this:

    @mimerender.represent(
        html = render_html.hello,
        xml  = render_xml.hello,
        json = render_json)
    def GET(self, name):
        if not name: name = 'world'
        message = 'Hello, %s!'%name
        return {'message': message}

I've made the library open-source and posted it at 
http://code.google.com/p/mimerender
Hope someone finds it useful, and I'll gladly receive all comments and
criticisms.
Best,

Martín
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web.py" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/webpy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to