Chcę, aby aplikacja DesktopInfo pokazywała wydarzenia z kalendarza Google-a na moim pulpicie. Dzięki temu będę miał listę pod ręką. Jak przygotować odpowiedni kawałek kodu? Wykorzystamy tutaj oficjalne, przygotowane przez firmę Google biblioteki dla .net-a (do pobrania tutaj). To co będzie potrzebne do projektu to dodanie referencji:
Google.GData.AccessControl
Google.GData.Calendar
Google.GData.Client
Google.GData.Extensions
Tworzymy CalendarService – obiekt odpowiedzialny za połączenie (jako parametr konstruktora podajemy nazwę aplikacji – zupełna dowolność).
CalendarService calService = new CalendarService(„Calendar Reader”);
To co należy ustawić teraz to użytkownik, hasło i adres do usługi.
calService.Credentials = new GDataCredentials(„moje.konto@gmail.com”, „moje.tajne.haslo”);
Uri postUri = new Uri(„http://www.google.com/calendar/feeds/default/private/full”);
oraz stworzyć zapytanie, które będzie wysłane do Google-a
EventQuery query = new EventQuery();
query.Uri = calendarUri;
query.StartTime = DateTime.Now.AddMonths(-1);
query.EndTime = DateTime.Now.AddMonths(12);
To co tutaj jest ciekawe, to możliwość ustawienia zakresu dat, jakie nas interesują. Im szerszy zakres, tym potencjalnie więcej wyników będzie trzeba przesłać przez sieć. Warto o tym pamiętać, bo aplikacja może być uruchamiana na powolnych połączeniach. Po ustawieniu parametrów pozostaje pobrać wyniki
EventFeed calFeed = calService.Query(query) as EventFeed;
I coś z nimi zrobić 🙂
foreach (EventEntry gcalEntry in calFeed.Entries) {
Console.WriteLine(gcalEntry.Times[0].StartTime);
Console.WriteLine(gcalEntry.Times[0].EndTime);
Console.WriteLine(gcalEntry.SelfUri.Content);
}
Jak wydać, przygotowana przez firmę Google udostępnia dane w sposób łatwy i przyjemny. Podobne API dostępne jest do innych usług jednak to czego mi brakuje to brak api do dostępu do listy zadań. Lista zadań dostępna jest w kalendarzu i poczcie Google-owej od dawna. Usługa ta powstała w ramach 20% wolnego czasu programistów i szybko okazało się, że jej lekkość i nieprzeładowana funkcjonalność zaskarbiła sobie wielu fanów – szkoda że nie doczekała się do dnia dzisiejszego swojego API.