aboutsummaryrefslogtreecommitdiffstats
path: root/src/rest/emitters.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/rest/emitters.py')
-rw-r--r--src/rest/emitters.py39
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'
+
+