package main import ( "fmt" "html/template" "io/ioutil" "log" "net/http" "net/url" ) type crmdLiveCast struct { crmdEntityBase Youtube string `json:"youtube,omitempty"` Description string `json:"description,omitempty"` } func spaLiveCastHandler(w http.ResponseWriter, r *http.Request) { castID := "" q, err := url.ParseQuery(r.URL.RawQuery) if err == nil { castIDs, ok := q["id"] if ok { castID = castIDs[0] } } if castID == "" { responseDefaultLiveCast(w) return } //castID = "5967812b87eb10564" entity, err := crmGetEntity("Livecast", castID) if err != nil || entity == nil { response404Handler(w) return } cast := entity.(crmdLiveCast) cast.youtubeVideo(w) } func (m crmdLiveCast) youtubeVideo(w http.ResponseWriter) { tTest := template.New("livecast") str, err := ioutil.ReadFile("spa/livecast.html") if err != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, "Formating information not available.") return } tTest, err = tTest.Parse(string(str)) if err != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, "Formating instruction invalid") return } err = tTest.Execute(w, m) if err != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, "Monkey runs into our computer room...") log.Println("ERROR: Template execution on spa/Edit, failed \n" + err.Error()) } } func responseDefaultLiveCast(w http.ResponseWriter) { cast := crmdLiveCast{} cast.Youtube = "https://www.youtube.com/embed/8r9zR27Kzho" cast.Name = "暂无直播" cast.Description = ` 直播活动,和校友会活动息息相关,方便在不同地域的校友积极参加,同时留下宝贵的影响资料,供后来的校友们参考。在没有直播的情况下, 校友会随机选取哈工大的宣传片,校友们的个人简介,以及校友会的宣传片放映。 ` cast.youtubeVideo(w) }