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

WTF-400 Cryptolive extracted to new config format

This commit is contained in:
Chris Cummer 2019-04-14 10:04:58 -07:00
parent 73e0e18ebc
commit 27b4274d38
8 changed files with 254 additions and 62 deletions

View File

@ -202,7 +202,8 @@ func makeWidget(app *tview.Application, pages *tview.Pages, widgetName string) w
cfg := cmdrunner.NewSettingsFromYAML(wtf.Config) cfg := cmdrunner.NewSettingsFromYAML(wtf.Config)
widget = cmdrunner.NewWidget(app, cfg) widget = cmdrunner.NewWidget(app, cfg)
case "cryptolive": case "cryptolive":
widget = cryptolive.NewWidget(app) cfg := cryptolive.NewSettingsFromYAML(wtf.Config)
widget = cryptolive.NewWidget(app, cfg)
case "datadog": case "datadog":
widget = datadog.NewWidget(app) widget = datadog.NewWidget(app)
case "gcal": case "gcal":

View File

@ -0,0 +1,63 @@
package price
import (
"github.com/olebedev/config"
"github.com/wtfutil/wtf/cfg"
)
type colors struct {
from struct {
name string
displayName string
}
to struct {
name string
price string
}
top struct {
from struct {
name string
displayName string
}
to struct {
name string
field string
value string
}
}
}
type Settings struct {
colors
common *cfg.Common
currencies map[string]interface{}
top map[string]interface{}
}
func NewSettingsFromYAML(ymlConfig *config.Config) *Settings {
localConfig, _ := ymlConfig.Get("wtf.mods.cryptolive")
currencies, _ := localConfig.Map("currencies")
top, _ := localConfig.Map("top")
settings := Settings{
common: cfg.NewCommonSettingsFromYAML(ymlConfig),
currencies: currencies,
top: top,
}
settings.colors.from.name = localConfig.UString("colors.from.name")
settings.colors.from.displayName = localConfig.UString("colors.from.displayName")
settings.colors.to.name = localConfig.UString("colors.to.name")
settings.colors.to.price = localConfig.UString("colors.to.price")
settings.colors.top.from.name = localConfig.UString("colors.top.from.name")
settings.colors.top.from.displayName = localConfig.UString("colors.top.from.displayName")
settings.colors.top.to.name = localConfig.UString("colors.top.to.name")
settings.colors.top.to.field = localConfig.UString("colors.top.to.field")
settings.colors.top.to.value = localConfig.UString("colors.top.to.value")
return &settings
}

View File

