Skip to content

Instantly share code, notes, and snippets.

@dreid
Created March 23, 2012 02:15
Show Gist options
  • Save dreid/2166220 to your computer and use it in GitHub Desktop.
Save dreid/2166220 to your computer and use it in GitHub Desktop.
Klein produces decorator for setting the content type and optionally installing a content encoder.
from functools import wraps
from twisted.internet.defer import maybeDeferred
def produces(contentType, encoder=None):
def maybeEncode(result, request):
request.setHeader("content-type", contentType)
if encoder is not None:
return encoder(result)
return result
def deco(f):
@wraps(f)
def inner(request, *args, **kwargs):
d = maybeDeferred(f, request, *args, **kwargs)
d.addCallback(maybeEncode, request)
return d
return inner
return deco
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment