pyrest / pyrest.py

import cherrypy, hgapi
from collections import namedtuple

Response = namedtuple('response', 'status content')

def requesthandler(method, *pathargs, **kwargs):
    """Main dispatch for calls to PyRest; no framework specific 
    code to be present after this point"""

    if not method == 'get':
        return Response('500 Server Error', 'Not implemented')

    repo = hgapi.Repo('.')
    return Response('200 Ok', repo.hg_id())
    

class PyRest(object):

    def index(self, *args, **kwargs):
        method = cherrypy.request.method.lower()
        response = requesthandler(method, *args, **kwargs)
        cherrypy.response.status = response.status
        return response.content
    index.exposed = True
    

CONF = {
    'global': {
        'server.socket_host': '0.0.0.0',
        'server.socket_port': 8888,
    }
}


if __name__ == '__main__':
    ROOT = PyRest()
    cherrypy.quickstart(ROOT, '/', CONF)
    
def application(environ, start_response):
  cherrypy.tree.mount(PyRest(), '/', None)
  return cherrypy.tree(environ, start_response)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.