package main import ( "context" "encoding/json" "fmt" "net/http" "astraltech.xyz/calendar/v2/auth" "astraltech.xyz/calendar/v2/caldav" "astraltech.xyz/calendar/v2/webserver" ) type UserInfo struct { Email string `json:"email"` } func handleUser(w http.ResponseWriter, r *http.Request) { // Load the stored token token, err := auth.TestTokenStore.Load() if err != nil { http.Error(w, "Not authenticated", http.StatusUnauthorized) return } // Create an HTTP client that attaches the access token client := auth.OAuthConfigs[0].Client(context.Background(), token) // Fetch user information from GitHub API resp, err := client.Get("https://account.astraltech.xyz/application/o/userinfo/") if err != nil { http.Error(w, "Failed to fetch user: "+err.Error(), http.StatusInternalServerError) return } defer resp.Body.Close() var usersInfo UserInfo if err := json.NewDecoder(resp.Body).Decode(&usersInfo); err != nil { http.Error(w, "Failed to decode response", http.StatusInternalServerError) return } fmt.Printf("The users email is %s\n", usersInfo.Email) } func main() { auth.CreateTestOAuth() read_config() caldav.InitDavClient(serverConfig.URL) webserver.ServeLoginPage("/login", webserver.CustomizableLoginData{ ServiceName: "Astral Calendar", AuthRequestFunction: auth.HandleAuthRequest, }) webserver.ServeWebpage("/callback", auth.OAuthCallback) webserver.ServeWebpage("/user", handleUser) webserver.EnableLogoRoute() webserver.EnableStaticRoute() webserver.ServeWebserver() }