מהו קובץ ICS?
מפרט אובייקט ליבה של יומן ותזמון אינטרנט (iCalendar) הוא תקן אינטרנט (RFC 2445) להחלפה ופריסה של אירועי לוח שנה ותזמון. פורמט iCalendar פועל הדדי, ובכך מבטיח חילופי מידע על לוח השנה בין המשתמשים שיש להם יישומי דוא"ל שונים. iCalendar פורמט את נתוני הקלט כהרחבות דואר אינטרנט רב-תכליתי (MIME) ומקל על החלפת האובייקט באמצעות פרוטוקולי תחבורה שונים. פרוטוקולי תעבורה אלה יכולים להיות SMTP, HTTP, תקשורת אסינכרונית מנקודה לנקודה והובלת רשת מבוססת מדיה פיזית.
iCalendar מאפשר למשתמשים לשתף אירועים, משימות תלויות תאריך/שעה ומידע פנוי/עסוק באמצעות דואר אלקטרוני למשתמשים אחרים שיכולים להגיב בחזרה. קבצי iCalendar מאחסנים באמצעות הסיומות “.ics” “.iCalendar” או “.ifb” עם סוג MIME של “טקסט/לוח שנה”. iCalendar נשמר להיות עצמאי ללא כל תלות בפרוטוקול תחבורה. שרתי אינטרנט (עם פרוטוקול HTTP) יכולים להעביר מידע iCalendar ודפי אינטרנט יכולים להכיל נתוני iCalendar בצורה משובצת באמצעות iCalendar.
היסטוריה קצרה של פורמט קובץ ICS
בשנת 1998, ה-Internet Engineering Task Force (IETF) הגדיר את iCalendar כתקן (RFC 2445). התקן תועד על ידי פרנק דוסון (Lotus Notes Corporation) ודריק סטנרסון (מיקרוסופט). בשנת 2009, התקן שוב שוכלל על ידי Bernard Desruiseaux (Oracle) כ-RFC 5545. הפעם נוספו כמה תכונות חדשות וכמה תכונות מיושנות הוצאו משימוש. בשנת 2016, RFC 7986 שוחרר והוגדל ל-iCalendar RFC המקורי. RFC 7986 הוסיף מאפיינים חדשים לאובייקט VCALENDAR הראשי ותכונות תומכות חדשות הוצגו גם עבור מערכות ועידה.
פורמט קובץ ICS
סוג ה-MIME המשמש את הנתונים של iCalendar הוא “טקסט/לוח שנה”. ערכת התווים המוגדרת כברירת מחדל עבור iCalendar היא UTF-8, אולם על ידי מתן פרמטרים ב-MIME, ניתן להשתמש בערכת תווים אחרת. קובץ iCalendar מכיל קטעים, בין הקטעים האלה “VCALENDAR”, הוא הקטע הגלובלי שמכיל את כל שאר הקטעים. סעיף VEVENT מגדיר אירועים, VTODO מפרט את כל פריטי המטלות, VJOURNAL מכיל רשומות יומן, ו-VTIMEZONE מציין מידע על אזור זמן. מותרים מספר חלקים בקטגוריה דומה. עבור אירועים רבים, קטעי VEVENT מרובים יכולים להיות נוכחים בקובץ iCalendar.
שורות תוכן
האובייקטים של iCalendar מסודרים לשורות טקסט “שורות תוכן” ברורות. בפורמט קובץ זה, רצף CRLF מסיים שורה בעוד שאורך השורה מוגבל ל-75 אוקטטים, לא כולל מעבר שורה. ניתן להרחיב פריט נתונים ארוך לשורות רבות.
מפרידי רשימה ושדות
מאפיינים ופרמטרים מציינים רשימת ערכים המופרדים באמצעות תו COMMA. מחרוזות במרכאות משמשות לערכי פרמטרים מבוססי URI. ניתן לבנות רשימת פרמטרים לפי ערך המאפיין. כל פרמטר מאפיין ברשימה זו חייב להיות מופרד על ידי SEMICOLON.
ברשימת ערכים, SEMICOLON מבודד פרמטרים של מאפיין וערכי מאפיין נפרדים בפסיק. הדוגמה ניתנת להלן:
ATTENDEE;RSVP#TRUE;ROLE#REQ- contestant:mailto:
name@example.com
DATE;VALUE#DATE:20170304,20180504,2015704,201270904
ערכים מרובים
לנכסים מסוימים יכולים להיות ערכים מרובים. יצירת שורת תוכן חדשה עם שם הנכס היא הכלל הבסיסי לנכסים בעלי ערך רב. עם זאת, עבור ערך בודד עם וריאציות שפה מרובות אסור להשתמש במאפיינים מרובי ערכים.
תוכן בינארי
בתוך אובייקט iCalendar, ערך המאפיין יכול להתייחס לנתוני תוכן בינאריים הממוקמים בישות MIME חיצונית באמצעות URI. ניתן להשתמש בתוכן בינארי מוטבע במצבים מיוחדים עם פרמטר “ENCODING”, כאשר היישום צריך לבטא אובייקט iCalendar כישות יחידה. הדוגמה הבאה מסבירה מאפיין “ATTACH” עם הפניה ל-URI:
צרף: https://products.conholdate.app/viewer/view/KDDURXKkLk/fileformat.doc
סט תווים
למרות שסכימת ברירת המחדל של ערכת התווים עבור iCalendar היא UTF-8, אך לא צוין פרמטר מאפיין כדי להגדיר את ערכת התווים של ערך מאפיין. בהעברות MIME יש להשתמש בפרמטר “charset” עבור ערכת תווים קיימת.