private bool ParseSubComponent(CalendarReader calReader) { CalendarComponentBase calendarComponentBase = this.NewComponent(calReader); bool result; if (calendarComponentBase.Parse(calReader)) { if (this.ProcessSubComponent(calendarComponentBase)) { this.subComponents.Add(calendarComponentBase); result = true; } else { ExTraceGlobals.ICalTracer.TraceError <string>((long)this.GetHashCode(), "CalendarComponentBase::ParseSubComponent. Failed to process component: {0}", calendarComponentBase.componentName); result = false; } } else { ExTraceGlobals.ICalTracer.TraceError <string>((long)this.GetHashCode(), "CalendarComponentBase::ParseSubComponent. Failed to parse component: {0}", calendarComponentBase.componentName); result = false; } return(result); }
public void WriteTo(Stream destination) { this.stream.Position = 0L; using (CalendarReader calendarReader = new CalendarReader(new SuppressCloseStream(this.stream), this.originalCharset.Name, CalendarComplianceMode.Loose)) { using (CalendarWriter calendarWriter = new CalendarWriter(new SuppressCloseStream(destination), this.targetCharset.Name)) { calendarWriter.SetLooseMode(); this.properties.Write(calendarReader, calendarWriter); } } }
private bool ParseProperties(CalendarReader calReader) { CalendarPropertyReader propertyReader = calReader.PropertyReader; while (propertyReader.ReadNextProperty()) { if (!this.ParseProperty(propertyReader) && !string.IsNullOrEmpty(propertyReader.Name)) { this.Context.AddError(ServerStrings.InvalidICalElement(propertyReader.Name)); return(false); } } return(true); }
public ActionResult GetView(int tileId) { var tile = db.Tile.Find(tileId); // which tile is it? if (tile.TileType == 1) { // this is a noticeboard tile. var noticeBoard = tile as Noticeboard; // get Noticeboard Items ViewModel. var noticeboardItem = NoticeboardReader.GetNoticeboardItem(noticeBoard, db); if (noticeboardItem == null) { return(PartialView("_ErrorPartialView", "Cannot find noticeboard item, check your configuration")); } // pass ViewModel to the view. return(PartialView("_NoticeBoardTilePartialView", noticeboardItem)); } if (tile.TileType == 2) { // this is a calendar tile. var calender = tile as Calender; // get Calendar Items ViewModel. var calendarItems = CalendarReader.GetCalendarItems(calender, db); // pass ViewModel to the view. return(PartialView("_CalendarTilePartialView", calendarItems)); } if (tile.TileType == 3) { // this is a newsfeed tile. var newstile = tile as Newsfeed; // get Newsfeed Items ViewModel. var newsItems = RssReader.Read(newstile.RssUrl); // pass ViewModel to the view. return(PartialView("_NewsFeedTilePartialView", newsItems)); } if (tile.TileType == 4) { // this is the a Twitter tile. var twitterTile = tile as Twitter; // get Twitter Items ViewModel. var tweets = TwitterReader.GetTweets(twitterTile.SearchCriteria); // pass ViewModel to the view. return(PartialView("_TwitterTilePartialView", tweets)); } return(PartialView("_TilePartialView")); }
private void listBox_Loaded(object sender, RoutedEventArgs e) { CalendarReader cl = new CalendarReader(); cl.GoogleMain(); events = new ObservableCollection <string>(cl.gcevents); dates = new ObservableCollection <string>(cl.dates); foreach (string f in events) { foreach (string d in dates) { listBox.Items.Add((f.ToString() + " " + (d) + "\n")); } } }
public static WeekDayNum ReadFrom(CalendarReader reader) { int?order = null; if (reader.IsSignedInteger) { order = reader.ReadSignedInteger(); } var wd = reader.ReadName(); var dayOfWeek = ParseDayOfWeek(wd); return(new WeekDayNum { DayOfWeek = dayOfWeek, OrderWeek = order }); }
private bool ParseSubComponents(CalendarReader calReader) { if (calReader.ReadFirstChildComponent()) { while (this.ParseSubComponent(calReader)) { if (!calReader.ReadNextSiblingComponent()) { goto IL_37; } } ExTraceGlobals.ICalTracer.TraceError <string>((long)this.GetHashCode(), "CalendarComponentBase::ParseSubComponents. Failed to parse subcomponent: {0}", calReader.ComponentName); return(false); } IL_37: return(this.ValidateStructure()); }
public void Run() { //ExStart: ReadMultilpleEventsFromICS string dataDir = RunExamples.GetDataDir_Email(); List <Appointment> appointments = new List <Appointment>(); CalendarReader reader = new CalendarReader(dataDir + "US-Holidays.ics"); while (reader.NextEvent()) { appointments.Add(reader.Current); } //working with appointments... //ExEnd: ReadMultilpleEventsFromICS }
internal static IEnumerable <Item> InternalICalToItems(Stream iCalStream, string charsetName, InboundAddressCache addressCache, uint?maxBodyLength, bool hasExceptionPromotion, Func <Item> getItem, IList <LocalizedString> errorStream, out string calendarName) { Util.ThrowOnNullArgument(iCalStream, "iCalStream"); Util.ThrowOnNullArgument(addressCache, "addressCache"); Util.ThrowOnNullArgument(errorStream, "errorStream"); bool flag = false; LocalizedException ex = null; Charset charset = Charset.GetCharset(charsetName ?? "utf-8"); CalendarDocument calendarDocument = new CalendarDocument(); IEnumerable <Item> result; using (CalendarReader calendarReader = new CalendarReader(new StreamWrapper(iCalStream, false), charset.Name, CalendarComplianceMode.Loose)) { ICalInboundContext calInboundContext = new ICalInboundContext(charset, errorStream, addressCache, addressCache.Options, calendarReader, maxBodyLength, hasExceptionPromotion); try { flag = (calendarDocument.Parse(calInboundContext) && calendarDocument.vCalendar.Validate()); } catch (InvalidCalendarDataException ex2) { ex = ex2; } calendarName = calInboundContext.CalendarName; if (!flag) { if (ex != null) { ExTraceGlobals.ICalTracer.TraceError <string>((long)calendarDocument.GetHashCode(), "CalendarDocument::InternalICalToItems. Found exception: '{0}'.", ex.Message); errorStream.Add(ex.LocalizedString); } else if (errorStream.Count != 0) { ExTraceGlobals.ICalTracer.TraceError <int>((long)calendarDocument.GetHashCode(), "CalendarDocument::InternalICalToItems. {0} error found.", errorStream.Count); errorStream.Add(ServerStrings.InvalidICalElement("VCALENDAR")); } result = Array <CalendarItemBase> .Empty; } else { result = calendarDocument.vCalendar.Promote(getItem); } } return(result); }
internal void Write(CalendarReader reader, CalendarWriter writer) { int num = 0; while (reader.ReadNextComponent()) { while (num-- >= reader.Depth) { writer.EndComponent(); } writer.StartComponent(reader.ComponentName); this.WriteProperties(reader, writer); num = reader.Depth; } while (num-- > 0) { writer.EndComponent(); } }
internal bool Parse(CalendarReader calReader) { this.componentId = calReader.ComponentId; this.componentName = calReader.ComponentName; this.icalProperties = new List <CalendarPropertyBase>(); this.subComponents = new List <CalendarComponentBase>(); bool result; try { result = (this.ParseProperties(calReader) && this.ParseSubComponents(calReader)); } catch (ArgumentException) { this.Context.AddError(ServerStrings.InvalidICalElement(this.componentName)); result = false; } return(result); }
private void WriteProperties(CalendarReader reader, CalendarWriter writer) { CalendarPropertyReader propertyReader = reader.PropertyReader; while (propertyReader.ReadNextProperty()) { PropertyId propertyId = propertyReader.PropertyId; bool flag; if (ComponentId.VEvent == reader.ComponentId && this.dirty.TryGetValue(propertyId, out flag) && flag) { object obj = this[propertyId]; if (obj != null) { this.WriteProperty(writer, propertyId, obj); } } else { writer.WriteProperty(propertyReader); } } }
internal bool Load() { if (!this.mimePart.TryGetContentReadStream(out this.stream)) { return(false); } bool result; try { this.properties = new PureCalendarMessage.CalendarPropertyBag(this); using (CalendarReader calendarReader = new CalendarReader(new SuppressCloseStream(this.stream), this.originalCharset.Name, CalendarComplianceMode.Loose)) { this.properties.Load(calendarReader, this.originalCharset); result = true; } } catch (ByteEncoderException) { result = false; } return(result); }
private CalendarComponentBase NewComponent(CalendarReader calReader) { ComponentId componentId = calReader.ComponentId; if (componentId <= ComponentId.VTimeZone) { if (componentId == ComponentId.VEvent) { return(new VEvent(this.root)); } if (componentId == ComponentId.VTodo) { return(new VTodo(this.root)); } if (componentId == ComponentId.VTimeZone) { return(new VTimeZone(this.root)); } } else { if (componentId == ComponentId.VAlarm) { return(new VAlarm(this.root)); } if (componentId == ComponentId.Standard) { return(new TimeZoneRule(this.root)); } if (componentId == ComponentId.Daylight) { return(new TimeZoneRule(this.root)); } } return(new CalendarComponentBase(this.root)); }
public static RecurrenceValue Parse(CalendarReader reader) { RecurrenceFrequency?freq = null; int? interval = null; List <int> byMinute = null; List <int> byHour = null; List <WeekDayNum> byDay = null; List <int> bySetPos = null; List <MonthOfYear> byMonth = null; do { var param = CalendarPropertyParameter.ReadFrom(reader); var name = param.Name.ToUpperInvariant(); switch (name) { case "FREQ": if (freq.HasValue) { throw new Exception("Multiple FREQ rule parts occured"); } freq = ParseFrequency(param.Value); break; case "INTERVAL": if (interval.HasValue) { throw new Exception("Multiple INTERVAL rule parts occured"); } interval = int.Parse(param.Value); break; case "BYMINUTE": if (byMinute != null) { throw new Exception("Multiple BYMINUTE rule parts occured"); } if (param.Values.Count == 0) { throw new Exception("BYMINUTE values expected"); } byMinute = param.Values.Select(int.Parse).ToList(); break; case "BYHOUR": if (byHour != null) { throw new Exception("Multiple BYHOUR rule parts occured"); } if (param.Values.Count == 0) { throw new Exception("BYHOUR values expected"); } byHour = param.Values.Select(int.Parse).ToList(); break; case "BYDAY": if (byDay != null) { throw new Exception("Multiple BYDAY rule parts occured"); } if (param.Values.Count == 0) { throw new Exception("BYDAY values expected"); } byDay = param.Values.Select(WeekDayNum.Parse).ToList(); break; case "BYMONTH": if (byMonth != null) { throw new Exception("Multiple BYMONTH rule parts occured"); } if (param.Values.Count == 0) { throw new Exception("BYMONTH values expected"); } byMonth = param.Values.Select(item => (MonthOfYear)int.Parse(item)).ToList(); break; case "BYSETPOS": if (bySetPos != null) { throw new Exception("Multiple BYSETPOS rule parts occured"); } if (param.Values.Count == 0) { throw new Exception("BYSETPOS values expected"); } bySetPos = param.Values.Select(int.Parse).ToList(); break; default: throw new Exception("Unknown rule part " + name); } } while (reader.PeekOrRead(';')); if (!freq.HasValue) { throw new Exception("FREQ rule part is required"); } return(new RecurrenceValue { Frequency = freq.Value, Interval = interval, ByMinute = byMinute, ByHour = byHour, ByDay = byDay, ByMonth = byMonth, BySetPos = bySetPos }); }
internal void Load(CalendarReader reader, Charset charset) { while (reader.ReadNextComponent()) { if (ComponentId.VEvent == reader.ComponentId) { CalendarPropertyReader propertyReader = reader.PropertyReader; while (propertyReader.ReadNextProperty()) { PropertyId propertyId = propertyReader.PropertyId; if (this.dirty.ContainsKey(propertyId) && !this.properties.ContainsKey(propertyId)) { if (PropertyId.Description == propertyId || PropertyId.Comment == propertyId) { byte[] array = null; TemporaryDataStorage temporaryDataStorage = new TemporaryDataStorage(); using (Stream stream = temporaryDataStorage.OpenWriteStream(true)) { using (Stream valueReadStream = propertyReader.GetValueReadStream()) { DataStorage.CopyStreamToStream(valueReadStream, stream, long.MaxValue, ref array); } } BodyData bodyData = new BodyData(); bodyData.SetFormat(BodyFormat.Text, InternalBodyFormat.Text, charset); bodyData.SetStorage(temporaryDataStorage, 0L, long.MaxValue); temporaryDataStorage.Release(); this.properties[propertyId] = bodyData; } else if (PropertyId.Attendee == propertyId) { CalendarParameterReader parameterReader = propertyReader.ParameterReader; while (parameterReader.ReadNextParameter()) { if (parameterReader.ParameterId == ParameterId.ParticipationStatus) { this.properties[propertyId] = parameterReader.ReadValue(); } } } else { this.properties[propertyId] = propertyReader.ReadValue(); } } } } if (ComponentId.VCalendar == reader.ComponentId) { CalendarPropertyReader propertyReader2 = reader.PropertyReader; while (propertyReader2.ReadNextProperty()) { PropertyId propertyId2 = propertyReader2.PropertyId; if (PropertyId.Method == propertyId2) { this.properties[propertyId2] = propertyReader2.ReadValue(); } } } } }
public ICalInboundContext(Charset charset, IList <LocalizedString> errorStream, InboundAddressCache addressCache, InboundConversionOptions options, CalendarReader reader, uint?maxBodyLength, bool hasExceptionPromotion) : base(charset, errorStream, addressCache) { Util.ThrowOnNullArgument(options, "options"); if (!options.IgnoreImceaDomain) { Util.ThrowOnNullOrEmptyArgument(options.ImceaEncapsulationDomain, "options.ImceaEncapsulationDomain"); } Util.ThrowOnNullArgument(reader, "reader"); this.Options = options; this.Reader = reader; this.MaxBodyLength = maxBodyLength; this.HasExceptionPromotion = hasExceptionPromotion; this.DeclaredTimeZones = new Dictionary <string, ExTimeZone>(StringComparer.OrdinalIgnoreCase); }