From c8ec356c3e2c4408092ff4605a19d6e1c8608b57 Mon Sep 17 00:00:00 2001 From: Lukas Werner Date: Tue, 11 Aug 2026 14:11:17 -0700 Subject: [PATCH] upload: basic folder upload support --- go.mod | 4 +- go.sum | 4 ++ guard.dockerfile | 2 +- handlers/upload.go | 3 ++ makefile | 4 +- pages/upload.templ | 95 +++++++++++++++++++++++++++++++++------------- 6 files changed, 80 insertions(+), 32 deletions(-) diff --git a/go.mod b/go.mod index e36f9c7..45e5e20 100644 --- a/go.mod +++ b/go.mod @@ -4,9 +4,9 @@ go 1.25.0 require ( github.com/Oudwins/tailwind-merge-go v0.2.1 // indirect - github.com/a-h/templ v0.3.943 // indirect + github.com/a-h/templ v0.3.1020 // indirect github.com/gabriel-vasile/mimetype v1.4.10 // indirect github.com/google/uuid v1.6.0 // indirect github.com/valkey-io/valkey-go v1.0.64 // indirect - golang.org/x/sys v0.34.0 // indirect + golang.org/x/sys v0.41.0 // indirect ) diff --git a/go.sum b/go.sum index f41c7c7..09061f4 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ github.com/Oudwins/tailwind-merge-go v0.2.1 h1:jxRaEqGtwwwF48UuFIQ8g8XT7YSualNuG github.com/Oudwins/tailwind-merge-go v0.2.1/go.mod h1:kkZodgOPvZQ8f7SIrlWkG/w1g9JTbtnptnePIh3V72U= github.com/a-h/templ v0.3.943 h1:o+mT/4yqhZ33F3ootBiHwaY4HM5EVaOJfIshvd5UNTY= github.com/a-h/templ v0.3.943/go.mod h1:oCZcnKRf5jjsGpf2yELzQfodLphd2mwecwG4Crk5HBo= +github.com/a-h/templ v0.3.1020 h1:ypAT/L5ySWEnZ6Zft/5yfoWXYYkhFNvEFOeeqecg4tw= +github.com/a-h/templ v0.3.1020/go.mod h1:A2DlK61v+K+NRoGnhmYbNYVmtYHcFO5/AisMvBdDxTM= github.com/gabriel-vasile/mimetype v1.4.10 h1:zyueNbySn/z8mJZHLt6IPw0KoZsiQNszIpU+bX4+ZK0= github.com/gabriel-vasile/mimetype v1.4.10/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -10,3 +12,5 @@ github.com/valkey-io/valkey-go v1.0.64 h1:3u4+b6D6zs9JQs254TLy4LqitCMHHr9XorP9GG github.com/valkey-io/valkey-go v1.0.64/go.mod h1:bHmwjIEOrGq/ubOJfh5uMRs7Xj6mV3mQ/ZXUbmqpjqY= golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= diff --git a/guard.dockerfile b/guard.dockerfile index 01f5960..804a931 100644 --- a/guard.dockerfile +++ b/guard.dockerfile @@ -8,7 +8,7 @@ ENV GOARCH=amd64 RUN apk add git WORKDIR /src/ -RUN git clone https://git.hafen.run/lukas/oauth-guard.git +RUN git clone https://git.pdx.land/lukas/oauth-guard.git WORKDIR /src/oauth-guard RUN go mod download -x ENV CGO_ENABLED=0 diff --git a/handlers/upload.go b/handlers/upload.go index 50c1586..e0d0d34 100644 --- a/handlers/upload.go +++ b/handlers/upload.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "io" + "log" "net/http" "time" @@ -18,6 +19,7 @@ func UploadFiles(client valkey.Client) func(w http.ResponseWriter, r *http.Reque return func(w http.ResponseWriter, r *http.Request) { err := r.ParseMultipartForm(125_000_000) // 1G max memory usage if err != nil { + log.Println("error in parsing form: ", err.Error()) http.Error(w, err.Error(), http.StatusBadRequest) return } @@ -26,6 +28,7 @@ func UploadFiles(client valkey.Client) func(w http.ResponseWriter, r *http.Reque expiry_values := form.Value["expiry"] expiry, err := time.ParseDuration(expiry_values[0]) if err != nil { + log.Println("error in getting expiry: ", err.Error()) http.Error(w, err.Error(), http.StatusBadRequest) return } diff --git a/makefile b/makefile index 71e919c..7217c94 100644 --- a/makefile +++ b/makefile @@ -5,8 +5,8 @@ templ: # Run air for Go hot reload server: air \ - --build.cmd "go build -o tmp/bin/main ./main.go" \ - --build.bin "tmp/bin/main" \ + --build.cmd "go build -o tmp/main ." \ + --build.bin "tmp/main" \ --build.delay "100" \ --build.exclude_dir "node_modules" \ --build.include_ext "go" \ diff --git a/pages/upload.templ b/pages/upload.templ index aa64f89..69f179f 100644 --- a/pages/upload.templ +++ b/pages/upload.templ @@ -35,8 +35,9 @@ templ Upload(expirations []Expiry, uploadedLink string) {