package index import ( "net/http" "code.nonshy.com/nonshy/website/pkg/config" "code.nonshy.com/nonshy/website/pkg/log" "code.nonshy.com/nonshy/website/pkg/models/demographic" "code.nonshy.com/nonshy/website/pkg/templates" ) // Create the controller. func Create() http.HandlerFunc { tmpl := templates.Must("index.html") return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/" || r.Method != http.MethodGet { log.Error("404 Not Found: %s", r.URL.Path) templates.NotFoundPage(w, r) return } // Get website statistics to show on home page. demo, err := demographic.Get() if err != nil { log.Error("demographic.Get: %s", err) } vars := map[string]interface{}{ "Demographic": demo, } if err := tmpl.Execute(w, r, vars); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } }) } // Favicon func Favicon() http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, config.StaticPath+"/favicon.ico") }) } // PWA Manifest func Manifest() http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, config.StaticPath+"/manifest.json") }) } // Service Worker for web push. func ServiceWorker() http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "application/javascript; charset=UTF-8") w.Header().Add("Service-Worker-Allowed", "/") http.ServeFile(w, r, config.StaticPath+"/js/service-worker.js") }) }