forked from mystiq/dex
73 lines
2 KiB
Go
73 lines
2 KiB
Go
// 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)
|
|
}
|
|
}
|