Mercurial > hg > WSGraph
comparison wsgraph/web.py @ 4:c7170cab1184
more RESTful stubbing
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Sun, 09 Dec 2012 20:10:07 -0800 |
| parents | 42f484880808 |
| children | 9d5a8c90c482 |
comparison
equal
deleted
inserted
replaced
| 3:42f484880808 | 4:c7170cab1184 |
|---|---|
| 4 web handler for WSGraph | 4 web handler for WSGraph |
| 5 """ | 5 """ |
| 6 | 6 |
| 7 import json | 7 import json |
| 8 from webob import Request, Response, exc | 8 from webob import Request, Response, exc |
| 9 | |
| 10 GRAPH = 0 | |
| 11 NODE = 1 | |
| 12 EDGE = 2 | |
| 9 | 13 |
| 10 def JSONFormatter(**kwargs): | 14 def JSONFormatter(**kwargs): |
| 11 return json.dumps(kwargs, sort_keys=True) | 15 return json.dumps(kwargs, sort_keys=True) |
| 12 | 16 |
| 13 def JSONGraphFormatter(graph): | 17 def JSONGraphFormatter(graph): |
| 53 Formatters are keyed off of | 57 Formatters are keyed off of |
| 54 | 58 |
| 55 formatters = {0: { | 59 formatters = {0: { |
| 56 } | 60 } |
| 57 | 61 |
| 62 A graph formatter takes the following arguments: | |
| 63 | |
| 64 def sample_graph_formatter(graph, request): | |
| 65 | |
| 58 API: | 66 API: |
| 59 | 67 |
| 60 ?format=<format> | 68 ?format=<format> |
| 61 | 69 |
| 62 """ | 70 """ |
| 63 | 71 |
| 64 segments = self.path_segments(request) | 72 segments = self.path_segments(request) |
| 73 if len(segments) not in (0,1,2): | |
| 74 return exc.HTTPNotFound() | |
| 65 | 75 |
| 66 # formatter | 76 # formatter |
| 67 formatter = self.formatters[len(segments)] | 77 formatter = self.formatters[len(segments)] |
| 68 return Response(content_type='text/plain', | 78 return Response(content_type='text/plain', |
| 69 body="WSGraph") | 79 body="WSGraph") |
| 75 API: | 85 API: |
| 76 | 86 |
| 77 ?update : | 87 ?update : |
| 78 """ | 88 """ |
| 79 | 89 |
| 80 return exc.HTTPSeeOther('/') # TODO: /path/to/self | 90 return exc.HTTPSeeOther(location='/') # TODO: /path/to/self |
| 81 | 91 |
| 82 def HEAD(self, request): | 92 def HEAD(self, request): |
| 83 """respond to a HEAD request""" | 93 """respond to a HEAD request""" |
| 84 raise NotImplementedError | 94 raise NotImplementedError |
| 85 | 95 |
| 86 def OPTIONS(self, request): | 96 def OPTIONS(self, request): |
| 87 raise NotImplementedError | 97 return Response() # TODO: Allow=', '.join(self.methods); Content-Length=0 |
| 88 | 98 |
| 89 if __name__ == '__main__': | 99 if __name__ == '__main__': |
| 90 | 100 |
| 91 ### example web server | 101 ### example web server |
| 92 | 102 |
