package main import ( "fmt" "net/http" ) var store = NewURLStore("store.gob") func main() { http.HandleFunc("/", Redirect) http.HandleFunc("/add", Add) http.ListenAndServe(":8080", nil) } func Redirect(w http.ResponseWriter, r *http.Request) { key := r.URL.Path[1:] url := store.Get(key) if url == "" { http.NotFound(w, r) return } http.Redirect(w, r, url, http.StatusFound) } func Add(w http.ResponseWriter, r *http.Request) { url := r.FormValue("url") if url == "" { fmt.Fprint(w, AddForm) return } key := store.Put(url) fmt.Fprintf(w, "http://localhost:8080/%s", key) } const AddForm = `
`