package main import ( "fmt" "os" "github.com/kevin/go-jdenticon/jdenticon" ) func main() { // Test the new public API with different input types // 1. Generate SVG from email address fmt.Println("=== Generating SVG avatar for email ===") svg, err := jdenticon.ToSVG("user@example.com", 128) if err != nil { panic(err) } fmt.Printf("SVG length: %d characters\n", len(svg)) fmt.Printf("SVG preview: %s...\n", svg[:100]) // Save SVG to file err = os.WriteFile("avatar_email.svg", []byte(svg), 0644) if err != nil { panic(err) } fmt.Println("✅ Saved to avatar_email.svg") // 2. Generate PNG from username fmt.Println("\n=== Generating PNG avatar for username ===") png, err := jdenticon.ToPNG("johndoe", 64) if err != nil { panic(err) } fmt.Printf("PNG size: %d bytes\n", len(png)) // Save PNG to file err = os.WriteFile("avatar_username.png", png, 0644) if err != nil { panic(err) } fmt.Println("✅ Saved to avatar_username.png") // 3. Generate with custom configuration fmt.Println("\n=== Generating with custom config ===") config, err := jdenticon.Configure( jdenticon.WithHueRestrictions([]float64{120, 240}), // Blue/green hues only jdenticon.WithColorSaturation(0.8), jdenticon.WithBackgroundColor("#ffffff"), // White background jdenticon.WithPadding(0.1), ) if err != nil { panic(err) } customSvg, err := jdenticon.ToSVG("custom-avatar", 96, config) if err != nil { panic(err) } err = os.WriteFile("avatar_custom.svg", []byte(customSvg), 0644) if err != nil { panic(err) } fmt.Println("✅ Saved custom styled avatar to avatar_custom.svg") // 4. Test different input types fmt.Println("\n=== Testing different input types ===") inputs := []interface{}{ "hello world", 42, 3.14159, true, []byte("binary data"), } for i, input := range inputs { svg, err := jdenticon.ToSVG(input, 48) if err != nil { panic(err) } filename := fmt.Sprintf("avatar_type_%d.svg", i) err = os.WriteFile(filename, []byte(svg), 0644) if err != nil { panic(err) } fmt.Printf("✅ Generated avatar for %T: %v -> %s\n", input, input, filename) } // 5. Show hash generation fmt.Println("\n=== Hash generation ===") testValues := []interface{}{"test", 123, []byte("data")} for _, val := range testValues { hash := jdenticon.ToHash(val) fmt.Printf("Hash of %v (%T): %s\n", val, val, hash) } // 6. Generate avatars for a group of users fmt.Println("\n=== Group avatars ===") users := []string{ "alice@company.com", "bob@company.com", "charlie@company.com", "diana@company.com", } for _, user := range users { png, err := jdenticon.ToPNG(user, 80) if err != nil { panic(err) } filename := fmt.Sprintf("user_%s.png", user[:5]) // Use first 5 chars as filename err = os.WriteFile(filename, png, 0644) if err != nil { panic(err) } fmt.Printf("✅ Generated avatar for %s -> %s\n", user, filename) } fmt.Println("\n🎉 All avatars generated successfully!") fmt.Println("Check the generated SVG and PNG files in the current directory.") }