Я создал API, используя Django Rest Framework, чтобы обслуживать канал из моих моделей django. Содержимое канала проверено и работает во всех протестированных мною приложениях календаря, кроме iCal для iOS. iCal на iOs примет содержимое при копировании/вставке, но не примет импорт из URL-адреса.
Я подозреваю, что причиной этой проблемы является http-заголовок: transfer-encoding: chunked
Я пытаюсь выяснить, почему передача разбита на части, и посмотреть, позволит ли исправление этого iOS читать ленту.
Вот несколько упрощенных кодов:
Визуализатор
from rest_framework import renderers
class ICALRenderer(renderers.BaseRenderer):
media_type = 'text/html'
format = 'ical'
charset = 'utf-8'
def render(self, data, media_type=None, renderer_context=None):
blob = tools.ical_generator(data, 'My calendar name', 'My calendar description')
return blob
tools.ical_generator
def ical_generator(events=[], calname='', caldesc=''):
cal = vobject.iCalendar()
# build header
# iterate over events
# build footer
icalstream = cal.serialize()
return icalstream
примечание-1: при выполнении wget будут отображаться только заголовок и нижний колонтитул из ical_generator, и передача не будет завершена, а «зависнет». " бессрочно.
примечание-2: API также используется для других целей, кроме фида, и в других обстоятельствах http-заголовок не разбивается на части.