package main
import (
"encoding/json"
"log"
"net/http"
"github.com/vugu/vugu"
)
type Root struct {
bpi bpi
isLoading bool
}
type bpi struct {
Time struct {
Updated string `json:"updated"`
} `json:"time"`
BPI map[string]struct {
Code string `json:"code"`
Symbol string `json:"symbol"`
RateFloat float64 `json:"rate_float"`
} `json:"bpi"`
}
var c Root
func (c *Root) HandleClick(event vugu.DOMEvent) {
c.bpi = bpi{}
go func(ee vugu.EventEnv) {
ee.Lock()
c.isLoading = true
ee.UnlockRender()
res, err := http.Get("https://api.coindesk.com/v1/bpi/currentprice.json")
if err != nil {
log.Printf("Error fetch()ing: %v", err)
return
}
defer res.Body.Close()
var newb bpi
err = json.NewDecoder(res.Body).Decode(&newb)
if err != nil {
log.Printf("Error JSON decoding: %v", err)
return
}
ee.Lock()
defer ee.UnlockRender()
c.bpi = newb
c.isLoading = false
}(event.EventEnv())
}