commit 5dfdd66b09fe47403bcc7678f431f06feba5cbb1 from: Matt Streatfield via: Oliver Lowe date: Mon Apr 21 23:45:08 2025 UTC Add initial channel handler 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" }} +
+ Channels todo {{.Channel.Title}} +
+{{ template "footer" }} +{{ end }}