Commit Diff


commit - e396d327ce7472ac9a79ab7df26755d6e50ef0c7
commit + 5dfdd66b09fe47403bcc7678f431f06feba5cbb1
blob - 4fdd36ec7bd8c1eff3fe3f07c55628360acf7a7f
blob + fe60e21b6bd1a72734687ab0197b479fd2332ae8
--- internal/service/handlers.go
+++ internal/service/handlers.go
@@ -4,6 +4,9 @@ import (
 	"html/template"
 	"net/http"
 	"net/url"
+	"strings"
+
+	"github.com/streatCodes/rss/rss"
 )
 
 var templateFuncs = template.FuncMap{
@@ -36,3 +39,20 @@ func (service *Service) searchHandler(w http.ResponseW
 	}
 	render(w, "home", results)
 }
+
+type ChannelPage struct {
+	ShowSubscribeButton bool
+	Channel             *rss.Channel
+}
+
+func (service *Service) channelHandler(w http.ResponseWriter, r *http.Request) {
+	channelPage := ChannelPage{ShowSubscribeButton: true}
+	channelUrl := strings.TrimPrefix(r.URL.Path, "/channel/")
+
+	//Check to see if we have the feed in the database
+	if channel, err := service.db.GetChannel(channelUrl); channel != nil && err == nil {
+		channelPage.Channel = channel
+	}
+
+	render(w, "channelPage", channelPage)
+}
blob - c25c607897bf71ad59b2e2c57879c2fea54275f2
blob + ac7ddbc2113c05ea5b8035af45c91779d98f0819
--- internal/service/service.go
+++ internal/service/service.go
@@ -25,6 +25,7 @@ func New(dbPath string) (*Service, error) {
 	mux.Handle("GET /static/", http.StripPrefix("/static/", http.FileServer(http.Dir("web"))))
 	mux.HandleFunc("GET /", service.homeHandler)
 	mux.HandleFunc("GET /search", service.searchHandler)
+	mux.HandleFunc("GET /channel/", service.channelHandler)
 
 	addr := ":8080"
 	log.Printf("Server running at %s", addr)
blob - /dev/null
blob + ef0a5d66297f2c3b8c46267193799a428e007726 (mode 644)
--- /dev/null
+++ internal/templates/channelPage.tmpl
@@ -0,0 +1,7 @@
+{{ define "channelPage" }}
+{{ template "header" }}
+<main class="search-area">
+    Channels todo {{.Channel.Title}}
+</main>
+{{ template "footer" }}
+{{ end }}