@ -16,6 +16,7 @@ var ok = true
// Widget define wtf widget to register widget later // Widget define wtf widget to register widget later
type Widget struct { type Widget struct {
*list *list
settings *Settings
Result string Result string
@ -23,8 +24,10 @@ type Widget struct {
} }
// NewWidget Make new instance of widget // NewWidget Make new instance of widget
func NewWidget() *Widget { func NewWidget(settings *Settings) *Widget {
widget := Widget{} widget := Widget{
settings: settings,
}
widget.setList() widget.setList()
@ -32,11 +35,9 @@ func NewWidget() *Widget {
} }
func (widget *Widget) setList() { func (widget *Widget) setList() {
currenciesMap, _ := wtf.Config.Map("wtf.mods.cryptolive.currencies")
widget.list = &list{} widget.list = &list{}
for currency := range currenciesMap { for currency := range widget.settings.currencies {
displayName, _ := wtf.Config.String("wtf.mods.cryptolive.currencies." + currency + ".displayName") displayName, _ := wtf.Config.String("wtf.mods.cryptolive.currencies." + currency + ".displayName")
toList := getToList(currency) toList := getToList(currency)
widget.list.addItem(currency, displayName, toList) widget.list.addItem(currency, displayName, toList)
@ -66,16 +67,23 @@ func (widget *Widget) Refresh(wg *sync.WaitGroup) {
func (widget *Widget) display() { func (widget *Widget) display() {
str := "" str := ""
var (
fromNameColor = wtf.Config.UString("wtf.mods.cryptolive.colors.from.name", "coral")
fromDisplayNameColor = wtf.Config.UString("wtf.mods.cryptolive.colors.from.displayName", "grey")
toNameColor = wtf.Config.UString("wtf.mods.cryptolive.colors.to.name", "white")
toPriceColor = wtf.Config.UString("wtf.mods.cryptolive.colors.to.price", "green")
)
for _, item := range widget.list.items { for _, item := range widget.list.items {
str += fmt.Sprintf(" [%s]%s[%s] (%s)\n", fromNameColor, item.displayName, fromDisplayNameColor, item.name) str += fmt.Sprintf(
" [%s]%s[%s] (%s)\n",
widget.settings.colors.from.name,
item.displayName,
widget.settings.colors.from.name,
item.name,
)
for _, toItem := range item.to { for _, toItem := range item.to {
str += fmt.Sprintf("\t[%s]%s: [%s]%f\n", toNameColor, toItem.name, toPriceColor, toItem.price) str += fmt.Sprintf(
"\t[%s]%s: [%s]%f\n",
widget.settings.colors.to.name,
toItem.name,
widget.settings.colors.to.price,
toItem.price,
)
} }
str += "\n" str += "\n"
} }

View File

@ -0,0 +1,71 @@
package cryptolive
import (
"github.com/olebedev/config"
"github.com/wtfutil/wtf/cfg"
"github.com/wtfutil/wtf/modules/cryptoexchanges/cryptolive/price"
"github.com/wtfutil/wtf/modules/cryptoexchanges/cryptolive/toplist"
)
type colors struct {
from struct {
name string
displayName string
}
to struct {
name string
price string
}
top struct {
from struct {
name string
displayName string
}
to struct {
name string
field string
value string
}
}
}
type Settings struct {
colors
common *cfg.Common
currencies map[string]interface{}
top map[string]interface{}
priceSettings *price.Settings
toplistSettings *toplist.Settings
}
func NewSettingsFromYAML(ymlConfig *config.Config) *Settings {
localConfig, _ := ymlConfig.Get("wtf.mods.cryptolive")
currencies, _ := localConfig.Map("currencies")
top, _ := localConfig.Map("top")
settings := Settings{
common: cfg.NewCommonSettingsFromYAML(ymlConfig),
currencies: currencies,
top: top,
priceSettings: price.NewSettingsFromYAML(ymlConfig),
toplistSettings: toplist.NewSettingsFromYAML(ymlConfig),
}
settings.colors.from.name = localConfig.UString("colors.from.name")
settings.colors.from.displayName = localConfig.UString("colors.from.displayName")
settings.colors.to.name = localConfig.UString("colors.to.name")
settings.colors.to.price = localConfig.UString("colors.to.price")
settings.colors.top.from.name = localConfig.UString("colors.top.from.name")
settings.colors.top.from.displayName = localConfig.UString("colors.top.from.displayName")
settings.colors.top.to.name = localConfig.UString("colors.top.to.name")
settings.colors.top.to.field = localConfig.UString("colors.top.to.field")
settings.colors.top.to.value = localConfig.UString("colors.top.to.value")
return &settings
}

View File

@ -7,49 +7,54 @@ func (widget *Widget) display() {
for _, fromCurrency := range widget.list.items { for _, fromCurrency := range widget.list.items {
str += fmt.Sprintf( str += fmt.Sprintf(
"[%s]%s [%s](%s)\n", "[%s]%s [%s](%s)\n",
widget.colors.from.displayName, widget.settings.colors.from.displayName,
fromCurrency.displayName, fromCurrency.displayName,
widget.colors.from.name, widget.settings.colors.from.name,
fromCurrency.name, fromCurrency.name,
) )
str += makeToListText(fromCurrency.to, widget.colors) str += widget.makeToListText(fromCurrency.to)
} }
widget.Result = str widget.Result = str
} }
func makeToListText(toList []*tCurrency, colors textColors) string { func (widget *Widget) makeToListText(toList []*tCurrency) string {
str := "" str := ""
for _, toCurrency := range toList { for _, toCurrency := range toList {
str += makeToText(toCurrency, colors) str += widget.makeToText(toCurrency)
} }
return str return str
} }
func makeToText(toCurrency *tCurrency, colors textColors) string { func (widget *Widget) makeToText(toCurrency *tCurrency) string {
str := "" str := ""
str += fmt.Sprintf(" [%s]%s\n", colors.to.name, toCurrency.name) str += fmt.Sprintf(
" [%s]%s\n",
widget.settings.colors.to.name,
toCurrency.name,
)
for _, info := range toCurrency.info { for _, info := range toCurrency.info {
str += makeInfoText(info, colors) str += widget.makeInfoText(info)
str += "\n\n" str += "\n\n"
} }
return str return str
} }
func makeInfoText(info tInfo, colors textColors) string { func (widget *Widget) makeInfoText(info tInfo) string {
return fmt.Sprintf( return fmt.Sprintf(
" [%s]Exchange: [%s]%s\n", " [%s]Exchange: [%s]%s\n",
colors.to.field, widget.settings.colors.top.to.field,
colors.to.value, widget.settings.colors.top.to.value,
info.exchange, info.exchange,
) + ) +
fmt.Sprintf( fmt.Sprintf(
" [%s]Volume(24h): [%s]%f-[%s]%f", " [%s]Volume(24h): [%s]%f-[%s]%f",
colors.to.field, widget.settings.colors.top.to.field,
colors.to.value, widget.settings.colors.top.to.value,
info.volume24h, info.volume24h,
colors.to.value, widget.settings.colors.top.to.value,
info.volume24hTo, info.volume24hTo,
) )
} }

View File

@ -0,0 +1,63 @@
package toplist
import (
"github.com/olebedev/config"
"github.com/wtfutil/wtf/cfg"
)
type colors struct {
from struct {
name string
displayName string
}
to struct {
name string
price string
}
top struct {
from struct {
name string
displayName string
}
to struct {
name string
field string
value string
}
}
}
type Settings struct {
colors
common *cfg.Common
currencies map[string]interface{}
top map[string]interface{}
}
func NewSettingsFromYAML(ymlConfig *config.Config) *Settings {
localConfig, _ := ymlConfig.Get("wtf.mods.cryptolive")
currencies, _ := localConfig.Map("currencies")
top, _ := localConfig.Map("top")
settings := Settings{
common: cfg.NewCommonSettingsFromYAML(ymlConfig),
currencies: currencies,
top: top,
}
settings.colors.from.name = localConfig.UString("colors.from.name")
settings.colors.from.displayName = localConfig.UString("colors.from.displayName")
settings.colors.to.name = localConfig.UString("colors.to.name")
settings.colors.to.price = localConfig.UString("colors.to.price")
settings.colors.top.from.name = localConfig.UString("colors.top.from.name")
settings.colors.top.from.displayName = localConfig.UString("colors.top.from.displayName")
settings.colors.top.to.name = localConfig.UString("colors.top.to.name")
settings.colors.top.to.field = localConfig.UString("colors.top.to.field")
settings.colors.top.to.value = localConfig.UString("colors.top.to.value")
return &settings
}

View File

@ -13,44 +13,30 @@ import (
var baseURL = "https://min-api.cryptocompare.com/data/top/exchanges" var baseURL = "https://min-api.cryptocompare.com/data/top/exchanges"
type textColors struct {
from struct {
name string
displayName string
}
to struct {
name string
field string
value string
}
}
// Widget Toplist Widget // Widget Toplist Widget
type Widget struct { type Widget struct {
Result string Result string
RefreshInterval int RefreshInterval int
list *cList list *cList
settings *Settings
colors textColors
} }
// NewWidget Make new toplist widget // NewWidget Make new toplist widget
func NewWidget() *Widget { func NewWidget(settings *Settings) *Widget {
widget := Widget{} widget := Widget{
settings: settings,
}
widget.list = &cList{} widget.list = &cList{}
widget.setList() widget.setList()
widget.config()
return &widget return &widget
} }
func (widget *Widget) setList() { func (widget *Widget) setList() {
currenciesMap, _ := wtf.Config.Map("wtf.mods.cryptolive.top") for fromCurrency := range widget.settings.top {
for fromCurrency := range currenciesMap {
displayName := wtf.Config.UString("wtf.mods.cryptolive.top."+fromCurrency+".displayName", "") displayName := wtf.Config.UString("wtf.mods.cryptolive.top."+fromCurrency+".displayName", "")
limit := wtf.Config.UInt("wtf.mods.cryptolive.top."+fromCurrency+".limit", 1) limit := wtf.Config.UInt("wtf.mods.cryptolive.top."+fromCurrency+".limit", 1)
widget.list.addItem(fromCurrency, displayName, limit, makeToList(fromCurrency, limit)) widget.list.addItem(fromCurrency, displayName, limit, makeToList(fromCurrency, limit))
@ -70,15 +56,6 @@ func makeToList(fCurrencyName string, limit int) (list []*tCurrency) {
return return
} }
func (widget *Widget) config() {
// set colors
widget.colors.from.name = wtf.Config.UString("wtf.mods.cryptolive.colors.top.from.name", "coral")
widget.colors.from.displayName = wtf.Config.UString("wtf.mods.cryptolive.colors.top.from.displayName", "grey")
widget.colors.to.name = wtf.Config.UString("wtf.mods.cryptolive.colors.top.to.name", "red")
widget.colors.to.field = wtf.Config.UString("wtf.mods.cryptolive.colors.top.to.field", "white")
widget.colors.to.value = wtf.Config.UString("wtf.mods.cryptolive.colors.top.to.value", "value")
}
/* -------------------- Exported Functions -------------------- */ /* -------------------- Exported Functions -------------------- */
// Refresh & update after interval time // Refresh & update after interval time

View File

@ -13,16 +13,20 @@ import (
// Widget define wtf widget to register widget later // Widget define wtf widget to register widget later
type Widget struct { type Widget struct {
wtf.TextWidget wtf.TextWidget
priceWidget *price.Widget priceWidget *price.Widget
toplistWidget *toplist.Widget toplistWidget *toplist.Widget
settings *Settings
} }
// NewWidget Make new instance of widget // NewWidget Make new instance of widget
func NewWidget(app *tview.Application) *Widget { func NewWidget(app *tview.Application, settings *Settings) *Widget {
widget := Widget{ widget := Widget{
TextWidget: wtf.NewTextWidget(app, "CryptoLive", "cryptolive", false), TextWidget: wtf.NewTextWidget(app, "CryptoLive", "cryptolive", false),
priceWidget: price.NewWidget(),
toplistWidget: toplist.NewWidget(), priceWidget: price.NewWidget(settings.priceSettings),
toplistWidget: toplist.NewWidget(settings.toplistSettings),
settings: settings,
} }
widget.priceWidget.RefreshInterval = widget.RefreshInterval() widget.priceWidget.RefreshInterval = widget.RefreshInterval()