public static MemoryStream CreerEvenementCalendrier(string objet, string description, string adresse, DateTime dateDebut, DateTime dateFin, double lattitude = 0, double longitude = 0) { GeographicLocation coordonneesGPS = null; if (lattitude != 0 && longitude != 0) { coordonneesGPS = new GeographicLocation(45.756386, 4.8379093); } Calendar calendar = new Calendar(); CalendarEvent myEvent = new CalendarEvent { Start = new CalDateTime(dateDebut), End = new CalDateTime(dateFin), Summary = objet, Description = description, Location = adresse, GeographicLocation = coordonneesGPS, }; calendar.Events.Add(myEvent); MemoryStream stream = new MemoryStream(); CalendarSerializer serializer = new CalendarSerializer(); serializer.Serialize(calendar, stream, Encoding.ASCII); return(stream); }
public void Bug3211934() { var calendar = new Calendar(); var serializer = new CalendarSerializer(); var filename = "Bug3211934.ics"; if (File.Exists(filename)) { // Reset the file attributes and delete File.SetAttributes(filename, FileAttributes.Normal); File.Delete(filename); } serializer.Serialize(calendar, filename); // Set the file as read-only File.SetAttributes(filename, FileAttributes.ReadOnly); // Load the calendar from file, and ensure the read-only attribute doesn't affect the load var calendars = Calendar.LoadFromFile(filename, Encoding.UTF8, serializer); Assert.IsNotNull(calendars); // Reset the file attributes and delete File.SetAttributes(filename, FileAttributes.Normal); File.Delete(filename); }
protected override bool Generate(System.IO.Stream str, [CanBeNull] IEnumerable <ProcessedEpisode> episodes) { if (episodes is null) { return(false); } try { Calendar calendar = new Calendar { ProductId = "Upcoming Shows Exported by TV Rename http://www.tvrename.com" }; foreach (ProcessedEpisode ei in episodes) { CalendarEvent ev = CreateEvent(ei); if (!(ev is null)) { calendar.Events.Add(ev); } } CalendarSerializer serializer = new CalendarSerializer(); serializer.Serialize(calendar, str, Encoding.ASCII); return(true); } // try catch (Exception e) { LOGGER.Error(e); return(false); } }
public static MemoryStream ExportToIcs(List <VisitsRow> visits, AccessType accessType) { var model = new Ical.Net.Calendar(); var connection = SqlConnections.NewFor <VisitsRow>(); foreach (var visit in visits) { var patient = connection.ById <PatientsRow>(visit.PatientId); var cabinet = connection.ById <CabinetsRow>(visit.CabinetId); var visitType = connection.ById <VisitTypesRow>(visit.VisitTypeId); var eventCalendar = new Ical.Net.CalendarEvent(); eventCalendar.Uid = $"{cabinet.CabinetId}_{visit.VisitId}@admin.myclario.com"; eventCalendar.Location = cabinet.Name; eventCalendar.DtStart = new CalDateTime((visit.StartDate ?? DateTime.Now)); eventCalendar.DtEnd = new CalDateTime((visit.EndDate ?? DateTime.Now)); eventCalendar.IsAllDay = false; if (accessType == AccessType.Private) { eventCalendar.Summary = $"{patient.Name} - {visitType.Name}"; eventCalendar.Description = visit.Description; if (!patient.Email.IsEmptyOrNull()) { var attendee = new Attendee($"MAILTO:{patient.Email}"); attendee.CommonName = patient.Name; attendee.Rsvp = true; attendee.Role = "REQ-PARTICIPANT"; attendee.ParticipationStatus = "NEEDS-ACTION"; attendee.Type = "INDIVIDUAL"; eventCalendar.Attendees = new List <Attendee> { attendee }; } } else { eventCalendar.Summary = $"{visitType.Name}"; eventCalendar.Description = " "; } model.Events.Add(eventCalendar); } var serializer = new CalendarSerializer(model); MemoryStream ms = new MemoryStream(); serializer.Serialize(model, ms, Encoding.UTF8); var ics = serializer.SerializeToString(model); var bytes = System.Text.Encoding.UTF8.GetBytes(ics); ms.Write(bytes, 0, bytes.Length); ms.Seek(0, SeekOrigin.Begin); return(ms); }
public void Bug3177278() { var calendar = new Calendar(); var serializer = new CalendarSerializer(); var ms = new MemoryStream(); serializer.Serialize(calendar, ms, Encoding.UTF8); Assert.IsTrue(ms.CanWrite); }
protected override bool Generate(System.IO.Stream str, [CanBeNull] List <ProcessedEpisode> elist) { if (elist is null) { return(false); } try { Calendar calendar = new Calendar { ProductId = "Upcoming Shows Exported by TV Rename http://www.tvrename.com" }; foreach (ProcessedEpisode ei in elist) { string niceName = TVSettings.Instance.NamingStyle.NameFor(ei); DateTime?stTime = ei.GetAirDateDt(true); if (!stTime.HasValue) { continue; } DateTime startTime = stTime.Value; string s = ei.Show.TheSeries()?.Runtime; DateTime endTime = stTime.Value.AddMinutes(s == null?0:int.Parse(s)); CalendarEvent e = new CalendarEvent { Start = new CalDateTime(startTime), End = new CalDateTime(endTime), Description = ei.Overview, Comments = new List <string> { ei.Overview }, Summary = niceName, Location = ei.TheSeries.Network, Url = new Uri(TheTVDB.Instance.WebsiteUrl(ei.TheSeries.TvdbCode, ei.SeasonId, false)), Uid = ei.EpisodeId.ToString() }; calendar.Events.Add(e); } CalendarSerializer serializer = new CalendarSerializer(); serializer.Serialize(calendar, str, Encoding.ASCII); return(true); } // try catch (Exception e) { LOGGER.Error(e); return(false); } }
public void Save() { logger.Info("Saving Calendars to: {0}", Path); lock (_fileLock) { File.Copy(Path, PathTools.ChangeExtension(Path, ".ics-backup"), true); var serializer = new CalendarSerializer(new SerializationContext()); using (var file = ZipFile.Open(Path, ZipArchiveMode.Create)) { foreach (var c in _calendars) { var f = file.CreateEntry(c.Key.ToLower()); using (var s = f.Open()) { serializer.Serialize(c.Value, s, CalendarEncoding); } } } _lastSaved = DateTime.Now; Saved = true; } }
public Task <byte[]> GeneratorAsync(CalendarEventCollection events) { var calendar = new Calendar(); foreach (var levent in events) { CalDateTime calStart = levent.IsWholeDay ? new CalDateTime(levent.Begin.Year, levent.Begin.Month, levent.Begin.Day) : new CalDateTime(levent.Begin.ToUniversalTime()); CalDateTime calEnd = !levent.End.HasValue ? calStart : levent.IsWholeDay ? new CalDateTime(levent.End.Value.Year, levent.End.Value.Month, levent.End.Value.Day) : new CalDateTime(levent.End.Value.ToUniversalTime()); if (levent.IsWholeDay) { calStart.HasDate = true; calStart.HasTime = false; calEnd.HasDate = true; calEnd.HasTime = false; //https://github.com/toosean/ChinaPublicCalendar/issues/9 //非常感谢 JarmoHu 指正 calEnd = (CalDateTime)calEnd.AddDays(1); } using (var sha1 = SHA1.Create()) { byte[] titleBytes = UTF8Encoding.UTF8.GetBytes(levent.Title); byte[] hashMessage = sha1.ComputeHash(titleBytes); string uid = BitConverter.ToString(hashMessage).Replace("-", "").ToLower(); var revent = new Ical.Net.CalendarComponents.CalendarEvent() { Uid = uid, DtStamp = calStart, Start = calStart, End = calEnd, Summary = levent.Title, Description = levent.Description, IsAllDay = levent.IsWholeDay }; calendar.Events.Add(revent); } } //for Google Calendar if (events.Name != null) { calendar.AddProperty("X-WR-CALNAME", events.Name); } calendar.Method = "PUBLISH"; using (var memoryStream = new MemoryStream()) { var serializer = new CalendarSerializer(); serializer.Serialize(calendar, memoryStream, new UTF8Encoding(false)); return(Task.FromResult(memoryStream.ToArray())); } }
public async Task <IActionResult> Create(CalendarSogo.Models.Event ev) { try { CalendarEvent e = new CalendarEvent() { Description = ev.Description, Summary = ev.Summary, Start = new CalDateTime(ev.Start), End = new CalDateTime(ev.End), Location = "301 cabinet", Comments = new List <string>() { "comment1" }, Contacts = new List <string>() { "Contacts" }, GeographicLocation = new GeographicLocation(), Organizer = new Organizer() { CommonName = "Organizer name", Value = new Uri("mailto:[email protected]") }, Attendees = new List <Attendee>() { new Attendee(new Uri("mailto:[email protected]")) { CommonName = "test1 name", Role = ParticipationRole.RequiredParticipant }, new Attendee(new Uri("mailto:[email protected]")) { CommonName = "test2 name", Role = ParticipationRole.RequiredParticipant }, } }; string readAll; //HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://mx.sailau09.kz/SOGo/dav/[email protected]/Calendar/personal/" + e.Uid + ".ics"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://mx.sailau09.kz/SOGo/dav/[email protected]/Calendar/dddd" + e.Uid + ".ics"); request.Credentials = new NetworkCredential("*****@*****.**", "!QAZ3edc"); request.ContentType = "text/calendar"; request.Headers.Add("If-None-Match", "*"); request.Method = "PUT"; request.ServerCertificateValidationCallback = delegate { return(true); };// при публикации на боевой сервер убрать Ical.Net.Calendar calendar = new Ical.Net.Calendar(); calendar.Events.Add(e); CalendarSerializer calendarSerializer = new CalendarSerializer(); // возьмем поток и запишем туда наше мероприятие using (var stream = request.GetRequestStream()) { calendarSerializer.Serialize(calendar, stream, Encoding.UTF8); } HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync(); using (Stream stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream)) { var statusCode = response.StatusCode; readAll = reader.ReadToEnd(); } } } catch (Exception ex) { return(BadRequest(new { message = ex.Message })); } return(RedirectToAction("Index")); }
private static void Main(string[] args) { Console.WriteLine("请前往http://jw2005.scuteo.com/进行登录(最好启用隐私模式),将登录后的网址粘贴于本程序中"); Console.WriteLine("请注意,上面的网址不是一般登录教务系统时使用的网址"); Console.WriteLine("警告:在平时使用教务系统时,请勿将此网址。登录后的网址包含有您的个人敏感信息,请勿泄漏"); var address = Console.ReadLine(); Regex regex = new Regex(@"http://xsweb\.scuteo\.com/\((.*?)\)/xs_main\.aspx\?xh=(\d{12})", RegexOptions.IgnoreCase); var match = regex.Match(address); if (!match.Success) { Console.WriteLine("网址未能识别"); return; } var token = match.Groups[1].Value; var studnetNum = match.Groups[2].Value; var queryAddress = $"http://xsweb.scuteo.com/({token})/xskbcx.aspx?xh={studnetNum}&gnmkdm=N121603"; var config = Configuration.Default.WithDefaultLoader(); var context = BrowsingContext.New(config); var main = context.OpenAsync(address).Result; var lectureTable = context.OpenAsync(queryAddress).Result; var table = lectureTable.GetElementById("Table1") as IHtmlTableElement; var lectureTexts = table.Rows .SelectMany(r => r.Cells.Where(c => c.TextContent.Length > 5)) .Select(c => c.InnerHtml.Replace("<br>", "\n")); var lectures = new List <Lecture>(); foreach (var lt in lectureTexts) { lectures.Add(new Lecture(lt)); } var calendar = new Calendar(); DateTime SchoolBeginTime = new DateTime(2017, 9, 3); foreach (var l in lectures) { var date = SchoolBeginTime + TimeSpan.FromDays(7 * (l.StartWeek - 1)) + TimeSpan.FromDays((int)l.DayOfWeek); var e = new Event { DtStart = new CalDateTime(date + l.StartTime), DtEnd = new CalDateTime(date + l.EndTime), Summary = l.Name, Location = l.Address, RecurrenceRules = new List <IRecurrencePattern> { new RecurrencePattern(FrequencyType.Weekly, l.WeekInterval) { Count = l.RepeatTime } }, Description = $"老师:{l.Teacher}", }; calendar.Events.Add(e); } var serializer = new CalendarSerializer(calendar); const string fileName = "课表.ics"; using (var stream = new FileStream(fileName, FileMode.Create)) { serializer.Serialize(calendar, stream, Encoding.UTF8); } Console.WriteLine($"处理完成,发现课程{lectures.Count}门,已导出到“{fileName}”"); }