Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
    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;
        }
    }
Esempio n. 8
0
        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"));
        }
Esempio n. 10
0
        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}”");
        }