package music import ( "fmt" "net/http" "arimelody.me/arimelody.me/api/v1/admin" "arimelody.me/arimelody.me/global" ) // func make_date_work(date string) time.Time { // res, err := time.Parse("2-Jan-2006", date) // if err != nil { // fmt.Printf("somehow we failed to parse %s! falling back to epoch :]\n", date) // return time.Unix(0, 0) // } // return res // } // HTTP HANDLER METHODS func ServeCatalog() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { releases := []Release{} authorised := r.Context().Value("role") != nil && r.Context().Value("role") == "admin" for _, release := range Releases { if !release.IsReleased() && !authorised { continue } releases = append(releases, release) } global.ServeTemplate("music.html", releases).ServeHTTP(w, r) }) } func ServeGateway() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { id := r.URL.Path[1:] release := GetRelease(id) if release == nil { http.NotFound(w, r) return } // only allow authorised users to view unreleased releases authorised := r.Context().Value("role") != nil && r.Context().Value("role") == "admin" if !release.IsReleased() && !authorised { admin.MustAuthorise(ServeGateway()).ServeHTTP(w, r) return } lrw := global.LoggingResponseWriter{w, http.StatusOK} global.ServeTemplate("music-gateway.html", release).ServeHTTP(&lrw, r) if lrw.Code != http.StatusOK { fmt.Printf("Error loading music gateway for %s\n", id) return } }) }