1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
from __future__ import absolute_import
from .common_decorators import ViewDecorator
from rdflib.graph import Graph
class Decorator(ViewDecorator):
@classmethod
def get_graph(cls, response):
""" Given a Flask response, find the rdflib Graph """
if cls.is_graph(response): # single graph object
return response
if hasattr(response, '__getitem__'): # indexable tuple
if len(response) > 0 and \
cls.is_graph(response[0]): # graph object
return response[0]
@classmethod
def replace_graph(cls, response, serialized):
""" Replace the rdflib Graph in a Flask response """
if cls.is_graph(response): # single graph object
return serialized
if hasattr(response, '__getitem__'): # indexable tuple
if len(response) > 0 and \
cls.is_graph(response[0]): # graph object
return (serialized,) + response[1:]
return response
@classmethod
def make_new_response(cls, old_response, mimetype, serialized):
from flask import make_response
final_output = cls.replace_graph(old_response, serialized)
response = make_response(final_output)
response.headers['Content-Type'] = mimetype
return response
@classmethod
def make_406_response(cls):
return '406 Not Acceptable', 406
@classmethod
def get_accept(cls):
from flask import request
return request.headers.get('Accept', '')
_implicit_instance = Decorator()
def output(response, accepts):
return _implicit_instance.output(response, accepts)
def returns_rdf(view):
return _implicit_instance.decorate(view)
|