diff --git a/exporter.go b/exporter.go index 282e884..2a21e20 100644 --- a/exporter.go +++ b/exporter.go @@ -347,7 +347,7 @@ func (e *Exporter) collectOracleMetrics(wg *sync.WaitGroup, ch chan<- prometheus } ch <- prometheus.MustNewConstMetric( - oraclePrice.Desc, oraclePrice.Type, float64(currentOraclePrice.Data.Price)/100000000, + oraclePrice.Desc, oraclePrice.Type, float64(currentOraclePrice.Price)/100000000, ) } @@ -362,34 +362,34 @@ func (e *Exporter) collectStatsMetrics(wg *sync.WaitGroup, ch chan<- prometheus. } ch <- prometheus.MustNewConstMetric( - statsValidators.Desc, statsValidators.Type, float64(blockchainStats.Data.Counts.Validators), + statsValidators.Desc, statsValidators.Type, float64(blockchainStats.Counts.Validators), ) ch <- prometheus.MustNewConstMetric( - statsOuis.Desc, statsOuis.Type, float64(blockchainStats.Data.Counts.Ouis), + statsOuis.Desc, statsOuis.Type, float64(blockchainStats.Counts.Ouis), ) ch <- prometheus.MustNewConstMetric( - statsHotspotsDataOnly.Desc, statsHotspotsDataOnly.Type, float64(blockchainStats.Data.Counts.HotspotsDataonly), + statsHotspotsDataOnly.Desc, statsHotspotsDataOnly.Type, float64(blockchainStats.Counts.HotspotsDataonly), ) ch <- prometheus.MustNewConstMetric( - statsBlocks.Desc, statsBlocks.Type, float64(blockchainStats.Data.Counts.Blocks), + statsBlocks.Desc, statsBlocks.Type, float64(blockchainStats.Counts.Blocks), ) ch <- prometheus.MustNewConstMetric( - statsChallenges.Desc, statsChallenges.Type, float64(blockchainStats.Data.Counts.Challenges), + statsChallenges.Desc, statsChallenges.Type, float64(blockchainStats.Counts.Challenges), ) ch <- prometheus.MustNewConstMetric( - statsCities.Desc, statsCities.Type, float64(blockchainStats.Data.Counts.Cities), + statsCities.Desc, statsCities.Type, float64(blockchainStats.Counts.Cities), ) ch <- prometheus.MustNewConstMetric( - statsConsensusGroups.Desc, statsConsensusGroups.Type, float64(blockchainStats.Data.Counts.ConsensusGroups), + statsConsensusGroups.Desc, statsConsensusGroups.Type, float64(blockchainStats.Counts.ConsensusGroups), ) ch <- prometheus.MustNewConstMetric( - statsCountries.Desc, statsCountries.Type, float64(blockchainStats.Data.Counts.Countries), + statsCountries.Desc, statsCountries.Type, float64(blockchainStats.Counts.Countries), ) ch <- prometheus.MustNewConstMetric( - statsHotspots.Desc, statsHotspots.Type, float64(blockchainStats.Data.Counts.Hotspots), + statsHotspots.Desc, statsHotspots.Type, float64(blockchainStats.Counts.Hotspots), ) ch <- prometheus.MustNewConstMetric( - statsTokenSupply.Desc, statsTokenSupply.Type, blockchainStats.Data.TokenSupply, + statsTokenSupply.Desc, statsTokenSupply.Type, blockchainStats.TokenSupply, ) } @@ -404,7 +404,7 @@ func (e *Exporter) collectAccountMetrics(wg *sync.WaitGroup, ch chan<- prometheu } ch <- prometheus.MustNewConstMetric( - accountBalanceHnt.Desc, accountBalanceHnt.Type, float64(accountForAddress.Data.Balance), + accountBalanceHnt.Desc, accountBalanceHnt.Type, float64(accountForAddress.Balance), account.Address, ) } @@ -419,7 +419,7 @@ func (e *Exporter) collectAccountActivityMetrics(wg *sync.WaitGroup, ch chan<- p return } - for accType, count := range accountActivityForAddress.Data { + for accType, count := range *accountActivityForAddress { ch <- prometheus.MustNewConstMetric( accountActivity.Desc, accountActivity.Type, float64(count), account.Address, accType, @@ -438,7 +438,7 @@ func (e *Exporter) collectAccountRewardsTotalMetrics(wg *sync.WaitGroup, ch chan } ch <- prometheus.MustNewConstMetric( - accountRewardsHnt.Desc, accountRewardsHnt.Type, accountRewardTotalsForAddress.Data.Sum, + accountRewardsHnt.Desc, accountRewardsHnt.Type, accountRewardTotalsForAddress.Sum, account.Address, ) } @@ -459,7 +459,7 @@ func (e *Exporter) collectAccountTransactionsMetrics(wg *sync.WaitGroup, ch chan return } - // logic based on https://github.com/helium/hotspot-app/blob/918563fba84d1abf4554a43a4d42bb838d017bd3/src/features/wallet/root/useActivityItem.tsx#L336 + // impl based on https://github.com/helium/hotspot-app/blob/918563fba84d1abf4554a43a4d42bb838d017bd3/src/features/wallet/root/useActivityItem.tsx#L336 for _, activity := range activities.AddGatewayV1 { account.Tx.WithdrawalTotal += activity.StakingFee } @@ -539,7 +539,7 @@ func (e *Exporter) collectHotspotMetrics(wg *sync.WaitGroup, ch chan<- prometheu return } - for _, hotspotData := range hotspotsForAddress.Data { + for _, hotspotData := range *hotspotsForAddress { // collect hotspot metric requiring extra queries in a new routine wg.Add(2) go e.collectHotspotActivityMetrics(wg, ch, account, hotspotData) @@ -582,7 +582,7 @@ func (e *Exporter) collectHotspotActivityMetrics(wg *sync.WaitGroup, ch chan<- p return } - for accType, count := range hotspotActivityForAddress.Data { + for accType, count := range *hotspotActivityForAddress { ch <- prometheus.MustNewConstMetric( hotspotActivity.Desc, hotspotActivity.Type, float64(count), account.Address, hotspotData.Address, hotspotData.Name, accType, @@ -601,7 +601,7 @@ func (e *Exporter) collectHotspotRewardsMetrics(wg *sync.WaitGroup, ch chan<- pr } ch <- prometheus.MustNewConstMetric( - hotspotRewardsHnt.Desc, hotspotRewardsHnt.Type, hotspotRewardTotalsForAddress.Data.Sum, + hotspotRewardsHnt.Desc, hotspotRewardsHnt.Type, hotspotRewardTotalsForAddress.Sum, account.Address, hotspotData.Address, hotspotData.Name, ) } diff --git a/heliumapi/accounts.go b/heliumapi/accounts.go index 372bbcd..8e29ebd 100644 --- a/heliumapi/accounts.go +++ b/heliumapi/accounts.go @@ -8,7 +8,7 @@ import ( "github.com/helium-blockchain-exporter/heliumapi/activity" ) -func GetAccountForAddress(account string) (*AccountResp, error) { +func GetAccountForAddress(account string) (*Account, error) { path := "/v1/accounts/" + account // query the api @@ -24,7 +24,7 @@ func GetAccountForAddress(account string) (*AccountResp, error) { return nil, fmt.Errorf("failed to unmarshal response from path %v: %v", path, err) } - return &respobject, nil + return &respobject.Data, nil } func GetActivityForAccount(account string, filterTypes []string, minTime *time.Time, maxTime *time.Time) (*activity.Activities, error) { @@ -57,7 +57,7 @@ func GetActivityForAccount(account string, filterTypes []string, minTime *time.T return activity.NewActivities(combinedResp) } -func GetActivityCountsForAccount(account string) (*ActivityCountsResp, error) { +func GetActivityCountsForAccount(account string) (*ActivityCounts, error) { path := "/v1/accounts/" + account + "/activity/count" // query the api @@ -73,10 +73,10 @@ func GetActivityCountsForAccount(account string) (*ActivityCountsResp, error) { return nil, fmt.Errorf("failed to unmarshal response from path %v: %v", path, err) } - return &respobject, nil + return &respobject.Data, nil } -func GetRewardTotalsForAccount(account string, minTime *time.Time, maxTime *time.Time) (*RewardTotalResp, error) { +func GetRewardTotalsForAccount(account string, minTime *time.Time, maxTime *time.Time) (*RewardTotal, error) { path := "/v1/accounts/" + account + "/rewards/sum" params := map[string]string{} if minTime != nil { @@ -99,10 +99,10 @@ func GetRewardTotalsForAccount(account string, minTime *time.Time, maxTime *time return nil, fmt.Errorf("failed to unmarshal response from path %v: %v", path, err) } - return &respobject, nil + return &respobject.Data, nil } -func GetHotspotsForAccount(account string) (*AccountHotspotsResp, error) { +func GetHotspotsForAccount(account string) (*[]AccountHotspot, error) { path := "/v1/accounts/" + account + "/hotspots" // query the api @@ -118,5 +118,5 @@ func GetHotspotsForAccount(account string) (*AccountHotspotsResp, error) { return nil, fmt.Errorf("failed to unmarshal response from path %v: %v", path, err) } - return &respobject, nil + return &respobject.Data, nil } diff --git a/heliumapi/activity/activities.go b/heliumapi/activity/activities.go index 708c0ec..d6c76a9 100644 --- a/heliumapi/activity/activities.go +++ b/heliumapi/activity/activities.go @@ -21,7 +21,6 @@ func NewActivities(resp ActivityResp) (*Activities, error) { if err := json.Unmarshal(activityRaw, &activityType); err != nil { return nil, fmt.Errorf("failed to unmarshal activity: %v", err) } - fmt.Println(activityType.Type) switch activityType.Type { case "add_gateway_v1": addGatewayV1 := AddGatewayV1{} diff --git a/heliumapi/hotspots.go b/heliumapi/hotspots.go index 0877d84..f29edfd 100644 --- a/heliumapi/hotspots.go +++ b/heliumapi/hotspots.go @@ -6,7 +6,7 @@ import ( "time" ) -func GetHotspotActivityCount(hotspot string) (*ActivityCountsResp, error) { +func GetHotspotActivityCount(hotspot string) (*ActivityCounts, error) { path := "/v1/hotspots/" + hotspot + "/activity/count" // query the api @@ -22,10 +22,10 @@ func GetHotspotActivityCount(hotspot string) (*ActivityCountsResp, error) { return nil, fmt.Errorf("failed to unmarshal response from path %v: %v", path, err) } - return &respobject, nil + return &respobject.Data, nil } -func GetRewardsTotalForHotspot(hotspot string, minTime *time.Time, maxTime *time.Time) (*RewardTotalResp, error) { +func GetRewardsTotalForHotspot(hotspot string, minTime *time.Time, maxTime *time.Time) (*RewardTotal, error) { path := "/v1/hotspots/" + hotspot + "/rewards/sum" params := map[string]string{} if minTime != nil { @@ -48,5 +48,5 @@ func GetRewardsTotalForHotspot(hotspot string, minTime *time.Time, maxTime *time return nil, fmt.Errorf("failed to unmarshal response from path %v: %v", path, err) } - return &respobject, nil + return &respobject.Data, nil } diff --git a/heliumapi/oracleprices.go b/heliumapi/oracleprices.go index 4339a37..20e7d79 100644 --- a/heliumapi/oracleprices.go +++ b/heliumapi/oracleprices.go @@ -5,7 +5,7 @@ import ( "fmt" ) -func GetCurrentOraclePrice() (*CurrentOraclePriceResp, error) { +func GetCurrentOraclePrice() (*CurrentOraclePrice, error) { const path = "/v1/oracle/prices/current" // query the api @@ -21,5 +21,5 @@ func GetCurrentOraclePrice() (*CurrentOraclePriceResp, error) { return nil, fmt.Errorf("failed to unmarshal response from path %v: %v", path, err) } - return &respobject, nil + return &respobject.Data, nil } diff --git a/heliumapi/stats.go b/heliumapi/stats.go index 429598f..b63ba1c 100644 --- a/heliumapi/stats.go +++ b/heliumapi/stats.go @@ -5,7 +5,7 @@ import ( "fmt" ) -func GetBlockchainStats() (*BlockchainStatsResp, error) { +func GetBlockchainStats() (*BlockchainStats, error) { const path = "/v1/stats" // query the api @@ -21,5 +21,5 @@ func GetBlockchainStats() (*BlockchainStatsResp, error) { return nil, fmt.Errorf("failed to unmarshal response from path %v: %v", path, err) } - return &respobject, nil + return &respobject.Data, nil } diff --git a/heliumapi/types.go b/heliumapi/types.go index c6d2440..b799681 100644 --- a/heliumapi/types.go +++ b/heliumapi/types.go @@ -58,9 +58,11 @@ type AccountHotspot struct { } type ActivityCountsResp struct { - Data map[string]int + Data ActivityCounts } +type ActivityCounts map[string]int + type RewardTotalResp struct { Meta struct { MinTime string `json:"min_time"`