commit 722a6f393041fe09c87f797a39d8ff00d157fe3d from: Matt Streatfield date: Mon Apr 14 14:01:13 2025 UTC Move handlers to their own service commit - 5a25e6098daa4525fb5946d5330478354e706d73 commit + 722a6f393041fe09c87f797a39d8ff00d157fe3d blob - 7579110a3722d91a8b420938f70ecfcf7300bdb7 blob + 8ef5e3310035605efd81c6ea5d6b857f69f8e6f9 --- cmd/rss/rss.go +++ cmd/rss/rss.go @@ -1,42 +1,10 @@ package main import ( - "html/template" - "log" - "net/http" + "github.com/streatCodes/rss/internal/service" ) -type TemplateData struct { - Results []string -} - -func render(w http.ResponseWriter, name string, data any) { - tmpl := template.Must(template.ParseGlob("internal/templates/*.tmpl")) - tmpl.ExecuteTemplate(w, name, data) -} - -func homeHandler(w http.ResponseWriter, r *http.Request) { - render(w, "home", nil) -} - -func searchHandler(w http.ResponseWriter, r *http.Request) { - isHtmx := r.Header.Get("HX-Request") - searchResult := r.URL.Query().Get("search") - if isHtmx == "true" { - render(w, "results", []string{searchResult}) - } else { - render(w, "home", TemplateData{Results: []string{searchResult}}) - } -} - func main() { - mux := http.NewServeMux() + _ = service.NewService() - mux.Handle("GET /static/", http.StripPrefix("/static/", http.FileServer(http.Dir("web")))) - mux.HandleFunc("GET /", homeHandler) - mux.HandleFunc("GET /search", searchHandler) - - addr := ":8080" - log.Printf("Server running at %s", addr) - log.Fatal(http.ListenAndServe(addr, mux)) } blob - /dev/null blob + ba5a2e0707e500d09c40d17af9491c793c1a9a11 (mode 644) --- /dev/null +++ internal/service/search.go @@ -0,0 +1,29 @@ +package service + +import ( + "html/template" + "net/http" +) + +type TemplateData struct { + Results []string +} + +func render(w http.ResponseWriter, name string, data any) { + tmpl := template.Must(template.ParseGlob("internal/templates/*.tmpl")) + tmpl.ExecuteTemplate(w, name, data) +} + +func (service *Service) homeHandler(w http.ResponseWriter, r *http.Request) { + render(w, "home", nil) +} + +func (service *Service) searchHandler(w http.ResponseWriter, r *http.Request) { + isHtmx := r.Header.Get("HX-Request") + searchResult := r.URL.Query().Get("search") + if isHtmx == "true" { + render(w, "results", []string{searchResult}) + } else { + render(w, "home", TemplateData{Results: []string{searchResult}}) + } +} blob - /dev/null blob + de3497b969992add0cd7859db4149a5440db6953 (mode 644) --- /dev/null +++ internal/service/service.go @@ -0,0 +1,25 @@ +package service + +import ( + "log" + "net/http" +) + +type Service struct { +} + +func NewService() Service { + service := Service{} + + mux := http.NewServeMux() + + mux.Handle("GET /static/", http.StripPrefix("/static/", http.FileServer(http.Dir("web")))) + mux.HandleFunc("GET /", service.homeHandler) + mux.HandleFunc("GET /search", service.searchHandler) + + addr := ":8080" + log.Printf("Server running at %s", addr) + log.Fatal(http.ListenAndServe(addr, mux)) + + return service +}