Commit Diff


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
+}