package main import ( "log" "net/http" ) func indexMux(db *Database, templateRoot string) func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { switch r.Method { case "GET": indexGet(w, r, db, templateRoot) default: // TODO } } } func RunServer(config HttpConfig, db *Database) { http.HandleFunc("/", indexMux(db, config.Templates)) http.HandleFunc("/recipe", recipe(db, config.Templates)) http.HandleFunc("/recipe/edit", recipe_edit(db, config.Templates)) http.HandleFunc("/recipe/image", image(config.Storage)) http.HandleFunc("/add_recipes", add_recipes(db, config.Storage, config.Static)) http.HandleFunc("/static/style.css", static("style.css", config.Static)) http.HandleFunc("/favicon.ico", static("favicon.ico", config.Static)) address := config.Host + ":" + config.Port log.Println("Binding to 'http://" + address) log.Fatal(http.ListenAndServe(address, nil)) }