コード例 #1
0
        public static void Run([TimerTrigger("0 */10 * * * *")] TimerInfo myTimer, ILogger log, ExecutionContext context)
        {
            var config = new ConfigurationBuilder()
                         .SetBasePath(context.FunctionAppDirectory)
                         .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                         .AddEnvironmentVariables()
                         .Build();
            var tripItUrl = config["TripItiCalUrl"];

            var result = string.Empty;

            using (var webClient = new System.Net.WebClient())
            {
                result = webClient.DownloadString(tripItUrl);
            }

            vCalendar            vcalendar    = new vCalendar(result);
            List <CalendarEvent> calendarList = new List <CalendarEvent>();

            foreach (var item in vcalendar.vEvents)
            {
                var newEvent = new CalendarEvent
                {
                    Title    = item.ContentLines["SUMMARY"].Value,
                    Location = item.ContentLines["LOCATION"].Value,
                    Start    = item.ContentLines["DTSTART"].Value,
                    End      = item.ContentLines["DTEND"].Value,
                    Body     = item.ContentLines["DESCRIPTION"].Value
                };
                calendarList.Add(newEvent);
            }

            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
        }
コード例 #2
0
        private void saveAsButton_Click(object sender, EventArgs e)
        {
            this.savevCalendarDialog.ShowDialog();

            vCalendar calendar = new vCalendar();
            vEvent    newEvent = new vEvent();

            newEvent.Summary  = this.objectTextbox.Text;
            newEvent.Location = this.placeTextbox.Text;
            newEvent.Start    = DateTime.Now;
            newEvent.End      = DateTime.Now;
            calendar.Events.Add(newEvent);
            calendar.SaveToFile(this.savevCalendarDialog.FileName);
        }
コード例 #3
0
        private void btnReadCard_Click_1(object sender, EventArgs e)
        {
            DialogResult dresult = dlgOpen.ShowDialog();

            System.Threading.Thread.Sleep(0);
            if (dresult != DialogResult.Cancel)
            {
                string FileName = dlgOpen.FileName;
                cal = vCalendar.LoadFromFile(FileName);
                if (cal.Events.Count > 0)
                {
                    txtDescription.Text = cal.Events[0].Description;
                    txtName.Text        = cal.Events[0].Summary;
                    dtStart.Value       = cal.Events[0].Start;
                    dtEnd.Value         = cal.Events[0].End;
                }
            }
        }
コード例 #4
0
        private void LoadvCalendar(string p)
        {
            ClearForm();

            try
            {
                StreamReader streamReader = new StreamReader(p);
                string       content      = streamReader.ReadToEnd();
                streamReader.Close();
                vCalendar calendar = ActiveUp.Net.Groupware.vCalendar.Parser.Parse(content);

                if (calendar.Events.Count > 0)
                {
                    vEvent fEvent = calendar.Events[0];
                    this.objectTextbox.Text = fEvent.Summary;
                    this.placeTextbox.Text  = fEvent.Location;
                    this.startDate.Value    = this.startTime.Value = fEvent.Start;
                    this.endDate.Value      = this.endTime.Value = fEvent.End;
                }
                else
                {
                    MessageBox.Show("No events found in the vCalendar file.");
                }

                this.rawDataTextbox.Text = content;
            }
            catch (Exception ex)
            {
                ClearForm();
                throw ex;
                MessageBox.Show("Error while loading the vCard. Please ensure this is a compatible format.");
            }
            finally
            {
            }
        }
コード例 #5
0
 public frmVcalendar()
 {
     InitializeComponent();
     cal = new vCalendar();
 }
