diff --git a/internal/server/server.go b/internal/server/server.go index 030e73a..ed8e8cd 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -3,9 +3,11 @@ package server import ( "crypto/rand" "encoding/hex" + "net/http" "sync" "time" "yoresee_dropbox/internal/store" + "yoresee_dropbox/web" ) type Server struct { @@ -36,3 +38,36 @@ func generateUUID() string { rand.Read(b) return hex.EncodeToString(b) } + +func (s *Server) Handler() http.Handler { + mux := http.NewServeMux() + + mux.HandleFunc("POST /api/login", s.handleLogin) + mux.HandleFunc("POST /api/logout", s.requireAuth(s.handleLogout)) + mux.HandleFunc("POST /api/upload", s.requireAuth(s.handleUpload)) + mux.HandleFunc("GET /api/files", s.requireAuth(s.handleListFiles)) + mux.HandleFunc("GET /api/files/{id}/download", s.requireAuth(s.handleDownload)) + mux.HandleFunc("DELETE /api/files/{id}", s.requireAuth(s.handleDeleteFile)) + mux.HandleFunc("POST /api/files/{id}/share", s.requireAuth(s.handleCreateShare)) + mux.HandleFunc("GET /api/shares", s.requireAuth(s.handleListShares)) + mux.HandleFunc("DELETE /api/shares/{id}", s.requireAuth(s.handleDeleteShare)) + + mux.HandleFunc("GET /s/{token}", s.handleShareAccess) + mux.HandleFunc("POST /s/{token}", s.handleSharePassword) + + mux.HandleFunc("GET /login", func(w http.ResponseWriter, r *http.Request) { + data, _ := web.FS.ReadFile("login.html") + w.Write(data) + }) + + mux.HandleFunc("GET /{$}", s.requireAuthPage(func(w http.ResponseWriter, r *http.Request) { + data, _ := web.FS.ReadFile("index.html") + w.Write(data) + })) + + mux.Handle("GET /style.css", http.FileServerFS(web.FS)) + mux.Handle("GET /app.js", http.FileServerFS(web.FS)) + mux.Handle("GET /alpine.min.js", http.FileServerFS(web.FS)) + + return mux +} diff --git a/web/alpine.min.js b/web/alpine.min.js new file mode 100644 index 0000000..ff7bd09 --- /dev/null +++ b/web/alpine.min.js @@ -0,0 +1 @@ +// placeholder diff --git a/web/app.js b/web/app.js new file mode 100644 index 0000000..ff7bd09 --- /dev/null +++ b/web/app.js @@ -0,0 +1 @@ +// placeholder diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..79590be --- /dev/null +++ b/web/index.html @@ -0,0 +1,2 @@ + +