File: flask.py

package info (click to toggle)
python-flask-rdf 0.2.0-1.1~deb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 132 kB
  • sloc: python: 312; makefile: 14
file content (54 lines) | stat: -rw-r--r-- 1,515 bytes parent folder | download
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)