示例#1
0
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)
	}
}