Mercurial > hg > WSGraph
diff wsgraph/web.py @ 0:cfcfa093e4b4
initial commit
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Sun, 09 Dec 2012 10:21:43 -0800 |
parents | |
children | 7a3b21cafc00 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wsgraph/web.py Sun Dec 09 10:21:43 2012 -0800 @@ -0,0 +1,77 @@ +#!/usr/bin/env python + +""" +web handler for WSGraph + +Formatters are keyed off of: +- (TODO) + +formatters = {0: { +} +""" + +import json +from webob import Request, Response, exc + +def JSONFormatter(**kwargs): + return json.dumps(kwargs, sort_keys=True) + +def JSONGraphFormatter(graph): + return json.dumps({'nodes': graph.nodes(), + 'edges': graph.edges()}, + sort_keys=True) + +class Dispatcher(object): + + def __init__(self, graph, + graph_formatters=None, # TODO + node_formatters=None, # TODO + edge_formatters=None, # TODO + require_auth=False): + self.graph = graph + self.require_auth = require_auth + self.formatters = {0: JSONGraphFormatter, + 1: JSONFormatter, + 2: JSONFormatter} + + def __call__(self, environ, start_response): + request = Request(environ) + import pdb; pdb.set_trace() + return response(environ, start_response) + + @staticmethod + def path_segments(request): + import pdb; pdb.set_trace() + + # HTTP methods + + def GET(self, request): + """respond to a GET request""" + + segments = self.path_segments(request) + + # formatter + formatter = self.formatters[len(segments)] + return Response(content_type='text/plain', + body="WSGraph") + + def POST(self, request): + """respond to a POST request""" + raise NotImplementedError + + def HEAD(self, request): + """respond to a HEAD request""" + raise NotImplementedError + +if __name__ == '__main__': + + # imports + from wsgiref import simple_server + from .model import MemoryCache + + graph = MemoryCache() + + app = Dispatcher(graph=graph) + server = simple_server.make_server(host='0.0.0.0', port=8080, app=app) + server.serve_forever() +