package main import ( "fmt" "log" "net/http" "os" ) const defaultPort = "8080" const defaultColor = "yellow" func getServerPort() string { port := os.Getenv("PORT") if port != "" { return port } return defaultPort } func getColor() string { color := os.Getenv("COLOR") if color != "" { return color } return defaultColor } type colorHandler struct{} func (h *colorHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) { log.Println("color requested, responding with", getColor()) fmt.Fprint(writer, getColor()) } type pingHandler struct{} func (h *pingHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) { log.Println("ping requested, reponding with HTTP 200") writer.WriteHeader(http.StatusOK) } func main() { log.Println("starting server, listening on port " + getServerPort()) http.Handle("/", http.Handler(&colorHandler{})) http.Handle("/ping", http.Handler(&pingHandler{})) http.ListenAndServe(":"+getServerPort(), nil) }