Skip to content

Instantly share code, notes, and snippets.

@getvictor
Created March 5, 2024 21:39
Show Gist options
  • Save getvictor/8286e741ea73ce8a3aebde2b3cab8a06 to your computer and use it in GitHub Desktop.
Save getvictor/8286e741ea73ce8a3aebde2b3cab8a06 to your computer and use it in GitHub Desktop.
Using domain-wide delegation with Google calendar events
package main
import (
"context"
"golang.org/x/oauth2/google"
"golang.org/x/oauth2/jwt"
"google.golang.org/api/calendar/v3"
"google.golang.org/api/option"
"log"
"time"
)
func main() {
ctx := context.Background()
conf := &jwt.Config{
Email: "redacted@redacted.iam.gserviceaccount.com",
Scopes: []string{"https://www.googleapis.com/auth/calendar.events"},
PrivateKey: []byte("redacted")
TokenURL: google.JWTTokenURL,
Subject: "real.user@yourorg.com",
}
client := conf.Client(ctx)
// Create a new calendar service
service, err := calendar.NewService(ctx, option.WithHTTPClient(client))
if err != nil {
log.Fatalf("Unable to create Calendar service: %v", err)
}
//list, err := service.Events.List("primary").Do()
list, err := service.Events.List("primary").EventTypes("default").MaxResults(10).OrderBy("startTime").SingleEvents(true).TimeMin(time.Now().Format(time.RFC3339)).Do()
if err != nil {
log.Fatalf("Unable to retrieve list of events: %v", err)
}
for _, item := range list.Items {
log.Printf("Event: %s", item.Summary)
}
// Create a new event
event := &calendar.Event{
Start: &calendar.EventDateTime{
DateTime: "2024-03-05T11:00:00-06:00",
//TimeZone: "America/Chicago",
},
End: &calendar.EventDateTime{
DateTime: "2024-03-05T11:30:00-06:00",
//TimeZone: "America/Chicago",
},
Summary: "Test Event",
//Description: "This is a test event",
//Location: "Austin, TX",
}
event, err = service.Events.Insert("primary", event).Do()
if err != nil {
log.Fatalf("Unable to create event: %v", err)
}
event, err = service.Events.Get("primary", event.Id).Do()
if err != nil {
log.Fatalf("Unable to retrieve event: %v", err)
}
log.Printf("Event: %+v\n", event)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment