diff options
Diffstat (limited to 'src/rest/emitters.py')
| -rw-r--r-- | src/rest/emitters.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/rest/emitters.py b/src/rest/emitters.py new file mode 100644 index 00000000..fa6a2ffd --- /dev/null +++ b/src/rest/emitters.py @@ -0,0 +1,39 @@ +from django.template import Context, loader +import json + +class BaseEmitter(object): + def __init__(self, resource, status, headers): + self.resource = resource + self.status = status + self.headers = headers + + def emit(self, output): + return output + +class TemplatedEmitter(BaseEmitter): + def emit(self, output): + content = json.dumps(output, indent=4) + template = loader.get_template(self.template) + context = Context({ + 'content': content, + 'status': self.status, + 'headers': self.headers, + 'resource_name': self.resource.__class__.__name__, + 'resource_doc': self.resource.__doc__ + }) + return template.render(context) + +class JSONEmitter(BaseEmitter): + def emit(self, output): + return json.dumps(output) + +class XMLEmitter(BaseEmitter): + pass + +class HTMLEmitter(TemplatedEmitter): + template = 'emitter.html' + +class TextEmitter(TemplatedEmitter): + template = 'emitter.txt' + + |
