2018-06-07 15:22:29 +00:00
|
|
|
import json
|
|
|
|
from sanic import response
|
|
|
|
from .base import RenderMixin
|
|
|
|
|
|
|
|
|
|
|
|
class JsonDataView(RenderMixin):
|
2019-05-03 20:40:24 +00:00
|
|
|
name = "json_data"
|
|
|
|
|
2018-06-07 15:22:29 +00:00
|
|
|
def __init__(self, datasette, filename, data_callback):
|
|
|
|
self.ds = datasette
|
|
|
|
self.filename = filename
|
|
|
|
self.data_callback = data_callback
|
|
|
|
|
2018-06-15 06:51:23 +00:00
|
|
|
async def get(self, request, as_format):
|
2018-06-07 15:22:29 +00:00
|
|
|
data = self.data_callback()
|
2018-06-15 06:51:23 +00:00
|
|
|
if as_format:
|
2018-06-07 15:22:29 +00:00
|
|
|
headers = {}
|
|
|
|
if self.ds.cors:
|
|
|
|
headers["Access-Control-Allow-Origin"] = "*"
|
|
|
|
return response.HTTPResponse(
|
2019-05-04 02:15:14 +00:00
|
|
|
json.dumps(data), content_type="application/json", headers=headers
|
2018-06-07 15:22:29 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
else:
|
2019-05-04 02:15:14 +00:00
|
|
|
return self.render(["show_json.html"], filename=self.filename, data=data)
|