پشتیبانی iCal
وضعیتِ فعلی
فیلد ical از پاسخهای همگامسازی حذف شده است و کدِ تولیدکنندهٔ آن
(apps/api/src/utils/icalGenerator.ts) نیز از repo پاک شده است. هیچ مسیری
خروجیِ text/calendar ندارد. این صفحه نقشهٔ راهِ آیندهٔ خروجی iCal را نگه
میدارد.
وقتی فعال شود، سرور برای هر رویداد یک رشتهٔ کاملِ VEVENT مطابق RFC 5545
تولید و در فیلد ical برمیگرداند. این رشته برای خروجی به تقویمهای خارجی —
Google Calendar، تقویم اندروید، Outlook و مانند آنها — است.
چه چیزی در ical هست؟
UID،SUMMARY،DESCRIPTION،LOCATIONDTSTARTوDTEND(UTC؛ برای رویدادهای تمامروز بهصورتVALUE=DATE)CREATEDوLAST-MODIFIEDRRULEبرای رویدادهای تکرارشونده وEXDATEبرای استثناهاSTATUS(CONFIRMED/CANCELLED) وCLASS(PUBLIC/PRIVATE) وCOLOR- ویژگیهای سفارشیِ
X-TAGHVIMAM-*برای حفظِ متادیتای اختصاصی (نوع تقویم، منبع، وضعیت همگامسازی و…) هنگام خروج به سیستمهای خارجی
فیلد ical فقط در پاسخهای رویداد تولید میشود و سرور مالکِ آن است؛ کلاینت
نباید آن را بنویسد.
نمونهٔ یک رشتهٔ ical
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Taghvimam//Calendar Sync API//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-TIMEZONE:Asia/Tehran
X-WR-CALNAME:My Calendar
BEGIN:VEVENT
UID:event-123@taghvimam.com
SUMMARY:Team Meeting
DESCRIPTION:Weekly team sync
LOCATION:Conference Room A
DTSTART:20240115T100000Z
DTEND:20240115T110000Z
CREATED:20240101T000000Z
LAST-MODIFIED:20240101T000000Z
STATUS:CONFIRMED
CLASS:PUBLIC
X-TAGHVIMAM-SOURCE:LOCAL
X-TAGHVIMAM-CALENDAR-ID:123
X-TAGHVIMAM-SYNC-STATUS:SYNCED
END:VEVENT
END:VCALENDAR
پشتیبانی از RFC 5545 شامل اینهاست: کانتینر VCALENDAR با متادیتای مناسب،
VEVENT با propertyهای استاندارد، RRULE برای تکرارها
(DAILY/WEEKLY/MONTHLY/YEARLY)، EXDATE برای استثناها، منطقهٔ زمانی و رویدادهای
تمامروز.
پسوندهای اختصاصیِ Taghvimam (X-TAGHVIMAM-*)
| Property | کاربرد |
|---|---|
X-TAGHVIMAM-SOURCE | منبع رویداد (LOCAL/GOOGLE/ANDROID_PROVIDER/SERVER) |
X-TAGHVIMAM-SOURCE-ID | نگاشت ID خارجی برای همگامسازی |
X-TAGHVIMAM-CALENDAR-ID | رابطهٔ تقویم |
X-TAGHVIMAM-CALENDAR-NAME | نام تقویم |
X-TAGHVIMAM-CALENDAR-TYPE | JALALI یا GREGORIAN |
X-TAGHVIMAM-SYNC-STATUS | وضعیت همگامسازی (SYNCED/PENDING/CONFLICT) |