public static IList ListEvents(GoogleAccountRequest info)
        {
            Authenticate(info);
            CalendarService service = InitService();

            // Define parameters of request.
            EventsResource.ListRequest request = service.Events.List("primary");
            //request.TimeMin = DateTime.Now;
            request.ShowDeleted  = false;
            request.SingleEvents = true;
            request.MaxResults   = 10;
            request.OrderBy      = EventsResource.ListRequest.OrderByEnum.StartTime;

            // List events.
            var lst = new List <Event>();

            do
            {
                Events events = request.Execute();

                if (events.Items != null && events.Items.Count > 0)
                {
                    lst.AddRange(events.Items.ToList());
                }
                request.PageToken = events.NextPageToken;
            }while (!string.IsNullOrEmpty(request.PageToken));

            return(lst);
        }
        public static void InsertGoogleAPIEvent(GoogleAccountRequest googleRequest)
        {
            try
            {
                Authenticate(googleRequest);
                CalendarService service = InitService();

                MyCalendarEvent myEvent  = googleRequest.CalendarEvent;
                Event           newEvent = new Event()
                {
                    Summary     = myEvent.SummaryText,
                    Location    = myEvent.LocationText,
                    Description = myEvent.Description,
                    Start       = new EventDateTime()
                    {
                        DateTime = myEvent.BeginDate,
                        TimeZone = IsraelDefaultTimeZone,
                    },
                    End = new EventDateTime()
                    {
                        DateTime = myEvent.EndDate,
                        TimeZone = IsraelDefaultTimeZone,
                    },


                    Reminders = new Event.RemindersData()
                    {
                        UseDefault = false,
                        Overrides  = new EventReminder[]
                        {
                            new EventReminder()
                            {
                                Method = "popup", Minutes = 24 * 60
                            },
                            new EventReminder()
                            {
                                Method = "popup", Minutes = 15
                            },
                            new EventReminder()
                            {
                                Method = "popup", Minutes = 3 * 60
                            },
                        }
                    }
                };
                if (!string.IsNullOrEmpty(myEvent.Frequency) && myEvent.FrequencyCount > 0)
                {
                    newEvent.Recurrence = new String[] { $"RRULE:FREQ={myEvent.Frequency};COUNT={myEvent.FrequencyCount}" }
                }
                ;

                String calendarId = "primary";
                EventsResource.InsertRequest request = service.Events.Insert(newEvent, calendarId);
                Event createdEvent = request.Execute();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 private static void Authenticate(GoogleAccountRequest info)
 {
     using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(info.CredentialsJsonString)))
     {
         credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
             GoogleClientSecrets.Load(stream).Secrets,
             Scopes,
             "user",
             CancellationToken.None, new GoogleDatabaseDataStore(info.GoogleDataStore)).Result;
     }
 }