You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1000 B
48 lines
1000 B
// Copyright 2011 Google Inc. All rights reserved. |
|
// Use of this source code is governed by the Apache 2.0 |
|
// license that can be found in the LICENSE file. |
|
|
|
// +build !appengine |
|
|
|
package internal |
|
|
|
import ( |
|
"io" |
|
"log" |
|
"net/http" |
|
"net/url" |
|
"os" |
|
) |
|
|
|
func Main() { |
|
installHealthChecker(http.DefaultServeMux) |
|
|
|
port := "8080" |
|
if s := os.Getenv("PORT"); s != "" { |
|
port = s |
|
} |
|
|
|
host := "" |
|
if IsDevAppServer() { |
|
host = "127.0.0.1" |
|
} |
|
if err := http.ListenAndServe(host+":"+port, http.HandlerFunc(handleHTTP)); err != nil { |
|
log.Fatalf("http.ListenAndServe: %v", err) |
|
} |
|
} |
|
|
|
func installHealthChecker(mux *http.ServeMux) { |
|
// If no health check handler has been installed by this point, add a trivial one. |
|
const healthPath = "/_ah/health" |
|
hreq := &http.Request{ |
|
Method: "GET", |
|
URL: &url.URL{ |
|
Path: healthPath, |
|
}, |
|
} |
|
if _, pat := mux.Handler(hreq); pat != healthPath { |
|
mux.HandleFunc(healthPath, func(w http.ResponseWriter, r *http.Request) { |
|
io.WriteString(w, "ok") |
|
}) |
|
} |
|
}
|
|
|