in server-go/main.go [41:75]
func main() {
ctx := context.Background()
// Access your API key as an environment variable to create a client.
apiKey := os.Getenv("GOOGLE_API_KEY")
client, err := genai.NewClient(ctx, option.WithAPIKey(apiKey))
if err != nil {
log.Fatalf("could not create Gemini client %v", err)
}
defer client.Close()
model := client.GenerativeModel(modelName)
server := &genaiServer{
ctx: ctx,
model: model,
}
mux := http.NewServeMux()
mux.HandleFunc("POST /chat", server.chatHandler)
mux.HandleFunc("POST /stream", server.streamingChatHandler)
// Add CORS middleware handler.
c := cors.New(cors.Options{
AllowedOrigins: []string{"*"},
AllowedHeaders: []string{"Access-Control-Allow-Origin", "Content-Type"},
})
handler := c.Handler(mux)
// Access preferred port the server must listen to as an environment variable if provided.
port := cmp.Or(os.Getenv("PORT"), defaultPort)
addr := "localhost:" + port
log.Println("Listening on ", addr)
log.Fatal(http.ListenAndServe(addr, handler))
}