Beispiel #1
0
        public static void Serialize(System.IO.Stream stream, Event e, System.Text.Encoding encoding = null)
        {
            var ical = new CalDav.Calendar();

            ical.Events.Add(e);
            Serialize(stream, ical, encoding);
        }
Beispiel #2
0
        public void Save(Event e)
        {
            if (string.IsNullOrEmpty(e.UID))
            {
                e.UID = Guid.NewGuid().ToString();
            }
            e.LastModified = DateTime.UtcNow;

            var result = Common.Request(new Uri(Url, e.UID + ".ics"), "PUT", (req, str) => {
                req.Headers[System.Net.HttpRequestHeader.IfNoneMatch] = "*";
                req.ContentType = "text/calendar";
                var calendar    = new CalDav.Calendar();
                e.Sequence      = (e.Sequence ?? 0) + 1;
                calendar.Events.Add(e);
                Common.Serialize(str, calendar);
            }, Credentials);

            if (result.Item1 != System.Net.HttpStatusCode.Created && result.Item1 != HttpStatusCode.NoContent)
            {
                throw new Exception("Unable to save event: " + result.Item1);
            }
            e.Url = new Uri(Url, result.Item3[System.Net.HttpResponseHeader.Location]);

            GetObject(e.UID);
        }
Beispiel #3
0
        public void Delete(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                throw new ArgumentNullException("UID");
            }

            var headers = new Dictionary <string, string>();

            var    calendar = new CalDav.Calendar();
            string content;

            using (var ms = new MemoryStream())
            {
                Common.Serialize(ms, calendar);
                var arr = ms.ToArray();
                content = System.Text.Encoding.UTF8.GetString(arr, 0, arr.Length);
            }

            var result = common.Request(new Uri(Url, id + ".ics"), "DELETE", "text/calendar", content, Credentials, headers);

            if (result.HttpStatusCode != System.Net.HttpStatusCode.Created && result.HttpStatusCode != HttpStatusCode.NoContent)
            {
                throw new Exception("Unable to delete event: " + result.HttpStatusCode);
            }
        }
Beispiel #4
0
        private static string ToString(ICalendarObject obj)
        {
            var calendar = new CalDav.Calendar();

            calendar.AddItem(obj);
            var serializer = new Serializer();

            using (var str = new System.IO.StringWriter()) {
                serializer.Serialize(str, calendar);
                return(str.ToString());
            }
        }
Beispiel #5
0
        public void Save(ICalendarInfo calendar, ICalendarObject e)
        {
            var filename = System.IO.Path.Combine(_directory, calendar.ID, e.UID + ".ics");
            var ical     = new CalDav.Calendar();

            ical.AddItem(e);
            var serializer = new Serializer();

            using (var file = System.IO.File.Open(filename, System.IO.FileMode.Create))
            {
                serializer.Serialize(file, ical);
            }
        }
Beispiel #6
0
        public void Delete(Event e)
        {
            if (string.IsNullOrEmpty(e.UID)) throw new ArgumentNullException("UID");

            var result = Common.Request(new Uri(Url, e.UID + ".ics"), "DELETE", (req, str) =>
            {
                req.Headers[System.Net.HttpRequestHeader.IfNoneMatch] = "*";
                req.ContentType = "text/calendar";
                var calendar = new CalDav.Calendar();
                e.Sequence = (e.Sequence ?? 0) + 1;
                Common.Serialize(str, calendar);

            }, Credentials);
        }
Beispiel #7
0
        public void Delete(Event e)
        {
            if (string.IsNullOrEmpty(e.UID))
            {
                throw new ArgumentNullException("UID");
            }

            var result = Common.Request(new Uri(Url, e.UID + ".ics"), "DELETE", (req, str) =>
            {
                req.Headers[System.Net.HttpRequestHeader.IfNoneMatch] = "*";
                req.ContentType = "text/calendar";
                var calendar    = new CalDav.Calendar();
                e.Sequence      = (e.Sequence ?? 0) + 1;
                Common.Serialize(str, calendar);
            }, Credentials);
        }
Beispiel #8
0
		public void Save(Event e) {
			if (string.IsNullOrEmpty(e.UID)) e.UID = Guid.NewGuid().ToString();
			e.LastModified = DateTime.UtcNow;

			var result = Common.Request(new Uri(Url, e.UID + ".ics"), "PUT", (req, str) => {
				req.Headers[System.Net.HttpRequestHeader.IfNoneMatch] = "*";
				req.ContentType = "text/calendar";
				var calendar = new CalDav.Calendar();
				e.Sequence = (e.Sequence ?? 0) + 1;
				calendar.Events.Add(e);
				Common.Serialize(str, calendar);

			}, Credentials);
			if (result.Item1 != System.Net.HttpStatusCode.Created && result.Item1 != HttpStatusCode.NoContent)
				throw new Exception("Unable to save event: " + result.Item1);
			e.Url = new Uri(Url, result.Item3[System.Net.HttpResponseHeader.Location]);

			GetObject(e.UID);
		}
