From 5593f19e1cee829d5514d65eadad9e0107f09be5 Mon Sep 17 00:00:00 2001 From: Chris Cummer Date: Tue, 16 Apr 2019 17:09:08 -0700 Subject: [PATCH] WTF-400 TravisCI extracted to new config format --- main.go | 3 ++- modules/circleci/settings.go | 4 ++-- modules/circleci/widget.go | 2 +- modules/travisci/client.go | 19 ++++--------------- modules/travisci/settings.go | 28 ++++++++++++++++++++++++++++ modules/travisci/widget.go | 7 +++++-- 6 files changed, 42 insertions(+), 21 deletions(-) create mode 100644 modules/travisci/settings.go diff --git a/main.go b/main.go index 34886935..f55be2d7 100644 --- a/main.go +++ b/main.go @@ -298,7 +298,8 @@ func makeWidget(app *tview.Application, pages *tview.Pages, widgetName string) w settings := todoist.NewSettingsFromYAML(wtf.Config) widget = todoist.NewWidget(app, pages, settings) case "travisci": - widget = travisci.NewWidget(app, pages) + settings := travisci.NewSettingsFromYAML(wtf.Config) + widget = travisci.NewWidget(app, pages, settings) case "trello": widget = trello.NewWidget(app) case "twitter": diff --git a/modules/circleci/settings.go b/modules/circleci/settings.go index b9cb9849..2dcdffa9 100644 --- a/modules/circleci/settings.go +++ b/modules/circleci/settings.go @@ -10,7 +10,7 @@ import ( type Settings struct { Common *cfg.Common - APIKey string + apiKey string } func NewSettingsFromYAML(ymlConfig *config.Config) *Settings { @@ -18,7 +18,7 @@ func NewSettingsFromYAML(ymlConfig *config.Config) *Settings { settings := Settings{ Common: cfg.NewCommonSettingsFromYAML(ymlConfig), - APIKey: localConfig.UString("apiKey", os.Getenv("WTF_CIRCLE_API_KEY")), + apiKey: localConfig.UString("apiKey", os.Getenv("WTF_CIRCLE_API_KEY")), } return &settings diff --git a/modules/circleci/widget.go b/modules/circleci/widget.go index ce8ecf62..63faf855 100644 --- a/modules/circleci/widget.go +++ b/modules/circleci/widget.go @@ -17,7 +17,7 @@ type Widget struct { func NewWidget(app *tview.Application, settings *Settings) *Widget { widget := Widget{ TextWidget: wtf.NewTextWidget(app, "CircleCI", "circleci", false), - Client: NewClient(settings.APIKey), + Client: NewClient(settings.apiKey), settings: settings, } diff --git a/modules/travisci/client.go b/modules/travisci/client.go index a37a0d7b..0434fcfd 100644 --- a/modules/travisci/client.go +++ b/modules/travisci/client.go @@ -8,9 +8,6 @@ import ( "io/ioutil" "net/http" "net/url" - "os" - - "github.com/wtfutil/wtf/wtf" ) var TRAVIS_HOSTS = map[bool]string{ @@ -18,13 +15,12 @@ var TRAVIS_HOSTS = map[bool]string{ true: "travis-ci.com", } -func BuildsFor() (*Builds, error) { +func BuildsFor(apiKey string, pro bool) (*Builds, error) { builds := &Builds{} - pro := wtf.Config.UBool("wtf.mods.travisci.pro", false) travisAPIURL.Host = "api." + TRAVIS_HOSTS[pro] - resp, err := travisRequest("builds") + resp, err := travisRequest(apiKey, "builds") if err != nil { return builds, err } @@ -40,7 +36,7 @@ var ( travisAPIURL = &url.URL{Scheme: "https", Path: "/"} ) -func travisRequest(path string) (*http.Response, error) { +func travisRequest(apiKey string, path string) (*http.Response, error) { params := url.Values{} params.Add("limit", "10") @@ -51,7 +47,7 @@ func travisRequest(path string) (*http.Response, error) { req.Header.Add("Content-Type", "application/json") req.Header.Add("Travis-API-Version", "3") - bearer := fmt.Sprintf("token %s", apiToken()) + bearer := fmt.Sprintf("token %s", apiKey) req.Header.Add("Authorization", bearer) if err != nil { return nil, err @@ -70,13 +66,6 @@ func travisRequest(path string) (*http.Response, error) { return resp, nil } -func apiToken() string { - return wtf.Config.UString( - "wtf.mods.travisci.apiKey", - os.Getenv("WTF_TRAVIS_API_TOKEN"), - ) -} - func parseJson(obj interface{}, text io.Reader) { jsonStream, err := ioutil.ReadAll(text) if err != nil { diff --git a/modules/travisci/settings.go b/modules/travisci/settings.go new file mode 100644 index 00000000..dd16d7b5 --- /dev/null +++ b/modules/travisci/settings.go @@ -0,0 +1,28 @@ +package travisci + +import ( + "os" + + "github.com/olebedev/config" + "github.com/wtfutil/wtf/cfg" +) + +type Settings struct { + Common *cfg.Common + + apiKey string + pro bool +} + +func NewSettingsFromYAML(ymlConfig *config.Config) *Settings { + localConfig, _ := ymlConfig.Get("wtf.mods.travisci") + + settings := Settings{ + Common: cfg.NewCommonSettingsFromYAML(ymlConfig), + + apiKey: localConfig.UString("apiKey", os.Getenv("WTF_TRAVIS_API_TOKEN")), + pro: localConfig.UBool("pro", false), + } + + return &settings +} diff --git a/modules/travisci/widget.go b/modules/travisci/widget.go index 8844fcaf..e6f21346 100644 --- a/modules/travisci/widget.go +++ b/modules/travisci/widget.go @@ -28,12 +28,15 @@ type Widget struct { builds *Builds selected int + settings *Settings } -func NewWidget(app *tview.Application, pages *tview.Pages) *Widget { +func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), TextWidget: wtf.NewTextWidget(app, "TravisCI", "travisci", true), + + settings: settings, } widget.HelpfulWidget.SetView(widget.View) @@ -51,7 +54,7 @@ func (widget *Widget) Refresh() { return } - builds, err := BuildsFor() + builds, err := BuildsFor(widget.settings.apiKey, widget.settings.pro) if err != nil { widget.View.SetWrap(true)