1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

WTF-400 Rollbar extracted to new config format

This commit is contained in:
Chris Cummer 2019-04-16 02:13:21 -07:00
parent d3eef146cb
commit 0403b75fe8
4 changed files with 57 additions and 15 deletions

View File

@ -271,7 +271,8 @@ func makeWidget(app *tview.Application, pages *tview.Pages, widgetName string) w
settings := resourceusage.NewSettingsFromYAML(wtf.Config)
widget = resourceusage.NewWidget(app, settings)
case "rollbar":
widget = rollbar.NewWidget(app, pages)
settings := rollbar.NewSettingsFromYAML(wtf.Config)
widget = rollbar.NewWidget(app, pages, settings)
case "security":
settings := security.NewSettingsFromYAML(wtf.Config)
widget = security.NewWidget(app, settings)

View File

@ -12,10 +12,9 @@ import (
"github.com/wtfutil/wtf/wtf"
)
func CurrentActiveItems() (*ActiveItems, error) {
func CurrentActiveItems(accessToken string) (*ActiveItems, error) {
items := &ActiveItems{}
accessToken := wtf.Config.UString("wtf.mods.rollbar.accessToken", "")
rollbarAPIURL.Host = "api.rollbar.com"
rollbarAPIURL.Path = "/api/1/items"
resp, err := rollbarItemRequest(accessToken)

View File

@ -0,0 +1,34 @@
package rollbar
import (
"github.com/olebedev/config"
"github.com/wtfutil/wtf/cfg"
)
type Settings struct {
common *cfg.Common
accessToken string
activeOnly bool
assignedToName string
count int
projectName string
projectOwner string
}
func NewSettingsFromYAML(ymlConfig *config.Config) *Settings {
localConfig, _ := ymlConfig.Get("wtf.mods.rollbar")
settings := Settings{
common: cfg.NewCommonSettingsFromYAML(ymlConfig),
accessToken: localConfig.UString("accessToken"),
activeOnly: localConfig.UBool("activeOnly"),
assignedToName: localConfig.UString("assignedToName"),
count: localConfig.UInt("count", 10),
projectName: localConfig.UString("projectName", "Items"),
projectOwner: localConfig.UString("projectOwner"),
}
return &settings
}

View File

@ -29,13 +29,17 @@ type Widget struct {
items *Result
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, "Rollbar", "rollbar", true),
settings: settings,
}
widget.HelpfulWidget.SetView(widget.View)
widget.unselect()
@ -51,7 +55,7 @@ func (widget *Widget) Refresh() {
return
}
items, err := CurrentActiveItems()
items, err := CurrentActiveItems(widget.settings.accessToken)
if err != nil {
widget.View.SetWrap(true)
@ -72,16 +76,14 @@ func (widget *Widget) display() {
}
widget.View.SetWrap(false)
projectName := wtf.Config.UString("wtf.mods.rollbar.projectName", "Items")
widget.View.SetTitle(widget.ContextualTitle(fmt.Sprintf("%s - %s", widget.Name(), projectName)))
widget.View.SetTitle(widget.ContextualTitle(fmt.Sprintf("%s - %s", widget.Name(), widget.settings.projectName)))
widget.View.SetText(widget.contentFrom(widget.items))
}
func (widget *Widget) contentFrom(result *Result) string {
var str string
count := wtf.Config.UInt("wtf.mods.rollbar.count", 10)
if len(result.Items) > count {
result.Items = result.Items[:count]
if len(result.Items) > widget.settings.count {
result.Items = result.Items[:widget.settings.count]
}
for idx, item := range result.Items {
@ -151,12 +153,18 @@ func (widget *Widget) prev() {
}
func (widget *Widget) openBuild() {
sel := widget.selected
projectOwner := wtf.Config.UString("wtf.mods.rollbar.projectOwner", "")
projectName := wtf.Config.UString("wtf.mods.rollbar.projectName", "")
if sel >= 0 && widget.items != nil && sel < len(widget.items.Items) {
if widget.selected >= 0 && widget.items != nil && widget.selected < len(widget.items.Items) {
item := &widget.items.Items[widget.selected]
wtf.OpenFile(fmt.Sprintf("https://rollbar.com/%s/%s/%s/%d", projectOwner, projectName, "items", item.ID))
wtf.OpenFile(
fmt.Sprintf(
"https://rollbar.com/%s/%s/%s/%d",
widget.settings.projectOwner,
widget.settings.projectName,
"items",
item.ID,
),
)
}
}