func (c GeneratorController) ServeHTTP(w http.ResponseWriter, r *http.Request) { requestedChannel := strings.Split(r.URL.Path, ".")[0] channelSchedule := &datastore.Schedule{Id: requestedChannel} blob := datastore.Blob{channelSchedule.CacheKey()} if !channelSchedule.IsPlaying() { go generator.Start(channelSchedule) // start generator } str, err := blob.Get() if err != nil { // If playlist isn't rendered w.WriteHeader(202) fmt.Fprintln(w, "generating", requestedChannel) } else { // otherwise render playlist from redis w.Header().Add("Content-Type", "application/x-mpegurl") fmt.Fprintln(w, str) } }