| // Copyright 2014 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package main |
| |
| import ( |
| "fmt" |
| "log" |
| "net/http" |
| "os" |
| |
| calendar "google.golang.org/api/calendar/v3" |
| ) |
| |
| func init() { |
| registerDemo("calendar", calendar.CalendarScope, calendarMain) |
| } |
| |
| // calendarMain is an example that demonstrates calling the Calendar API. |
| // Its purpose is to test out the ability to get maps of struct objects. |
| // |
| // Example usage: |
| // go build -o go-api-demo *.go |
| // go-api-demo -clientid="my-clientid" -secret="my-secret" calendar |
| func calendarMain(client *http.Client, argv []string) { |
| if len(argv) != 0 { |
| fmt.Fprintln(os.Stderr, "Usage: calendar") |
| return |
| } |
| |
| svc, err := calendar.New(client) |
| if err != nil { |
| log.Fatalf("Unable to create Calendar service: %v", err) |
| } |
| |
| c, err := svc.Colors.Get().Do() |
| if err != nil { |
| log.Fatalf("Unable to retrieve calendar colors: %v", err) |
| } |
| |
| log.Printf("Kind of colors: %v", c.Kind) |
| log.Printf("Colors last updated: %v", c.Updated) |
| |
| for k, v := range c.Calendar { |
| log.Printf("Calendar[%v]: Background=%v, Foreground=%v", k, v.Background, v.Foreground) |
| } |
| |
| for k, v := range c.Event { |
| log.Printf("Event[%v]: Background=%v, Foreground=%v", k, v.Background, v.Foreground) |
| } |
| |
| listRes, err := svc.CalendarList.List().Fields("items/id").Do() |
| if err != nil { |
| log.Fatalf("Unable to retrieve list of calendars: %v", err) |
| } |
| for _, v := range listRes.Items { |
| log.Printf("Calendar ID: %v\n", v.Id) |
| } |
| |
| if len(listRes.Items) > 0 { |
| id := listRes.Items[0].Id |
| res, err := svc.Events.List(id).Fields("items(updated,summary)", "summary", "nextPageToken").Do() |
| if err != nil { |
| log.Fatalf("Unable to retrieve calendar events list: %v", err) |
| } |
| for _, v := range res.Items { |
| log.Printf("Calendar ID %q event: %v: %q\n", id, v.Updated, v.Summary) |
| } |
| log.Printf("Calendar ID %q Summary: %v\n", id, res.Summary) |
| log.Printf("Calendar ID %q next page token: %v\n", id, res.NextPageToken) |
| } |
| } |