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))
}