diff --git a/server/handlers/message-rendered.go b/server/handlers/messages.go similarity index 89% rename from server/handlers/message-rendered.go rename to server/handlers/messages.go index 48894d3..110056b 100644 --- a/server/handlers/message-rendered.go +++ b/server/handlers/messages.go @@ -3,6 +3,7 @@ package handlers import ( "fmt" "net/http" + "net/url" "regexp" "strings" @@ -11,6 +12,27 @@ import ( "github.com/gorilla/mux" ) +// RedirectToLatestMessage (method: GET) redirects the web UI to the latest message +func RedirectToLatestMessage(w http.ResponseWriter, r *http.Request) { + messages, err := storage.List(0, 1) + if err != nil { + httpError(w, err.Error()) + return + } + + uri := config.Webroot + + if len(messages) == 1 { + uri, err = url.JoinPath(uri, "/view/"+messages[0].ID) + if err != nil { + httpError(w, err.Error()) + return + } + } + + http.Redirect(w, r, uri, 302) +} + // GetMessageHTML (method: GET) returns a rendered version of a message's HTML part func GetMessageHTML(w http.ResponseWriter, r *http.Request) { // swagger:route GET /view/{ID}.html testing GetMessageHTML diff --git a/server/server.go b/server/server.go index 084ffd8..866dc4b 100644 --- a/server/server.go +++ b/server/server.go @@ -68,6 +68,9 @@ func Listen() { r.HandleFunc(redirect, middleWareFunc(addSlashToWebroot)).Methods("GET") } + // UI shortcut + r.HandleFunc(config.Webroot+"view/latest", handlers.RedirectToLatestMessage).Methods("GET") + // frontend testing r.HandleFunc(config.Webroot+"view/{id}.html", handlers.GetMessageHTML).Methods("GET") r.HandleFunc(config.Webroot+"view/{id}.txt", handlers.GetMessageText).Methods("GET")