本文整理匯總了Golang中github.com/urandom/readeef/content.Feed.Refresh方法的典型用法代碼示例。如果您正苦於以下問題:Golang Feed.Refresh方法的具體用法?Golang Feed.Refresh怎麽用?Golang Feed.Refresh使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/urandom/readeef/content.Feed
的用法示例。
在下文中一共展示了Feed.Refresh方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: requestFeedContent
func (fm *FeedManager) requestFeedContent(f content.Feed) {
if f == nil {
fm.logger.Infoln("No feed provided")
return
}
data := f.Data()
fm.logger.Infoln("Requesting feed content for " + f.String())
resp, err := fm.client.Get(data.Link)
if err != nil {
data.UpdateError = err.Error()
} else if resp.StatusCode != http.StatusOK {
defer func() {
// Drain the body so that the connection can be reused
io.Copy(ioutil.Discard, resp.Body)
resp.Body.Close()
}()
data.UpdateError = httpStatusPrefix + strconv.Itoa(resp.StatusCode)
} else {
defer resp.Body.Close()
data.UpdateError = ""
buf := util.BufferPool.GetBuffer()
defer util.BufferPool.Put(buf)
if _, err := buf.ReadFrom(resp.Body); err == nil {
hash := md5.Sum(buf.Bytes())
if b, ok := fm.lastUpdateHash[data.Id]; ok && bytes.Equal(b[:], hash[:]) {
fm.logger.Infof("Content of feed %s is the same as the previous update\n", f)
return
}
fm.lastUpdateHash[data.Id] = hash
if pf, err := parser.ParseFeed(buf.Bytes(), parser.ParseRss2, parser.ParseAtom, parser.ParseRss1); err == nil {
f.Refresh(fm.processParserFeed(pf))
} else {
data.UpdateError = err.Error()
}
} else {
data.UpdateError = err.Error()
}
}
if data.UpdateError != "" {
fm.logger.Printf("Error updating feed '%s': %s\n", f, data.UpdateError)
}
f.Data(data)
select {
case <-fm.done:
return
default:
fm.updateFeed(f)
}
}