qmsk/web/json.py
author Tero Marttila <terom@paivola.fi>
Fri, 30 Jan 2015 14:28:15 +0200
changeset 111 530d215d5df1
parent 110 7af0b8ce698f
child 112 b5e0939124b1
permissions -rw-r--r--
qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
import json

class JSONMixin:
    MIMETYPE = 'application/json'

    CORS_ORIGIN = None
    CORS_METHODS = None
    CORS_HEADERS = None
    CORS_CREDENTIALS = None
    
    def headers (self):
        if self.CORS_ORIGIN:
            yield 'Access-Control-Allow-Origin', self.CORS_ORIGIN

        if self.CORS_METHODS:
            yield 'Access-Control-Allow-Methods', ', '.join(self.CORS_METHODS)

        if self.CORS_HEADERS:
            yield 'Access-Control-Allow-Headers', ', '.join(self.CORS_HEADERS)
        
        if self.CORS_CREDENTIALS:
            yield 'Access-Control-Allow-Credentials', 'true'

    def render_json(self, **parms):
        raise NotImplementedError()

    def render_response(self, **params):
        data = self.render_json(**params)

        return json.dumps(data)