Пример #1
0
def send_service_response(request_or_format, result, config=None):
    """Sends the API response."""
    from inyoka.core.http import Response

    if isinstance(result, Response):
        response = result
    else:
        ro = primitive(result, config)
        serializer, mimetype = get_serializer(request_or_format)
        response = Response(serializer(ro), mimetype=mimetype)

    # acao disallows requests by default (-- only base domain).
    acao = 'http://%s' % ctx.cfg['base_domain_name']
    if not isinstance(request_or_format, basestring):
        origin = request_or_format.headers.get('Origin', None)
        # If the origin is in our domainspace we accept.
        if origin and origin.endswith(ctx.cfg['base_domain_name']):
            acao = origin

        # make the response conditional
        response.make_conditional(request_or_format)

    response.headers['Access-Control-Allow-Origin'] = acao
    response.add_etag()
    return response
Пример #2
0
def send_service_response(request_or_format, result, config=None):
    """Sends the API response."""
    from inyoka.core.http import Response

    if isinstance(result, Response):
        response = result
    else:
        ro = primitive(result, config)
        serializer, mimetype = get_serializer(request_or_format)
        response = Response(serializer(ro), mimetype=mimetype)

    # acao disallows requests by default (-- only base domain).
    acao = 'http://%s' % ctx.cfg['base_domain_name']
    if not isinstance(request_or_format, basestring):
        origin = request_or_format.headers.get('Origin', None)
        # If the origin is in our domainspace we accept.
        if origin and origin.endswith(ctx.cfg['base_domain_name']):
            acao = origin

        # make the response conditional
        response.make_conditional(request_or_format)

    response.headers['Access-Control-Allow-Origin'] = acao
    response.add_etag()
    return response
Пример #3
0
def serve_javascript(request):
    """Serves the JavaScript translations."""
    from inyoka.core.http import Response

    code = _js_translations.get(ctx.dispatcher)
    if code is None:
        messages = {}
        translations = get_translations()
        catalog = translations._catalog if hasattr(translations, '_catalog') else {}
        data = {'domain': 'messages', 'locale': unicode(get_locale())}

        for msgid, msgstr in catalog.iteritems():
            if isinstance(msgid, (list, tuple)):
                messages.setdefault(msgid[0], {})
                messages[msgid[0]][msgid[1]] = msgstr
            elif msgid:
                messages[msgid] = msgstr
            else:
                for line in msgstr.splitlines():
                    line = line.strip()
                    if not line:
                        continue
                    if ':' not in line:
                        continue
                    name, val = line.split(':', 1)
                    name = name.strip().lower()
                    if name == 'plural-forms':
                        data['plural_expr'] = pluralexpr(val)
                        break

        data['messages'] = messages

        code = u''.join((
            ('// Generated messages javascript file from compiled MO file\n'),
            ('babel.Translations.load('),
            (json.dumps(data)),
            (').install();\n')
        ))
        _js_translations[ctx.dispatcher] = code

    response = Response(code, mimetype='application/javascript')
    response.add_etag()
    response.make_conditional(request)
    return response