diff --git a/cmd/owl/web/handler.go b/cmd/owl/web/handler.go index 253b6fe..3e14965 100644 --- a/cmd/owl/web/handler.go +++ b/cmd/owl/web/handler.go @@ -237,6 +237,26 @@ func postMediaHandler(repo *owl.Repository) func(http.ResponseWriter, *http.Requ } } +func userMediaHandler(repo *owl.Repository) func(http.ResponseWriter, *http.Request, httprouter.Params) { + return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + filepath := ps.ByName("filepath") + + user, err := getUserFromRepo(repo, ps) + if err != nil { + println("Error getting user: ", err.Error()) + notFoundHandler(repo)(w, r) + return + } + filepath = path.Join(user.MediaDir(), filepath) + if _, err := os.Stat(filepath); err != nil { + println("Error getting file: ", err.Error()) + notFoundHandler(repo)(w, r) + return + } + http.ServeFile(w, r, filepath) + } +} + func notFoundHandler(repo *owl.Repository) func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { path := r.URL.Path diff --git a/cmd/owl/web/server.go b/cmd/owl/web/server.go index d64c051..81d3d3b 100644 --- a/cmd/owl/web/server.go +++ b/cmd/owl/web/server.go @@ -14,10 +14,11 @@ func Router(repo *owl.Repository) http.Handler { router.ServeFiles("/static/*filepath", http.Dir(repo.StaticDir())) router.GET("/", repoIndexHandler(repo)) router.GET("/user/:user/", userIndexHandler(repo)) - router.POST("/user/:user/webmention/", userWebmentionHandler(repo)) + router.GET("/user/:user/media/*filepath", userMediaHandler(repo)) router.GET("/user/:user/index.xml", userRSSHandler(repo)) router.GET("/user/:user/posts/:post/", postHandler(repo)) router.GET("/user/:user/posts/:post/media/*filepath", postMediaHandler(repo)) + router.POST("/user/:user/webmention/", userWebmentionHandler(repo)) router.NotFound = http.HandlerFunc(notFoundHandler(repo)) return router } @@ -26,10 +27,11 @@ func SingleUserRouter(repo *owl.Repository) http.Handler { router := httprouter.New() router.ServeFiles("/static/*filepath", http.Dir(repo.StaticDir())) router.GET("/", userIndexHandler(repo)) - router.POST("/webmention/", userWebmentionHandler(repo)) + router.GET("/media/*filepath", userMediaHandler(repo)) router.GET("/index.xml", userRSSHandler(repo)) router.GET("/posts/:post/", postHandler(repo)) router.GET("/posts/:post/media/*filepath", postMediaHandler(repo)) + router.POST("/webmention/", userWebmentionHandler(repo)) router.NotFound = http.HandlerFunc(notFoundHandler(repo)) return router } diff --git a/embed/initial/base.html b/embed/initial/base.html index 7e2ecb8..3c75e4e 100644 --- a/embed/initial/base.html +++ b/embed/initial/base.html @@ -18,6 +18,26 @@ border-color: #ccc; } + .avatar { + float: left; + margin-right: 1rem; + + } + + .header { + display: flex; + flex-flow: row wrap; + justify-content: space-between; + align-items: flex-start; + } + + .header-title { + order: 0; + } + + .header-profile { + order: 1; + } hgroup h2 a { color: inherit; } @@ -25,34 +45,34 @@