1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/ihatemoney_ynh.git synced 2024-09-03 19:26:15 +02:00

add mimetype support to the rest API utils

This commit is contained in:
Alexis Metaireau 2011-09-13 11:52:11 +02:00
parent d2e2260e52
commit a60b0c2b48

View file

@ -1,4 +1,5 @@
import json import json
from flask import request
class RESTResource(object): class RESTResource(object):
"""Represents a REST resource, with the different HTTP verbs""" """Represents a REST resource, with the different HTTP verbs"""
@ -72,8 +73,7 @@ class RESTResource(object):
method = need_auth(self._authentifier, method = need_auth(self._authentifier,
self._inject_name or self._name)(method) self._inject_name or self._name)(method)
# regarding the format, transform the response method = serialize(method)
method = serialize("json")(method) #FIXME handle headers
app.add_url_rule( app.add_url_rule(
self._get_route_for(action), self._get_route_for(action),
@ -120,12 +120,12 @@ def need_auth(authentifier, name=None, remove_attr=True):
# serializers # serializers
def serialize(format): def serialize(func):
def wrapper(func):
def wrapped(*args, **kwargs): def wrapped(*args, **kwargs):
return SERIALIZERS[format].encode(func(*args, **kwargs)) mime = request.accept_mimetypes.best_match(SERIALIZERS.keys())
return SERIALIZERS.get(mime, "text/json")\
.encode(func(*args, **kwargs))
return wrapped return wrapped
return wrapper
class JSONEncoder(json.JSONEncoder): class JSONEncoder(json.JSONEncoder):
@ -139,4 +139,4 @@ class JSONEncoder(json.JSONEncoder):
else: else:
return json.JSONEncoder.default(self, o) return json.JSONEncoder.default(self, o)
SERIALIZERS = {"json": JSONEncoder()} SERIALIZERS = {"text/json": JSONEncoder()}