package main import ( "C" ) import ( "errors" "fmt" "net/http" "time" "github.com/PuerkitoBio/goquery" ) func getFeedList() []Feed { var ret []Feed ret = append(ret, *NewFeed("dilbert", "Dilbert", "Scott Adams", "dilbert")) return ret } func getRssItem(slug string) (string, error) { desc, err := getFeedDesc(time.Now()) if err != nil { return "", err } feed, err := m.GetFeed(SRC_DILBERT, slug) if err != nil { return "", err } desc = "" ret := " \n" ret += " " + feed.Name + "\n" ret += " " + feed.LastUpdate.Format(time.RFC1123Z) + "\n" ret += " dilbert;" + slug + ";" + feed.LastUpdate.Format(time.RFC1123Z) + "\n" ret += " " + getFeedUrl(time.Now()) + "\n" ret += " " + desc + "\n" ret += " \n" return ret, nil } func getFeedUrl(date time.Time) string { return fmt.Sprintf( "http://dilbert.com/strip/%4d-%02d-%02d", date.Year(), date.Month(), date.Day(), ) } func getFeedDesc(date time.Time) (string, error) { res, err := http.Get(getFeedUrl(date)) if err != nil { return "", err } defer res.Body.Close() if res.StatusCode != 200 { return "", errors.New(fmt.Sprintf("Status code error: %d %s", res.StatusCode, res.Status)) } // Load the HTML document doc, err := goquery.NewDocumentFromReader(res.Body) if err != nil { return "", err } // Find the Picture src, exists := doc.Find("img.img-comic").Attr("src") if !exists { return "", errors.New("Couldn't find image source") } return "", nil }