Support override of response format via request.dataformat
This commit is contained in:
parent
2a1e50e6ef
commit
3944c29c96
@ -4,6 +4,8 @@ import functools
|
||||
import logging
|
||||
import sys
|
||||
|
||||
import mimetypes
|
||||
|
||||
import wsme
|
||||
import wsme.api
|
||||
import wsme.rest.json
|
||||
@ -15,6 +17,25 @@ import flask
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_data_format():
|
||||
dataformat = None
|
||||
if 'Accept' in flask.request.headers:
|
||||
if 'application/json' in flask.request.headers['Accept']:
|
||||
dataformat = wsme.rest.json
|
||||
elif 'text/xml' in flask.request.headers['Accept']:
|
||||
dataformat = wsme.rest.xml
|
||||
|
||||
# Look for the wanted data format in the request.
|
||||
if hasattr(flask.request, 'dataformat'):
|
||||
mimetypes.guess_type(flask.request)
|
||||
if dataformat is None:
|
||||
log.info('''Could not determine what format is wanted by the
|
||||
caller, falling back to json''')
|
||||
dataformat = wsme.rest.json
|
||||
|
||||
return dataformat
|
||||
|
||||
|
||||
def signature(*args, **kw):
|
||||
sig = wsme.signature(*args, **kw)
|
||||
|
||||
@ -32,16 +53,8 @@ def signature(*args, **kw):
|
||||
flask.request.mimetype
|
||||
)
|
||||
|
||||
dataformat = None
|
||||
if 'Accept' in flask.request.headers:
|
||||
if 'application/json' in flask.request.headers['Accept']:
|
||||
dataformat = wsme.rest.json
|
||||
elif 'text/xml' in flask.request.headers['Accept']:
|
||||
dataformat = wsme.rest.xml
|
||||
if dataformat is None:
|
||||
log.info('''Could not determine what format is wanted by the
|
||||
caller, falling back to json''')
|
||||
dataformat = wsme.rest.json
|
||||
dataformat = get_data_format()
|
||||
|
||||
try:
|
||||
status_code = None
|
||||
result = f(*args, **kwargs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user