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 logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
import mimetypes
|
||||||
|
|
||||||
import wsme
|
import wsme
|
||||||
import wsme.api
|
import wsme.api
|
||||||
import wsme.rest.json
|
import wsme.rest.json
|
||||||
@ -15,6 +17,25 @@ import flask
|
|||||||
log = logging.getLogger(__name__)
|
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):
|
def signature(*args, **kw):
|
||||||
sig = wsme.signature(*args, **kw)
|
sig = wsme.signature(*args, **kw)
|
||||||
|
|
||||||
@ -32,16 +53,8 @@ def signature(*args, **kw):
|
|||||||
flask.request.mimetype
|
flask.request.mimetype
|
||||||
)
|
)
|
||||||
|
|
||||||
dataformat = None
|
dataformat = get_data_format()
|
||||||
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
|
|
||||||
try:
|
try:
|
||||||
status_code = None
|
status_code = None
|
||||||
result = f(*args, **kwargs)
|
result = f(*args, **kwargs)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user