Skip to content

Commit

Permalink
fever api feed last_updated_on_time
Browse files Browse the repository at this point in the history
  • Loading branch information
nkanaev committed Nov 1, 2020
1 parent 60a947f commit e4cc96e
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 15 deletions.
34 changes: 19 additions & 15 deletions server/fever.go
Expand Up @@ -33,13 +33,13 @@ type FeverFeedsGroup struct {
}

type FeverFeed struct {
ID int64 `json:"id"`
FaviconID int64 `json:"favicon_id"`
Title string `json:"title"`
Url string `json:"url"`
SiteUrl string `json:"site_url"`
IsSpark int `json:"is_spark"`
LastUpdatedOnTime int64 `json:"last_updated_on_time"`
ID int64 `json:"id"`
FaviconID int64 `json:"favicon_id"`
Title string `json:"title"`
Url string `json:"url"`
SiteUrl string `json:"site_url"`
IsSpark int `json:"is_spark"`
LastUpdated int64 `json:"last_updated_on_time"`
}

type FeverItem struct {
Expand Down Expand Up @@ -128,19 +128,23 @@ func FeverGroupsHandler(rw http.ResponseWriter, req *http.Request) {

func FeverFeedsHandler(rw http.ResponseWriter, req *http.Request) {
feeds := db(req).ListFeeds()
httpStates := db(req).ListHTTPStates()

feverFeeds := make([]*FeverFeed, len(feeds))
for i, feed := range feeds {
// TODO: check url/siteurl
var lastUpdated int64
if state, ok := httpStates[feed.Id]; ok {
lastUpdated = state.LastRefreshed.Unix()
}
// TODO: store last updated on time?
feverFeeds[i] = &FeverFeed{
ID: feed.Id,
FaviconID: feed.Id,
Title: feed.Title,
Url: feed.FeedLink,
SiteUrl: feed.Link,
IsSpark: 0,
LastUpdatedOnTime: 1,
ID: feed.Id,
FaviconID: feed.Id,
Title: feed.Title,
Url: feed.FeedLink,
SiteUrl: feed.Link,
IsSpark: 0,
LastUpdated: lastUpdated,
}
}
writeFeverJSON(rw, map[string]interface{}{
Expand Down
24 changes: 24 additions & 0 deletions storage/http.go
Expand Up @@ -12,6 +12,30 @@ type HTTPState struct {
Etag string
}

func (s *Storage) ListHTTPStates() map[int64]HTTPState {
result := make(map[int64]HTTPState)
rows, err := s.db.Query(`select feed_id, last_refreshed, last_modified, etag from http_states`)
if err != nil {
s.log.Print(err)
return result
}
for rows.Next() {
var state HTTPState
err = rows.Scan(
&state.FeedID,
&state.LastRefreshed,
&state.LastModified,
&state.Etag,
)
if err != nil {
s.log.Print(err)
return result
}
result[state.FeedID] = state
}
return result
}

func (s *Storage) GetHTTPState(feedID int64) *HTTPState {
row := s.db.QueryRow(`
select feed_id, last_refreshed, last_modified, etag
Expand Down

0 comments on commit e4cc96e

Please sign in to comment.