|
12345678910111213141516171819202122232425262728293031323334353637383940 |
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
-
- from django.http import HttpResponseBadRequest
- from .utils import add_default_headers
-
- def events(request, **kwargs):
- from .eventrequest import EventRequest
- from .eventstream import EventPermissionError, get_events
- from .utils import sse_error_response
-
- try:
- event_request = EventRequest(request, view_kwargs=kwargs)
- event_response = get_events(event_request)
- response = event_response.to_http_response(request)
- except EventRequest.ResumeNotAllowedError as e:
- response = HttpResponseBadRequest(
- 'Invalid request: %s.\n' % str(e))
- except EventRequest.GripError as e:
- if request.grip.proxied:
- response = sse_error_response(
- 'internal-error',
- 'Invalid internal request.')
- else:
- response = sse_error_response(
- 'bad-request',
- 'Invalid request: %s.' % str(e))
- except EventRequest.Error as e:
- response = sse_error_response(
- 'bad-request',
- 'Invalid request: %s.' % str(e))
- except EventPermissionError as e:
- response = sse_error_response(
- 'forbidden',
- str(e),
- {'channels': e.channels})
-
- add_default_headers(response)
-
- return response
|