// RedirectHandler redirects users to their desired location. // Not accessed via Ajax, just by end users func RedirectHandler(db database.ShortenBackend, domain string) func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { slug := mux.Vars(r)["slug"] long, err := db.GetLongURL(slug) var errNotFound database.ErrNotFound if err == errNotFound { w.WriteHeader(404) fmt.Fprintf(w, fmt.Sprintf(errMsgTemplate, slug, domain, domain)) return } if err != nil { log.Println(kayvee.FormatLog("shorty", kayvee.Error, "redirect", msg{ "err": err.Error(), })) w.WriteHeader(500) w.Write([]byte(err.Error())) return } http.Redirect(w, r, long, 302) return } }