From c4dbd8473bbe94894b44f664485b3689f1bdadae Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 24 May 2018 13:01:30 +0200
Subject: [PATCH] Initial working implementation

---
 main.go | 38 +++++++++++++++++++++++---------------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/main.go b/main.go
index 2532e7e..a6aea1b 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)
 		}
 	})
 
-- 
GitLab