-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
rates.go
64 lines (60 loc) · 1.21 KB
/
rates.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"time"
)
var (
USDrates []*MarketRate
)
func FindCoinRate(coin string) *MarketRate {
for _, v := range USDrates {
if coin == v.Symbol {
return v
}
}
return nil
}
func FetchCoinMarketCap() {
pages := 15
var limit int
currency := "USD"
var tempRates []*MarketRate
for i := 0; i <= pages; i++ {
url := fmt.Sprintf("https://api.coinmarketcap.com/v2/ticker/?start=%v&convert=%v", limit, currency)
res, err := httpGet(url, "GET", nil)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
var coinrates CoinMarketCapResponse
err = json.Unmarshal(body, &coinrates)
var tickers []*Ticker
for _, v := range coinrates.Data {
tickers = append(tickers, v)
}
for _, t := range tickers {
var price float64
for _, r := range t.Quotes {
price = r.Price
}
rate := &MarketRate{
Coin: t.Name,
Symbol: t.Symbol,
Price: price,
}
tempRates = append(tempRates, rate)
}
limit += 101
time.Sleep(1 * time.Second)
}
USDrates = tempRates
fmt.Println("Total Coin Market Cap USD Rates: ", len(USDrates))
}