コード例 #6
0
    protected internal override void Work()
    {
        HttpWebRequest today_cal_request = (HttpWebRequest)HttpWebRequest.Create(Main.TODAY_URL);

        today_cal_request.AllowAutoRedirect         = true;
        today_cal_request.AllowWriteStreamBuffering = true;
        today_cal_request.KeepAlive             = false;
        today_cal_request.SendChunked           = false;
        today_cal_request.ContentType           = "text/calendar";
        today_cal_request.Method                = "GET";
        today_cal_request.UseDefaultCredentials = true;
        today_cal_request.Proxy = null;
        HttpWebResponse today_cal_response        = (HttpWebResponse)today_cal_request.GetResponse();
        Stream          today_cal_response_stream = today_cal_response.GetResponseStream();

        byte[]      today_cal_response_bytes = Main.readStream(today_cal_response_stream);
        string      today_cal_response_str   = System.Text.Encoding.UTF8.GetString(today_cal_response_bytes);
        vCalendar   today_cal = new vCalendar(today_cal_response_str);
        CultureInfo en_us     = new CultureInfo("en-US", true);

        char[] comma_delimiter      = { ',' };
        char[] semi_colon_delimiter = { ';' };
        char[] equal_sign_delimiter = { '=' };
        foreach (vEvent cal_event in today_cal.vEvents)
        {
            //START EVENT CODE
            DateTime      cal_event_start            = DateTime.MinValue;
            DateTime      cal_event_end              = DateTime.MinValue;
            string        cal_event_summary          = "";
            string        cal_event_description      = "";
            string        cal_event_location         = "";
            bool          cal_event_is_all_day       = false;
            List <string> cal_event_repeat_days      = new List <string>();
            DateTime      cal_event_repeat_end       = DateTime.MinValue;
            string        cal_event_repeat_frequency = "";
            List <string> cal_event_tags             = new List <string>();
            bool          cal_event_start_long       = true;
            try{
                cal_event_start = DateTime.ParseExact(cal_event.GetContentLine("DTSTART").Value, "yyyyMMddTHHmmss", en_us);
            }catch (Exception e) {
                cal_event_start_long = false;
                cal_event_is_all_day = true;
            }
            if (!cal_event_start_long)
            {
                try{
                    cal_event_start = DateTime.ParseExact(cal_event.GetContentLine("DTSTART").Value, "yyyyMMdd", en_us);
                }catch (Exception e) {
                }
            }

            bool cal_event_end_long = true;
            try{
                cal_event_end = DateTime.ParseExact(cal_event.GetContentLine("DTEND").Value, "yyyyMMddTHHmmss", en_us);
            }catch (Exception e) {
                cal_event_end_long = false;
            }
            if (!cal_event_end_long)
            {
                try{
                    cal_event_end = DateTime.ParseExact(cal_event.GetContentLine("DTEND").Value, "yyyyMMdd", en_us);
                }catch (Exception e) {
                }
            }

            try{
                cal_event_summary = cal_event.GetContentLine("SUMMARY").Value;
            }catch (Exception e) {
            }

            try{
                cal_event_description = cal_event.GetContentLine("DESCRIPTION").Value;
            }catch (Exception e) {
            }

            try{
                cal_event_location = cal_event.GetContentLine("LOCATION").Value;
            }catch (Exception e) {
            }

            try{
                cal_event_tags = new List <string>(cal_event.GetContentLine("X-TAGS").Value.Split(comma_delimiter));
            }catch (Exception e) {
            }

            cal_event_summary = normalize_ical_string(cal_event_summary);

            cal_event_description = normalize_ical_string(cal_event_description);

            cal_event_location = normalize_ical_string(cal_event_location);

            for (int i = 0; i < cal_event_tags.Count; i++)
            {
                cal_event_tags[i] = normalize_ical_string(cal_event_tags[i]);
            }

            cal_event_description = HtmlToText.ConvertHtml(cal_event_description);
            cal_event_description = Regex.Replace(cal_event_description, "<[^>]*>", "");

            today_events.Add(new TodayEvent(cal_event_start, cal_event_end, cal_event_summary, cal_event_description, cal_event_location, cal_event_is_all_day, cal_event_tags));

            //END EVENT CODE
            //START REPEAT CODE

            try{
                List <string> repeat_parts = new List <string>(cal_event.GetContentLine("RRULE").Value.Split(semi_colon_delimiter));
                foreach (string repeat_part in repeat_parts)
                {
                    if (repeat_part.Contains("BYDAY"))
                    {
                        List <string> byday_part = new List <string>(repeat_part.Split(equal_sign_delimiter));
                        cal_event_repeat_days = new List <string>(byday_part[1].Split(comma_delimiter));
                    }
                    else if (repeat_part.Contains("FREQ"))
                    {
                        List <string> repeat_frequency_part = new List <string>(repeat_part.Split(equal_sign_delimiter));
                        cal_event_repeat_frequency = repeat_frequency_part[1];
                    }
                    else if (repeat_part.Contains("UNTIL"))
                    {
                        List <string> repeat_end_part = new List <string>(repeat_part.Split(equal_sign_delimiter));
                        cal_event_repeat_end = DateTime.ParseExact(repeat_end_part[1], "yyyyMMddTHHmmss", en_us);
                    }
                }
            }catch (Exception e) {
            }

            if (cal_event_repeat_end == DateTime.MinValue)
            {
                try{
                    List <string> repeat_parts = new List <string>(cal_event.GetContentLine("RRULE").Value.Split(semi_colon_delimiter));
                    foreach (string repeat_part in repeat_parts)
                    {
                        if (repeat_part.Contains("UNTIL"))
                        {
                            List <string> repeat_end_part = new List <string>(repeat_part.Split(equal_sign_delimiter));
                            cal_event_repeat_end = DateTime.ParseExact(repeat_end_part[1], "yyyyMMdd", en_us);
                        }
                    }
                }
                catch (Exception e) {
                }
            }

            foreach (string repeat_day in cal_event_repeat_days)
            {
                if (cal_event_repeat_frequency == "WEEKLY")
                {
                    for (int i = 0; i < WEEKS_LOADED; i++)
                    {
                        int offset = WEEK_DAYS_SHORT[repeat_day] - WEEK_DAYS[cal_event_start.DayOfWeek.ToString()];
                        if (i == 0)
                        {
                            if (offset <= 0)
                            {
                                continue;
                            }
                        }

                        DateTime adjusted_start = cal_event_start.AddDays(i * 7 + offset);


                        if (DateTime.Compare(adjusted_start, cal_event_repeat_end) > 0)
                        {
                            continue;
                        }

                        DateTime adjusted_end = (cal_event_end != DateTime.MinValue)?cal_event_end.AddDays(i * 7 + offset):DateTime.MinValue;
                        today_events.Add(new TodayEvent(adjusted_start, adjusted_end, cal_event_summary, cal_event_description, cal_event_location, cal_event_is_all_day, cal_event_tags));
                    }
                }
                else if (cal_event_repeat_frequency == "MONTHLY")
                {
                    for (int i = 1; i < MONTHS_LOADED; i++)
                    {
                        DateTime adjusted_start = cal_event_start.AddMonths(i);

                        if (DateTime.Compare(adjusted_start, cal_event_repeat_end) > 0)
                        {
                            continue;
                        }

                        DateTime adjusted_end = (cal_event_end != DateTime.MinValue)?cal_event_end.AddMonths(i):DateTime.MinValue;
                        today_events.Add(new TodayEvent(adjusted_start, adjusted_end, cal_event_summary, cal_event_description, cal_event_location, cal_event_is_all_day, cal_event_tags));
                    }
                }
                else if (cal_event_repeat_frequency == "YEARLY")
                {
                    for (int i = 1; i < YEARS_LOADED; i++)
                    {
                        DateTime adjusted_start = cal_event_start.AddYears(i);

                        if (DateTime.Compare(adjusted_start, cal_event_repeat_end) > 0)
                        {
                            continue;
                        }

                        DateTime adjusted_end = (cal_event_end != DateTime.MinValue)?cal_event_end.AddYears(i):DateTime.MinValue;
                        today_events.Add(new TodayEvent(adjusted_start, adjusted_end, cal_event_summary, cal_event_description, cal_event_location, cal_event_is_all_day, cal_event_tags));
                    }
                }
            }
            //END REPEAT CODE
        }
        today_events.Sort((a, b) => a.CompareTo(b));
    }