Created
March 5, 2024 21:39
-
-
Save getvictor/8286e741ea73ce8a3aebde2b3cab8a06 to your computer and use it in GitHub Desktop.
Using domain-wide delegation with Google calendar events
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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