From 02bdb405fa3f4c73eefa02c62ed8cf2229ce3f37 Mon Sep 17 00:00:00 2001 From: Lawrence Craft Date: Thu, 26 Sep 2019 22:15:50 +0100 Subject: [PATCH] Bit more on the subreddit module - fixing comments and adding options for top sort --- modules/subreddit/api.go | 13 +++++++++++-- modules/subreddit/settings.go | 2 ++ modules/subreddit/widget.go | 10 +++++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/subreddit/api.go b/modules/subreddit/api.go index a0f9b3cc..506a84cb 100644 --- a/modules/subreddit/api.go +++ b/modules/subreddit/api.go @@ -9,8 +9,13 @@ import ( var rootPage = "https://reddit.com/r/" -func GetLinks(subreddit string, sortMode string) ([]Link, error) { - request, err := http.NewRequest("GET", rootPage+subreddit+"/"+sortMode+".json", nil) +func GetLinks(subreddit string, sortMode string, topTimePeriod string) ([]Link, error) { + url := rootPage + subreddit + "/" + sortMode + ".json" + if sortMode == "top" { + url = url + "?sort=top&t=" + topTimePeriod + } + + request, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } @@ -34,6 +39,10 @@ func GetLinks(subreddit string, sortMode string) ([]Link, error) { return nil, err } + if len(m.Data.Children) == 0 { + return nil, fmt.Errorf("No links") + } + var links []Link for _, l := range m.Data.Children { links = append(links, l.Data) diff --git a/modules/subreddit/settings.go b/modules/subreddit/settings.go index e42f69c5..63fc68df 100644 --- a/modules/subreddit/settings.go +++ b/modules/subreddit/settings.go @@ -16,6 +16,7 @@ type Settings struct { subreddit string `help:"Subreddit to look at" optional:"false"` numberOfPosts int `help:"Number of posts to show. Default is 10." optional:"true"` sortOrder string `help:"Sort order for the posts (hot, new, rising, top), default hot" optional:"true"` + topTimePeriod string `help:"If top sort is selected, the time period to show posts from (hour, week, day, month, year, all, default all)"` } // NewSettingsFromYAML creates the settings for this module from a yaml file @@ -26,6 +27,7 @@ func NewSettingsFromYAML(name string, ymlConfig *config.Config, globalConfig *co numberOfPosts: ymlConfig.UInt("numberOfPosts", 10), sortOrder: ymlConfig.UString("sortOrder", "hot"), + topTimePeriod: ymlConfig.UString("topTimePeriod", "all"), subreddit: subreddit, } diff --git a/modules/subreddit/widget.go b/modules/subreddit/widget.go index 356237cb..d63db14e 100644 --- a/modules/subreddit/widget.go +++ b/modules/subreddit/widget.go @@ -35,15 +35,17 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) * } +/* -------------------- Exported Functions -------------------- */ + func (widget *Widget) Refresh() { - links, err := GetLinks(widget.settings.subreddit, widget.settings.sortOrder) + links, err := GetLinks(widget.settings.subreddit, widget.settings.sortOrder, widget.settings.topTimePeriod) if err != nil { widget.err = err widget.links = nil widget.SetItemCount(0) } else { - widget.links = links - widget.SetItemCount(len(links)) + widget.links = links[:widget.settings.numberOfPosts] + widget.SetItemCount(len(widget.links)) widget.err = nil } widget.Render() @@ -53,6 +55,8 @@ func (widget *Widget) Render() { widget.Redraw(widget.content) } +/* -------------------- Unexported Functions -------------------- */ + func (widget *Widget) content() (string, string, bool) { title := "/r/" + widget.settings.subreddit + " - " + widget.settings.sortOrder if widget.err != nil {