diff --git a/main.go b/main.go index 2532e7e8872debe556387a9d7e723010fbeedbd3..a6aea1bd0a92f564cd1af037e63bff9dccc20388 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( "net/http" "os" "path" + "strings" ) type Config struct { @@ -57,23 +58,30 @@ func main() { panic(err) } + assets := http.FileServer(http.Dir("assets")) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { _, channel := path.Split(r.URL.Path) - channelData := ChannelData{} - err = db.QueryRow("SELECT id, channel FROM channels WHERE channel ILIKE $1", channel).Scan(&channelData.Id, &channelData.Name) - if err != nil { - println(err.Error()) - return - } - err = db.QueryRow("SELECT SUM(characters), SUM(words) FROM messages WHERE channel = $1", channelData.Id).Scan(&channelData.TotalCharacters, &channelData.TotalWords) - if err != nil { - println(err.Error()) - return - } - err = formatTemplate(w, "statistics", channelData) - if err != nil { - println(err.Error()) - return + if strings.HasPrefix(channel, "#") { + channelData := ChannelData{} + err = db.QueryRow("SELECT id, channel FROM channels WHERE channel ILIKE $1", channel).Scan(&channelData.Id, &channelData.Name) + if err != nil { + println(err.Error()) + return + } + err = db.QueryRow("SELECT SUM(characters), SUM(words) FROM messages WHERE channel = $1", channelData.Id).Scan(&channelData.TotalCharacters, &channelData.TotalWords) + if err != nil { + println(err.Error()) + return + } + err = formatTemplate(w, "statistics", channelData) + if err != nil { + println(err.Error()) + return + } + } else { + w.Header().Set("Vary", "Accept-Encoding") + w.Header().Set("Cache-Control", "public, max-age=31536000") + assets.ServeHTTP(w, r) } })