Fixed pistons content-type issue.

Pistons utils.Mimer.loader_for_type now get wrapped to remove
everything behind a ; (including the ;).
This commit is contained in:
seba 2011-10-17 19:39:54 +02:00
parent 5a25b97c59
commit 2d11431e63
2 changed files with 16 additions and 0 deletions

View File

@ -85,3 +85,14 @@ def requirePlugin(apiFunc):
return ret return ret
return wrapper return wrapper
def fix_mime(mime_func):
""" Fix mimetype by truncating everything behind a ';'.
This is used to fix pistons ``piston.utils.Mimer.loader_for_type``."""
@wraps(mime_func)
def wrapper(self, ctype):
if ctype and ctype.find(";") >= 0:
ctype = ctype.split(";")[0]
return mime_func(self, ctype)
return wrapper

View File

@ -3,6 +3,11 @@ from piston.resource import Resource
from piston.authentication import HttpBasicAuthentication from piston.authentication import HttpBasicAuthentication
from api2.authentication import DjangoAuthentication, MultiAuthentication from api2.authentication import DjangoAuthentication, MultiAuthentication
from api2.handlers import * from api2.handlers import *
from api2.decorators import fix_mime
import piston.utils
# piston does not understand mimetypes with charsets, HACK: fix loader_for_type
piston.utils.Mimer.loader_for_type = fix_mime(piston.utils.Mimer.loader_for_type)
class CsrfExemptResource( Resource ): class CsrfExemptResource( Resource ):
""" Except a :class:`Resource` from djangos CSRF-Framework. """ Except a :class:`Resource` from djangos CSRF-Framework.