Commits

Anonymous committed bd628fd

Moved stuff around

Comments (0)

Files changed (7)

pyrest.py

-from collections import namedtuple
-import inspect
-import cherrypy
-import backend
-import json
-Response = namedtuple('response', 'status content')
-
-def get_handlers(package):
-    handlers = {}
-    for member_name, member in [module for module in inspect.getmembers(package) if inspect.ismodule(module[1])]:
-        if [fn for name, fn in inspect.getmembers(member) if name in ('get', 'post', 'put', 'delete')]:
-            print("Adding handler %s" % member_name)
-            handlers[member_name]  = member
-    return handlers
-
-def requesthandler(handlers, method, resource, *pathargs, **kwargs):
-    """Main dispatch for calls to PyRest; no framework specific 
-    code to be present after this point"""
-
-    if not resource in handlers:
-        return Response('404 Not Found', 'No such resource')
-
-    if not  hasattr(handlers[resource], method):
-        return Response('405 Method Not Allowed', 'Unsupported method for resource')
-
-    return_data = getattr(handlers[resource], method)(*pathargs, **kwargs)
-    return Response('200 OK', json.dumps(return_data))
-    
-    
-
-class PyRest(object):
-    def __init__(self):
-        self._handlers = get_handlers(backend)
-        
-    def index(self):
-        return "Awesome API..."
-
-    def api(self, resource, *pathargs, **kwargs):
-        method = cherrypy.request.method.lower()
-        response = requesthandler(self._handlers, method, resource, *pathargs, **kwargs)
-        cherrypy.response.status = response.status
-        return response.content
-    index.exposed = True
-    api.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)

pyrest/__init__.py

+"""Helper library for creating restful or restful-ish Python APIs"""

pyrest/examples/__init__.py

+"""Example backends"""

pyrest/examples/hg/__init__.py

+"""Example backend for pyRest"""
+
+import backend.changeset as changeset

pyrest/examples/hg/changeset.py

+import hgapi.hgapi as hgapi
+
+def get(ref=None):
+    rev = hgapi.Repo('.')[ref]
+
+    return {
+    'node': rev.node,
+    'desc': rev.desc
+    }

pyrest/integration/cherry.py

+import cherrypy
+from pyrest.pyrest import get_handlers, requesthandler
+from pyrest.examples import hg
+
+class PyRest(object):
+    def __init__(self):
+        self._handlers = get_handlers(hg)
+        
+    def index(self):
+        return "Awesome API..."
+
+    def api(self, resource, *pathargs, **kwargs):
+        method = cherrypy.request.method.lower()
+        response = requesthandler(self._handlers, method, resource, *pathargs, **kwargs)
+        cherrypy.response.status = response.status
+        return response.content
+    index.exposed = True
+    api.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)
+from collections import namedtuple
+import inspect
+import json
+Response = namedtuple('response', 'status content')
+
+def get_handlers(package):
+    handlers = {}
+    for member_name, member in [module for module in inspect.getmembers(package) if inspect.ismodule(module[1])]:
+        if [fn for name, fn in inspect.getmembers(member) if name in ('get', 'post', 'put', 'delete')]:
+            print("Adding handler %s" % member_name)
+            handlers[member_name]  = member
+    return handlers
+
+def requesthandler(handlers, method, resource, *pathargs, **kwargs):
+    """Main dispatch for calls to PyRest; no framework specific 
+    code to be present after this point"""
+
+    if not resource in handlers:
+        return Response('404 Not Found', 'No such resource')
+
+    if not  hasattr(handlers[resource], method):
+        return Response('405 Method Not Allowed', 'Unsupported method for resource')
+
+    return_data = getattr(handlers[resource], method)(*pathargs, **kwargs)
+    return Response('200 OK', json.dumps(return_data))
+    
+    
+