private void UpdateNextLocalCalendar() { if (_calendarsToUpdate.Count == 0) { OnSyncComplete(true); return; } _currentUpdatingCalendar = _calendarsToUpdate.First(); _calendarsToUpdate.Remove(_currentUpdatingCalendar); _ocClient.LoadCalendarDataComplete += LoadEventInfoComplete; _ocClient.LoadCalendarData(_currentUpdatingCalendar, new CalendarEventRequest { LoadCalendarData = false }); }
/// <summary> /// Lädt die Termine eines Kalendars /// </summary> /// <param name="cInfo">Die Information über den Kalendar</param> /// <param name="request">The request</param> public void LoadCalendarData(CalendarCalDavInfo cInfo, CalendarEventRequest request = null) { this.BeginHttpRequest(Address.CombineServerAddress(cInfo.Url)); ContentTypeXml(); this.SetMethod("REPORT"); Request.Headers["Depth"] = "1"; Request.Headers["Prefer"] = "return-minimal"; if (request == null) { request = new CalendarEventRequest(); } Request.BeginGetRequestStream(CalendarDataWriteRequest, request); }
public void DisableCalendar(CalendarCalDavInfo calendar) { using (var context = new OwnCloudDataContext()) { var entity = (from o in context.Calendars where o.Url == calendar.Url select o).SingleOrDefault(); if (entity != null) { context.Calendars.DeleteOnSubmit(entity); } var eventsToDelete = context.Events.Where(o => o.CalendarId == entity.Id).ToArray(); context.Events.DeleteAllOnSubmit(eventsToDelete); context.SubmitChanges(); } }
public void EnableCalendar(CalendarCalDavInfo calendar) { using (var context = new OwnCloudDataContext()) { var existingEntity = (from o in context.Calendars where o.Url == calendar.Url select o).SingleOrDefault(); if (existingEntity != null) { return; } var entity = TableCalendar.FromCalDavCalendarInfo(calendar); entity.GetCTag = ""; entity._accountId = this._accountId; context.Calendars.InsertOnSubmit(entity); context.SubmitChanges(); } }
public static CalendarCalDavInfo[] ParseCalendarCalDavInfo(Stream stream) { var rootItem = LoadRootItem(stream); var responses = rootItem.Elements(); var calendars = new List <CalendarCalDavInfo>(); foreach (var res in responses) { var info = new CalendarCalDavInfo { Url = res.Elements(XName.Get("href", XmlNamespaces.NsDav)).Single().Value }; var propstat = res.Element(XName.Get("propstat", XmlNamespaces.NsDav)); if (propstat != null) { var status = propstat.GetIfExists(XName.Get("status", XmlNamespaces.NsDav)); if (status != "HTTP/1.1 200 OK") { continue; } } else { continue; } foreach (var prop in propstat.Elements(XName.Get("prop", XmlNamespaces.NsDav))) { info.DisplayName = prop.GetIfExists(XName.Get("displayname", XmlNamespaces.NsDav)); info.GetCTag = prop.GetIfExists(XName.Get("getctag", XmlNamespaces.NsCalenderServer)); } calendars.Add(info); } return(calendars.ToArray()); }