commit - 5a25e6098daa4525fb5946d5330478354e706d73
commit + 722a6f393041fe09c87f797a39d8ff00d157fe3d
blob - 7579110a3722d91a8b420938f70ecfcf7300bdb7
blob + 8ef5e3310035605efd81c6ea5d6b857f69f8e6f9
--- cmd/rss/rss.go
+++ cmd/rss/rss.go
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
+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
+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
+}