84 lines
2.1 KiB
Go
84 lines
2.1 KiB
Go
package heliumapi
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
)
|
|
|
|
type BlockchainStats struct {
|
|
Data struct {
|
|
BlockTime struct {
|
|
LastDay struct {
|
|
Avg float64 `json:"avg"`
|
|
Stddev float64 `json:"stddev"`
|
|
} `json:"last_day"`
|
|
LastHour struct {
|
|
Avg float64 `json:"avg"`
|
|
Stddev float64 `json:"stddev"`
|
|
} `json:"last_hour"`
|
|
LastMonth struct {
|
|
Avg float64 `json:"avg"`
|
|
Stddev float64 `json:"stddev"`
|
|
} `json:"last_month"`
|
|
LastWeek struct {
|
|
Avg float64 `json:"avg"`
|
|
Stddev float64 `json:"stddev"`
|
|
} `json:"last_week"`
|
|
} `json:"block_times"`
|
|
ChallengeCount struct {
|
|
Active int `json:"active"`
|
|
LastDay int `json:"last_day"`
|
|
} `json:"challenge_counts"`
|
|
Counts struct {
|
|
Validators int `json:"validators"`
|
|
Ouis int `json:"ouis"`
|
|
HotspotsDataonly int `json:"hotspots_dataonly"`
|
|
Blocks int `json:"blocks"`
|
|
Challenges int `json:"challenges"`
|
|
Cities int `json:"cities"`
|
|
ConsensusGroups int `json:"consensus_groups"`
|
|
Countries int `json:"countries"`
|
|
Hotspots int `json:"hotspots"`
|
|
Transactions int `json:"transactions"`
|
|
} `json:"counts"`
|
|
ElectionTimes struct {
|
|
LastDay struct {
|
|
Avg float64 `json:"avg"`
|
|
Stddev float64 `json:"stddev"`
|
|
} `json:"last_day"`
|
|
LastHour struct {
|
|
Avg float64 `json:"avg"`
|
|
Stddev float64 `json:"stddev"`
|
|
} `json:"last_hour"`
|
|
LastMonth struct {
|
|
Avg float64 `json:"avg"`
|
|
Stddev float64 `json:"stddev"`
|
|
} `json:"last_month"`
|
|
LastWeek struct {
|
|
Avg float64 `json:"avg"`
|
|
Stddev float64 `json:"stddev"`
|
|
} `json:"last_week"`
|
|
} `json:"election_times"`
|
|
TokenSupply float64 `json:"token_supply"`
|
|
} `json:"data"`
|
|
}
|
|
|
|
func GetBlockchainStats() (*BlockchainStats, error) {
|
|
const path = "/v1/stats"
|
|
|
|
// query the api
|
|
respBody, err := getHeliumApi(path, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// unmarshal the response
|
|
respobject := BlockchainStats{}
|
|
err = json.Unmarshal(respBody, &respobject)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to unmarshal response from path %v: %v", path, err)
|
|
}
|
|
|
|
return &respobject, nil
|
|
}
|