diff --git a/README.md b/README.md index 7fdc50c..b897c50 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,15 @@ List of shortcuts: export PATH=$PATH:$GOPATH/bin ``` +## TODO + +- markets/exchanges +- search, using / +- euro/yen +- mark favorites +- cryptocompare api +- more cool stuff + ## Authors - [Miguel Mota](https://github.com/miguelmota) diff --git a/cointop/cointop.go b/cointop/cointop.go index 16f0bba..25be57d 100644 --- a/cointop/cointop.go +++ b/cointop/cointop.go @@ -1,14 +1,12 @@ package cointop import ( - "fmt" "log" "github.com/gizak/termui" "github.com/jroimartin/gocui" "github.com/miguelmota/cointop/pkg/api" apitypes "github.com/miguelmota/cointop/pkg/api/types" - "github.com/miguelmota/cointop/pkg/pad" "github.com/miguelmota/cointop/pkg/table" ) @@ -37,32 +35,6 @@ type Cointop struct { coins []*apitypes.Coin } -func (ct *Cointop) rowChanged() { - ct.showLink() -} - -func (ct *Cointop) fetchData() ([]*apitypes.Coin, error) { - result := []*apitypes.Coin{} - coins, err := ct.api.GetAllCoinData() - if err != nil { - return result, err - } - - for i := range coins { - coin := coins[i] - result = append(result, &coin) - } - - return result, nil -} - -func (ct *Cointop) updateMarket() error { - maxX, _ := ct.g.Size() - s := "" - fmt.Fprintln(ct.marketview, pad.Right(fmt.Sprintf("30D %s", s), maxX, " ")) - return nil -} - // Run runs cointop func Run() { g, err := gocui.NewGui(gocui.Output256) diff --git a/cointop/events.go b/cointop/events.go new file mode 100644 index 0000000..62ec6b1 --- /dev/null +++ b/cointop/events.go @@ -0,0 +1,5 @@ +package cointop + +func (ct *Cointop) rowChanged() { + ct.showLink() +} diff --git a/cointop/layout.go b/cointop/layout.go index 54429c1..d7cfc5c 100644 --- a/cointop/layout.go +++ b/cointop/layout.go @@ -2,6 +2,7 @@ package cointop import ( "github.com/jroimartin/gocui" + apitypes "github.com/miguelmota/cointop/pkg/api/types" "github.com/miguelmota/cointop/pkg/pad" "github.com/miguelmota/cointop/pkg/table" ) @@ -40,7 +41,7 @@ func (ct *Cointop) layout(g *gocui.Gui) error { t := table.New().SetWidth(maxX) headers := []string{ pad.Right("[r]ank", 7, " "), - pad.Right("[n]ame", 22, " "), + pad.Right("[n]ame", 18, " "), pad.Right("[s]ymbol", 8, " "), pad.Left("[p]rice", 13, " "), pad.Left("[m]arket cap", 17, " "), @@ -99,3 +100,18 @@ func (ct *Cointop) layout(g *gocui.Gui) error { return nil } + +func (ct *Cointop) fetchData() ([]*apitypes.Coin, error) { + result := []*apitypes.Coin{} + coins, err := ct.api.GetAllCoinData() + if err != nil { + return result, err + } + + for i := range coins { + coin := coins[i] + result = append(result, &coin) + } + + return result, nil +} diff --git a/cointop/market.go b/cointop/market.go new file mode 100644 index 0000000..28c9ba9 --- /dev/null +++ b/cointop/market.go @@ -0,0 +1,18 @@ +package cointop + +import ( + "fmt" + + humanize "github.com/dustin/go-humanize" + "github.com/miguelmota/cointop/pkg/pad" +) + +func (ct *Cointop) updateMarket() error { + maxX, _ := ct.g.Size() + market, err := ct.api.GetGlobalMarketData() + if err != nil { + return err + } + fmt.Fprintln(ct.marketview, pad.Right(fmt.Sprintf("%10.stotal market cap: %s", "", humanize.Commaf(market.TotalMarketCapUSD)), maxX, " ")) + return nil +} diff --git a/pkg/api/cmc/cmc.go b/pkg/api/cmc/cmc.go index 4571bdb..acf334b 100644 --- a/pkg/api/cmc/cmc.go +++ b/pkg/api/cmc/cmc.go @@ -69,3 +69,21 @@ func (s *Service) GetGlobalMarketGraphData(start int64, end int64) (types.Market ret.VolumeUSD = graphData.VolumeUSD return ret, nil } + +// GetGlobalMarketData gets global market data +func (s *Service) GetGlobalMarketData() (types.GlobalMarketData, error) { + ret := types.GlobalMarketData{} + market, err := cmc.GetGlobalMarketData() + if err != nil { + return ret, err + } + ret = types.GlobalMarketData{ + TotalMarketCapUSD: market.TotalMarketCapUSD, + Total24HVolumeUSD: market.Total24HVolumeUSD, + BitcoinPercentageOfMarketCap: market.BitcoinPercentageOfMarketCap, + ActiveCurrencies: market.ActiveCurrencies, + ActiveAssets: market.ActiveCurrencies, + ActiveMarkets: market.ActiveAssets, + } + return ret, nil +} diff --git a/pkg/api/interface.go b/pkg/api/interface.go index 4ee9b69..c9eea9f 100644 --- a/pkg/api/interface.go +++ b/pkg/api/interface.go @@ -9,8 +9,8 @@ type Interface interface { GetAllCoinData() (map[string]types.Coin, error) GetCoinGraphData(coin string, start int64, end int64) (types.CoinGraph, error) GetGlobalMarketGraphData(start int64, end int64) (types.MarketGraph, error) + GetGlobalMarketData() (types.GlobalMarketData, error) //GetCoinData(coin string) (types.Coin, error) - //GetGlobalMarketData() (types.GlobalMarketData, error) //GetAltcoinMarketGraphData(start int64, end int64) (types.MarketGraph, error) //GetCoinPriceUSD(coin string) (float64, error) //GetCoinMarkets(coin string) ([]types.Market, error)