view server.py @ 23:6c84924cb63a

Made cid an int.
author Atul Varma <varmaa@toolness.com>
date Thu, 12 Feb 2009 19:25:23 -0800
parents 1850638c1da5
children b094768c285b
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=('Edit me by holding shift while clicking '
                     'on me.'))
    }

CID_PATH = re.compile(r'/(\d+)')

@atulweb.wsgiapp
def application(environ, start_response):
    if environ['REQUEST_METHOD'] == 'GET':
        path = environ['PATH_INFO']
        if path == '/status':
            return atulweb.Response(status, 'application/json')
        else:
            match = CID_PATH.match(path)
            if match:
                cid = int(match.group(1))
                if cid in changesets:
                    return atulweb.Response(changesets[cid],
                                            'application/json')
                else:
                    raise atulweb.HttpError('not found')
            else:
                raise atulweb.HttpError('not found')
    elif environ['REQUEST_METHOD'] == 'PUT':
        match = CID_PATH.match(environ['PATH_INFO'])
        if match:
            cid = int(match.group(1))
            if cid == status['max_changeset'] + 1:
                status['max_changeset'] = cid
                req = atulweb.Request(environ)
                changeset = req.get_input('application/json')
                changesets[cid] = changeset
            else:
                raise atulweb.HttpError('bad request',
                                        'invalid changeset id')
        else:
            raise atulweb.HttpError('bad request')
    else:
        raise atulweb.HttpError('method not allowed')

if __name__ == '__main__':
    atulweb.main(application)