Календарь Google не отображает события из файла iCalendar (ics), размещенного на S3

Я создал календарь ICAL и разместил его на Amazon S3:

При создании нового календаря и выборе импорта из файла и использовании этого файла ICAL все события импортируются, но если я добавляю интернет-календарь, календарь добавляется, но события никогда не отображаются, и то же самое для имени календаря.

Это данные VCALENDAR:

BEGIN:VCALENDAR
CALSCALE:GREGORIAN
METHOD:PUBLISH
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 4.0//EN
VERSION:2.0
X-ORIGINAL-URL:http://static.exyll.net/exports/chauffeur-ts.ics
X-WR-CALNAME:VG Hoogvliet - chauffeur-ts
X-WR-TIMEZONE:Europe/Amsterdam

Я пробовал разные способы форматирования структур VEVENT:

Временная метка UTC

BEGIN:VEVENT
DTEND:20190114T080000Z
DTSTAMP:20190408T165745Z
DTSTART:20190114T060000Z
LOCATION:Rietbroek\, Hoogvliet
SEQUENCE:0
SUMMARY:Onderbezetting - chauffeur-ts (07:00 - 2u)
UID:bed8e415ca443a72a67ea9dc0a6a9bc5
END:VEVENT

Местная временная метка + TZID

BEGIN:VEVENT
DTEND;TZID=Europe/Amsterdam:20190114T080000
DTSTAMP:20190408T174500Z
DTSTART;TZID=Europe/Amsterdam:20190114T060000
LOCATION:Rietbroek\, Hoogvliet
SEQUENCE:0
SUMMARY:Onderbezetting - chauffeur-ts (06:00 - 2u)
UID:bed8e415ca443a72a67ea9dc0a6a9bc5
END:VEVENT

Без местоположения, но с категорией

BEGIN:VEVENT
CATEGORIES:Onderbezetting
DTEND:20181206T080000Z
DTSTAMP:20190409T081553Z
DTSTART:20181206T050000Z
SEQUENCE:0
SUMMARY:Onderbezetting - bevelvoerder (06:00 - 3u)
UID:638682f0542136a1884d6bdd7136b4c0
END:VEVENT

Заголовки http:

HTTP/1.1 200 OK
x-amz-id-2: VMuHAsEtbQjjqiceomqVth61ycP8uuS7d73G7eI22NEv6EGDt/hAAl4EGA1nHJ4FGNopm+wahyw=
x-amz-request-id: DDD6997ACB409B12
Date: Mon, 08 Apr 2019 17:29:35 GMT
Cache-Control: public
Content-Disposition: attachment; filename = "calendar.ics"
Expires: Mon, 01 Apr 2019 00:00:00 GMT
Last-Modified: Mon, 08 Apr 2019 16:57:48 GMT
ETag: "a3e47ff07b8a9b17f91a4a7e4afb5325"
Content-Type: text/calendar
Content-Length: 2883
Server: AmazonS3

Я пробовал использовать разные заголовки HTTP-кэша, не используя заголовок содержимого, используя временные метки без Z, не указывая CALSCALE, METHOD, X-ORIGINAL-URL или X-WR-TIMEZONE, и я пытался не использовать UID или новый UID каждый раз, когда файл создается.

Я достиг своего предела обнаружения того, что потенциально может быть неправильным, но все же что-то есть.

Кто знает, почему этот URL-адрес может быть добавлен в Календарь Google, но никогда не показывает его события или его имя?

stackoverflow.com/questions/21275581/… (Google кэширует URL-адреса календаря)
Andrew 10.03.2020 08:36

@ Эндрю Я знаком с очисткой кеша, но это не моя проблема (см. Мой собственный ответ).

Ramon Smits 03.04.2020 18:08
Пакеты Java
Пакеты Java
Пакет java - это группа классов, интерфейсов и подпакетов схожего типа. Думайте об этом как о папке в каталоге файлов. Мы используем пакеты, чтобы...
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
3
2
701
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Похоже, у вас есть какой-то мусор ближе к концу потока icalendar.

BEGIN:VEVENT
CATEGORIES:Onderbezetting
DTEND;TZID=Europe/Amsterdam:20190412T190000
DTSTAMP:20190409T080434Z
DTSTART;TZID=Europe/Amsterdam:20190412T150000
SEQUENCE:0
SUMMARY:Onderbezetting - chauffeur-ts (15:00 - 4u)
UID:241e4276f83a3b1d91e6353059b9ee89
END:VEVENT
END:VCALENDAR
76f83a3b1d91e6353059b9ee89
END:VEVENT
END:VCALENDAR

(у вас есть два END:VCALENDAR с чем-то между ними).

Спасибо, что заметили это. Повреждение произошло из-за того, что я использовал File.Open вместо File.Create. Собираюсь проверить, решает ли это.

Ramon Smits 11.04.2019 12:07

К сожалению, похоже, это не решает проблему.

Ramon Smits 11.04.2019 12:42
Ответ принят как подходящий

Файл содержал спецификацию UTF8, поэтому следующий валидатор не загружался. Я использую С# и должен был использовать new StreamWriter(s, new UTF8Encoding(false)) вместо new StreamWriter(s, Encoding.UTF8)

Валидатор утверждает, что свойство ORGANIZER необходимо, но это неверно.

Другие вопросы по теме