Beispiel #9
0
        private static string ToString(CalendarObjectData obj)
        {
            var calendar = new CalDav.Calendar();

            calendar.AddItem(obj.Object);
            if (obj.TimeZones != null)
            {
                foreach (var tz in obj.TimeZones)
                {
                    calendar.TimeZones.Add(tz);
                }
            }
            var serializer = new Serializer();

            using (var str = new System.IO.StringWriter())
            {
                serializer.Serialize(str, calendar);
                return(str.ToString());
            }
        }
Beispiel #10
0
        public static void Serialize(System.IO.Stream stream, CalDav.Calendar ical, System.Text.Encoding encoding = null)
        {
            //System.IO.StreamWriter sr = new System.IO.StreamWriter(stream);
            //sr.WriteLine("BEGIN: VCALENDAR");
            //sr.WriteLine("VERSION:2.0");
            //sr.WriteLine("PRODID: CalCli");
            //sr.WriteLine("BEGIN:VEVENT");
            //var enumer = ical.Events.GetEnumerator();
            //enumer.MoveNext();
            //sr.WriteLine("UID:"+enumer.Current.UID);
            //sr.WriteLine("DTSTAMP:20060712T182145Z");
            //sr.WriteLine("DTSTART:20060714T170000Z");
            //sr.WriteLine("DTEND:20060715T040000Z");
            //sr.WriteLine("SUMMARY:Bastille Day Party");
            //sr.WriteLine("END:VEVENT");
            //sr.WriteLine("END:VCALENDAR");
            //return
            var serializer = new CalDav.Serializer();

            serializer.Serialize(stream, ical, encoding);
        }
Beispiel #11
0
        public void Save(ToDo e)
        {
            bool update = !string.IsNullOrEmpty(e.UID);

            if (string.IsNullOrEmpty(e.UID))
            {
                e.UID = Guid.NewGuid().ToString();
            }
            e.LastModified = DateTime.UtcNow;

            var headers = new Dictionary <string, string>();

            if (!update)
            {
                headers["If-None-Match"] = "*";
            }

            var calendar = new CalDav.Calendar();

            e.Sequence = (e.Sequence ?? 0) + 1;
            calendar.ToDos.Add(e);
            string content;

            using (var ms = new MemoryStream())
            {
                Common.Serialize(ms, calendar);
                var arr = ms.ToArray();
                content = System.Text.Encoding.UTF8.GetString(arr, 0, arr.Length);
            }

            var result = common.Request(new Uri(Url, e.UID + ".ics"), "PUT", "text/calendar", content, Credentials, headers);

            if (result.HttpStatusCode != System.Net.HttpStatusCode.Created && result.HttpStatusCode != HttpStatusCode.NoContent)
            {
                throw new Exception("Unable to save event: " + result.HttpStatusCode);
            }
        }
Beispiel #12
0
		public void Save(ICalendarInfo calendar, ICalendarObject e) {
			var filename = System.IO.Path.Combine(_Directory, calendar.ID, e.UID + ".ics");
			var ical = new CalDav.Calendar();
			ical.AddItem(e);
			var serializer = new Serializer();
			using (var file = System.IO.File.Open(filename, System.IO.FileMode.Create))
				serializer.Serialize(file, ical);
		}
Beispiel #13
0
        public static void Serialize(System.IO.Stream stream, CalDav.Calendar ical, System.Text.Encoding encoding = null)
        {
            var serializer = new CalDav.Serializer();

            serializer.Serialize(stream, ical, encoding);
        }
Beispiel #14
0
        public void Save(ICalendarInfo calendar, ICalendarObject e, IEnumerable<TimeZone> timeZones)
        {
            var filename = System.IO.Path.Combine(_Directory, calendar.ID, e.UID + ".ics");
            var ical = new CalDav.Calendar();

            ical.AddItem(e);
            foreach (var timezone in timeZones)
            {
                ical.TimeZones.Add(timezone);
            }
            var serializer = new Serializer();
            using (var file = System.IO.File.Open(filename, System.IO.FileMode.Create))
                serializer.Serialize(file, ical);

            //update accordingly the _.ical file
            var calFileName = System.IO.Path.Combine(_Directory, calendar.ID + "\\_.ical");

            var globalIcal = LoadSerializedCalendarFromFileName(calendar.ID, calFileName);
            foreach (var item in ical.Items)
            {
                globalIcal.AddItem(item);
            }
            using (var file = System.IO.File.Open(calFileName, System.IO.FileMode.Open, System.IO.FileAccess.Write))
                serializer.Serialize(file, globalIcal);
        }
Beispiel #15
0
		public static void Serialize(System.IO.Stream stream, Event e, System.Text.Encoding encoding = null) {
			var ical = new CalDav.Calendar();
			ical.Events.Add(e);
			Serialize(stream, ical, encoding);
		}