From 02027e2ac63c57bb6970fb5d25582c4a4c21db6b97236eceaaae421271c219b8 Mon Sep 17 00:00:00 2001 From: void <1wbw9dks67y2evx7qrrbocox@systemli.org> Date: Thu, 25 Jun 2026 12:20:45 +0000 Subject: [PATCH] Upload files to "/" --- main.go | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 main.go diff --git a/main.go b/main.go new file mode 100644 index 0000000..3002b42 --- /dev/null +++ b/main.go @@ -0,0 +1,68 @@ +package main + +import ( + "fmt" + "math/rand" + "net/http" + "net/url" +) + +func main() { + m := map[string]string{} + s := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + if r.URL.Path == "/" && r.Method == "GET" { + fmt.Fprintln(w, "

shortener

") + fmt.Fprintln(w, "
") + fmt.Fprintln(w, "") + fmt.Fprintln(w, "") + fmt.Fprintln(w, "
") + return + } + + if r.URL.Path == "/" && r.Method == "POST" { + a := r.FormValue("url") + + if a == "" { + fmt.Fprintln(w, "empty") + return + } + + u, err := url.Parse(a) + if err != nil || u.Scheme == "" || u.Host == "" { + fmt.Fprintln(w, "bad url") + return + } + + b := "" + for j := 0; j < 6; j++ { + b = b + string(s[rand.Intn(len(s))]) + } + + for m[b] != "" { + b = "" + for j := 0; j < 6; j++ { + b = b + string(s[rand.Intn(len(s))]) + } + } + + m[b] = a + fmt.Fprintln(w, "short url: http://localhost:8080/"+b) + return + } + + x := r.URL.Path[1:] + y := m[x] + + if y == "" { + fmt.Fprintln(w, "not found") + return + } + + http.Redirect(w, r, y, 302) + }) + + fmt.Println("start http://localhost:8080") + http.ListenAndServe(":8080", nil) +}