-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgcal.go
More file actions
66 lines (54 loc) · 1.54 KB
/
gcal.go
File metadata and controls
66 lines (54 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main
import (
"log"
"time"
"google.golang.org/api/calendar/v3"
)
func gcalCals(srv *calendar.Service, approvedCals []string, tagname string) []*Calendar {
// find all calendars
calendars, err := srv.CalendarList.List().ShowHidden(false).ShowDeleted(false).
MaxResults(250).Do()
if err != nil {
log.Fatalf("Unable to list calendars! %v", err)
}
receivedCals := make(map[string]*Calendar, 0)
for _, c := range calendars.Items {
receivedCals[c.Id] = NewCalendarFromGcal(c, tagname)
}
calResults := make([]*Calendar, 0)
for _, approvedCal := range approvedCals {
c, ok := receivedCals[approvedCal]
if ok {
calResults = append(calResults, c)
}
}
return calResults
}
func gcalEvents(srv *calendar.Service, c *Calendar, timeMin time.Time, timeMax time.Time) []*Event {
event_list := make([]*calendar.Event, 0, 250)
notdone := true
npt := ""
for notdone {
eventsReq := srv.Events.List(c.Id).ShowDeleted(false).
SingleEvents(true).TimeMin(timeMin.Format("2006-01-02T15:04:05Z")).
TimeMax(timeMax.Format("2006-01-02T15:04:05Z")).MaxResults(250)
if npt != "" {
eventsReq = eventsReq.PageToken(npt)
npt = ""
}
events, err := eventsReq.Do()
if err != nil {
log.Fatalf("Unable to retrieve next ten of the user's events. %v", err)
}
notdone = events.NextPageToken != ""
if notdone {
npt = events.NextPageToken
}
event_list = append(event_list, events.Items...)
}
events := make([]*Event, 0, 250)
for _, v := range event_list {
events = append(events, NewEventFromGcal(v))
}
return events
}