view server.py @ 28:602baadb535a default tip

Added a requesthandler infrastructure to atulweb.
author Atul Varma <varmaa@toolness.com>
date Wed, 11 Mar 2009 23:19:18 -0500
parents 52f02c6edfa9
children
line wrap: on
line source

import re

import atulweb

status = dict(max_changeset = 0)
changesets = {
    0: dict(date='Thu Feb 12 2009 19:03:56 GMT-0800 (PST)',
            content=open('static-files/wiki.txt', 'r').read())
    }

class RequestHandler(object):
    NOUNS = {'csid': re.compile(r'\d+')}

    def status(self):
        'GET /status'

        return atulweb.Response(status, 'application/json')

    def get_doc(self, csid):
        'GET /{csid}'

        csid = int(csid)
        if csid in changesets:
            return atulweb.Response(changesets[csid],
                                    'application/json')
        else:
            raise atulweb.HttpError('not found')

    def put_doc(self, csid):
        'PUT /{csid}'

        csid = int(csid)
        if csid == status['max_changeset'] + 1:
            status['max_changeset'] = csid
            req = atulweb.Request(self.environ)
            try:
                changeset = req.get_input('application/json')
            except ValueError:
                raise atulweb.HttpError('bad request',
                                        'invalid json data')
            changesets[csid] = changeset
            return atulweb.Response('changeset committed.')
        else:
            raise atulweb.HttpError('bad request',
                                    'invalid changeset id')

if __name__ == '__main__':
    atulweb.main(atulweb.make_wsgiapp(RequestHandler()))