func main()

in walkthroughs/howto-metrics-extension-ecs/src/djapp/djapp.go [63:107]


func main() {
	port := envOr("PORT", "8080")
	backends := envOr("BACKENDS", "[]")
	responses := envOr("RESPONSES", "[]")

	var parsedBackends []string
	var parsedResponses []string

	if err := json.Unmarshal([]byte(backends), &parsedBackends); err != nil {
		log.Fatalf("unable to parse BACKENDS: %s", err)
	}
	if err := json.Unmarshal([]byte(responses), &parsedResponses); err != nil {
		log.Fatalf("unable to parse RESPONSES: %s", err)
	}

	if len(parsedBackends) == 0 && len(parsedResponses) == 0 {
		log.Fatalln("either BACKENDS or RESPONSES must be specified")
	}
	if len(parsedBackends) > 0 && len(parsedResponses) > 0 {
		log.Fatalln("only BACKENDS or RESPONSES can be specified")
	}

	random := rand.New(rand.NewSource(time.Now().UnixNano()))
	var h http.Handler
	if len(parsedBackends) > 0 {
		log.Printf("backends: %+q", parsedBackends)
		h = &backendHandler{
			backends: parsedBackends,
			random:   random,
		}
	} else {
		log.Printf("responses: %+q", parsedResponses)
		h = &responseHandler{
			responses: parsedResponses,
			random:    random,
		}
	}

	log.Printf("starting server, listening on port %s", port)
	http.Handle("/", h)
	http.HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) {
		w.WriteHeader(http.StatusOK)
	})
	log.Fatal(http.ListenAndServe(":"+port, nil))
}