func EncodeHandler(storage storages.IStorage) http.Handler { handleFunc := func(w http.ResponseWriter, r *http.Request) { if url := r.PostFormValue("url"); url != "" { w.Write([]byte(storage.Save(url))) } } return http.HandlerFunc(handleFunc) }
func RedirectHandler(storage storages.IStorage) http.Handler { handleFunc := func(w http.ResponseWriter, r *http.Request) { code := r.URL.Path[len("/red/"):] url, err := storage.Load(code) if err != nil { w.WriteHeader(http.StatusNotFound) w.Write([]byte("URL Not Found. Error: " + err.Error() + "\n")) return } http.Redirect(w, r, string(url), 301) } return http.HandlerFunc(handleFunc) }