diff options
Diffstat (limited to 'controller')
| -rw-r--r-- | controller/app.go | 15 | ||||
| -rw-r--r-- | controller/file.go | 25 | ||||
| -rw-r--r-- | controller/template/uploaded.html | 1 |
3 files changed, 40 insertions, 1 deletions
diff --git a/controller/app.go b/controller/app.go index f145ce2..c22f165 100644 --- a/controller/app.go +++ b/controller/app.go @@ -3,7 +3,9 @@ package controller import ( "embed" "html/template" + "log" "net/http" + "time" "drop.janw.name/config" "drop.janw.name/storage" @@ -37,3 +39,16 @@ func (app App) requireAuth(res http.ResponseWriter, req *http.Request) bool { return false } + +func (app *App) StartScheduler() { + log.Println("starting scheduler") + + go func() { + for true { + time.Sleep(time.Minute * 13) + + log.Println("running scheduled tasks") + app.storage.GarbageCollect() + } + }() +} diff --git a/controller/file.go b/controller/file.go index 53121d5..7aed104 100644 --- a/controller/file.go +++ b/controller/file.go @@ -1,12 +1,17 @@ package controller import ( + "encoding/base64" "fmt" + "html/template" "io" + "log" "net/http" + "net/url" "time" "drop.janw.name/storage" + qrcode "github.com/skip2/go-qrcode" ) const MAX_FILESIZE = (1 << 19) * 100 @@ -44,10 +49,26 @@ func (app App) FilePost(res http.ResponseWriter, req *http.Request) { panic(err) } + log.Println("received new file:", key) + + downloadURL := fmt.Sprintf("%s/%s", app.config.Http.BaseAddress, key) + qrcodePng, err := qrcode.Encode(downloadURL, qrcode.Medium, 256) + + if err != nil { + panic(err) + } + + qrcodeDataUrl := fmt.Sprintf( + "data:image/png;base64,%s", + url.QueryEscape(base64.StdEncoding.WithPadding('=').EncodeToString(qrcodePng)), + ) + app.tmpl.ExecuteTemplate(res, "uploaded", struct { DownloadURL string + QRCode template.URL }{ - DownloadURL: fmt.Sprintf("%s/%s", app.config.Http.BaseAddress, key), + DownloadURL: downloadURL, + QRCode: template.URL(qrcodeDataUrl), }) } @@ -75,5 +96,7 @@ func (app App) FileGet(res http.ResponseWriter, req *http.Request) { if _, err := res.Write(file.Data); err != nil { panic(err) + } else { + log.Println("served file:", fileId, file.Filename) } } diff --git a/controller/template/uploaded.html b/controller/template/uploaded.html index 1324082..11fe558 100644 --- a/controller/template/uploaded.html +++ b/controller/template/uploaded.html @@ -5,6 +5,7 @@ <p> <a href="{{.DownloadURL}}">{{.DownloadURL}}</a> </p> + <img src="{{.QRCode}}"> </main> {{template "footer" .}} {{end}} |
