diff --git a/providers/bitcoin/fiat.go b/providers/bitcoin/fiat.go index dbb5d02..d87b8f8 100644 --- a/providers/bitcoin/fiat.go +++ b/providers/bitcoin/fiat.go @@ -5,6 +5,7 @@ import ( "net/http" ) +/* // CoinConvert BTC to CAD converter // example: https://api.coinconvert.net/convert/btc/cad?amount=1 const fiatConvertURL = "https://api.coinconvert.net/convert/btc/cad" @@ -39,3 +40,35 @@ func (c *client) ConvertBTCToCAD(amount int) (int, error) { } return (amount * int(fiatConversion.CAD*1000)) / 100000000, nil // one BTC = one hundred million satoshi's } +*/ + +const fiatConvertURL = "https://api.coingecko.com/api/v3/coins/bitcoin?localization=false&tickers=false&market_data=true&community_data=false&developer_data=false&sparkline=false" + +type FiatConversion struct { + MarketData struct { + CurrentPrice struct { + CAD int `json:"cad"` + } `json:"current_price"` + } `json:"market_data"` +} + +func (c *client) ConvertBTCToCAD(amount int) (int, error) { + fiatConversion := &FiatConversion{} + + req, err := http.NewRequest("GET", fiatConvertURL, nil) + if err != nil { + return 0, fmt.Errorf("failed to create new GET request: %v", err) + } + + res, err := c.httpClient.Do(req) + if err != nil { + return 0, fmt.Errorf("http GET request failed: %v", err) + } + + err = c.processResponse(res, fiatConversion) + if err != nil { + return 0, fmt.Errorf("failed to process response: %v", err) + } + + return (amount * int(fiatConversion.MarketData.CurrentPrice.CAD*1000)) / 100000000, nil // one BTC = one hundred million satoshi's +}