mirror of https://github.com/miguelmota/cointop
abstract api
parent
459b83ad5e
commit
180edacd42
@ -0,0 +1,71 @@
|
||||
package apis
|
||||
|
||||
import (
|
||||
types "github.com/miguelmota/cointop/apis/types"
|
||||
cmc "github.com/miguelmota/go-coinmarketcap"
|
||||
)
|
||||
|
||||
// Service service
|
||||
type Service struct {
|
||||
}
|
||||
|
||||
// New new service
|
||||
func New() *Service {
|
||||
return &Service{}
|
||||
}
|
||||
|
||||
// GetAllCoinData gets all coin data
|
||||
func (s *Service) GetAllCoinData(limit int) (map[string]types.Coin, error) {
|
||||
ret := make(map[string]types.Coin)
|
||||
coins, err := cmc.GetAllCoinData(int(limit))
|
||||
if err != nil {
|
||||
return ret, err
|
||||
}
|
||||
for _, v := range coins {
|
||||
ret[v.ID] = types.Coin{
|
||||
ID: v.ID,
|
||||
Name: v.Name,
|
||||
Symbol: v.Symbol,
|
||||
Rank: v.Rank,
|
||||
PriceUSD: v.PriceUSD,
|
||||
PriceBTC: v.PriceBTC,
|
||||
USD24HVolume: v.USD24HVolume,
|
||||
MarketCapUSD: v.MarketCapUSD,
|
||||
AvailableSupply: v.AvailableSupply,
|
||||
TotalSupply: v.TotalSupply,
|
||||
PercentChange1H: v.PercentChange1H,
|
||||
PercentChange24H: v.PercentChange24H,
|
||||
PercentChange7D: v.PercentChange7D,
|
||||
LastUpdated: v.LastUpdated,
|
||||
}
|
||||
}
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
// GetCoinGraphData gets coin graph data
|
||||
func (s *Service) GetCoinGraphData(coin string, start int64, end int64) (types.CoinGraph, error) {
|
||||
ret := types.CoinGraph{}
|
||||
graphData, err := cmc.GetCoinGraphData(coin, start, end)
|
||||
if err != nil {
|
||||
return ret, err
|
||||
}
|
||||
|
||||
ret.MarketCapByAvailableSupply = graphData.MarketCapByAvailableSupply
|
||||
ret.PriceBTC = graphData.PriceBTC
|
||||
ret.PriceUSD = graphData.PriceUSD
|
||||
ret.VolumeUSD = graphData.VolumeUSD
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
// GetGlobalMarketGraphData gets global market graph data
|
||||
func (s *Service) GetGlobalMarketGraphData(start int64, end int64) (types.MarketGraph, error) {
|
||||
ret := types.MarketGraph{}
|
||||
graphData, err := cmc.GetGlobalMarketGraphData(start, end)
|
||||
if err != nil {
|
||||
return ret, err
|
||||
}
|
||||
|
||||
ret.MarketCapByAvailableSupply = graphData.MarketCapByAvailableSupply
|
||||
ret.VolumeUSD = graphData.VolumeUSD
|
||||
return ret, nil
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package apis
|
||||
|
||||
import (
|
||||
types "github.com/miguelmota/cointop/apis/types"
|
||||
)
|
||||
|
||||
// Interface interface
|
||||
type Interface interface {
|
||||
GetAllCoinData(limit int) (map[string]types.Coin, error)
|
||||
GetCoinGraphData(coin string, start int64, end int64) (types.CoinGraph, error)
|
||||
GetGlobalMarketGraphData(start int64, end int64) (types.MarketGraph, 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)
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package apis
|
||||
|
||||
// Coin struct
|
||||
type Coin struct {
|
||||
ID string
|
||||
Name string
|
||||
Symbol string
|
||||
Rank int
|
||||
PriceUSD float64
|
||||
PriceBTC float64
|
||||
USD24HVolume float64
|
||||
MarketCapUSD float64
|
||||
AvailableSupply float64
|
||||
TotalSupply float64
|
||||
PercentChange1H float64
|
||||
PercentChange24H float64
|
||||
PercentChange7D float64
|
||||
LastUpdated string
|
||||
}
|
||||
|
||||
// GlobalMarketData struct
|
||||
type GlobalMarketData struct {
|
||||
TotalMarketCapUSD float64
|
||||
Total24HVolumeUSD float64
|
||||
BitcoinPercentageOfMarketCap float64
|
||||
ActiveCurrencies int
|
||||
ActiveAssets int
|
||||
ActiveMarkets int
|
||||
}
|
||||
|
||||
// CoinGraph struct
|
||||
type CoinGraph struct {
|
||||
MarketCapByAvailableSupply [][]float64
|
||||
PriceBTC [][]float64
|
||||
PriceUSD [][]float64
|
||||
VolumeUSD [][]float64
|
||||
}
|
||||
|
||||
// Market struct
|
||||
type Market struct {
|
||||
Rank int
|
||||
Exchange string
|
||||
Pair string
|
||||
VolumeUSD float64
|
||||
Price float64
|
||||
VolumePercent float64
|
||||
Updated string
|
||||
}
|
||||
|
||||
// MarketGraph struct
|
||||
type MarketGraph struct {
|
||||
MarketCapByAvailableSupply [][]float64
|
||||
VolumeUSD [][]float64
|
||||
}
|
Loading…
Reference in New Issue