package main import ( "flag" "fmt" "log" "net/http" "os" "strconv" "time" "git.rootprojects.org/root/go-again/data/jsondb" ) func main() { portEnv := os.Getenv("PORT") portInt := flag.Int("port", 0, "port on which to serve http") addr := flag.String("addr", "", "address on which to serve http") flag.Parse() if "" != portEnv { if 0 != *portInt { log.Fatal("You may set PORT or --port, but not both.") return } n, err := strconv.Atoi(portEnv) if nil != err { log.Fatalf("Could not parse PORT=%q.", n) return } *portInt = n } if *portInt < 1024 || *portInt > 65535 { log.Fatalf("port should be between 1024 and 65535, not %d.", *portInt) return } portEnv = strconv.Itoa(*portInt) server := &http.Server{ Addr: fmt.Sprintf("%s:%s", *addr, portEnv), Handler: http.HandlerFunc(handleFunc), ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, MaxHeaderBytes: 1 << 20, } fmt.Println("Listening on", server.Addr) log.Fatal(server.ListenAndServe()) } func handleFunc(w http.ResponseWriter, r *http.Request) { jsondb.List() w.Write([]byte("Hello, World!")) }