func main()

in hello.go [99:191]


func main() {
	tmpl := template.Must(template.ParseFiles("./index.html"))

	// Get project ID from metadata server
	project := ""
	client := &http.Client{}
	req, _ := http.NewRequest("GET", "http://metadata.google.internal/computeMetadata/v1/project/project-id", nil)
	req.Header.Set("Metadata-Flavor", "Google")
	res, err := client.Do(req)
	if err == nil {
		defer res.Body.Close()
		if res.StatusCode == 200 {
			responseBody, err := io.ReadAll(res.Body)
			if err != nil {
				log.Fatal(err)
			}
			project = string(responseBody)
		}
	}

	// Get region from metadata server
	region := ""
	req, _ = http.NewRequest("GET", "http://metadata.google.internal/computeMetadata/v1/instance/region", nil)
	req.Header.Set("Metadata-Flavor", "Google")
	res, err = client.Do(req)
	if err == nil {
		defer res.Body.Close()
		if res.StatusCode == 200 {
			responseBody, err := io.ReadAll(res.Body)
			if err != nil {
				log.Fatal(err)
			}
			region = regexp.MustCompile(`projects/[^/]*/regions/`).ReplaceAllString(string(responseBody), "")
		}
	}
	if region == "" {
		// Fallback: get "zone" from metadata server (running on VM e.g. Cloud Run for Anthos)
		req, _ = http.NewRequest("GET", "http://metadata.google.internal/computeMetadata/v1/instance/zone", nil)
		req.Header.Set("Metadata-Flavor", "Google")
		res, err = client.Do(req)
		if err == nil {
			defer res.Body.Close()
			if res.StatusCode == 200 {
				responseBody, err := io.ReadAll(res.Body)
				if err != nil {
					log.Fatal(err)
				}
				region = regexp.MustCompile(`projects/[^/]*/zones/`).ReplaceAllString(string(responseBody), "")
			}
		}
	}

	service := os.Getenv("K_SERVICE")
	revision := os.Getenv("K_REVISION")

	color := os.Getenv("COLOR")

	data := Data{
		Service:  service,
		Revision: revision,
		Project:  project,
		Region:   region,
		Color:    color,
	}

	eventsHandler := getEventsHandler()
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		if r.Method == http.MethodPost && r.Header.Get("ce-type") != "" {
			// Handle cloud events.
			eventsHandler.ServeHTTP(w, r)
			return
		}
		// Default handler (hello page).
		data.AuthenticatedEmail = r.Header.Get("X-Goog-Authenticated-User-Email") // set when behind IAP
		tmpl.Execute(w, data)
	})

	http.HandleFunc("/robots.txt", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "User-agent: *\nDisallow: /\n")
	})

	fs := http.FileServer(http.Dir("./assets"))
	http.Handle("/assets/", http.StripPrefix("/assets/", fs))

	port := os.Getenv("PORT")
	if port == "" {
		port = "8080"
	}
	address := fmt.Sprintf(":%s", port)

	log.Printf("Hello from Cloud Run! The container started successfully and is listening for HTTP requests on port %s", port)
	log.Fatal(http.ListenAndServe(address, nil))
}