Помогите с реализацией на GO

111 views
Skip to first unread message

Bravo Soft

unread,
Jan 6, 2017, 10:43:39 AM1/6/17
to Golang Russian
С Наступившим!
Задача на первый взгляд простая... зная язык

есть приложение (бэкэнд на golang) не моё, желание доработать нет статистики

в main.go подключены два пакета storage и api
предположительно реализация где то в них

/storage/redis.go  и  /api/server.go

Суть реализации вывод в json дополнительных данных

сейчас по умолчанию выводятся следующие данные

localhost/api/stats

{"candidatesTotal":0,"hashrate":3851168635,"immatureTotal":2,"maturedTotal":3657,"minersTotal":15,"nodes":[{"difficulty":"13685085881799","height":"2930444","lastBeat":"1483363055","name":"main"}],"now":1483363057201,"stats":{"lastBlockFound":1483362193,"roundShares":3046000000000}}

необходимо вывести в таком формате

{"candidatesTotal":20,"hashrate":185189997113,"immatureTotal":25,"maturedTotal":131975,"minersTotal":92,"nodes":[{"difficulty":"13767102571317","height":"2930456","lastBeat":"1483363217","name":"nm"},{"difficulty":"13767102571317","height":"2930456","lastBeat":"1483363215","name":"hk"},{"difficulty":"11326502522726","height":"2868674","lastBeat":"1482507164","name":"miner"},{"difficulty":"11588545043964","height":"2893452","lastBeat":"1482851740","name":"hd_miner"},{"difficulty":"13767102571317","height":"2930456","lastBeat":"1483363217","name":"hd"}],"now":1483363217814,"poolCharts":[{"timestamp":1483362000,"timeFormat":"2017-01-02 21:00","poolHash":180749154947},{"timestamp":1483360200,"timeFormat":"2017-01-02 20:30","poolHash":181230705840},{"timestamp":1483358400,"timeFormat":"2017-01-02 20:00","poolHash":178584426135},{"timestamp":1483356600,"timeFormat":"2017-01-02 19:30","poolHash":178346162617},{"timestamp":1483354800,"timeFormat":"2017-01-02 19:00","poolHash":177491678157},{"timestamp":1483353000,"timeFormat":"2017-01-02 18:30","poolHash":176744593244},{"timestamp":1483351200,"timeFormat":"2017-01-02 18:00","poolHash":176080987415},{"timestamp":1483349400,"timeFormat":"2017-01-02 17:30","poolHash":169937694944},{"timestamp":1483347600,"timeFormat":"2017-01-02 17:00","poolHash":175610121371},{"timestamp":1483345800,"timeFormat":"2017-01-02 16:30","poolHash":181132798304},{"timestamp":1483344000,"timeFormat":"2017-01-02 16:00","poolHash":182428465072},{"timestamp":1483342200,"timeFormat":"2017-01-02 15:30","poolHash":179763021366},{"timestamp":1483340400,"timeFormat":"2017-01-02 15:00","poolHash":177712296488},{"timestamp":1483338600,"timeFormat":"2017-01-02 14:30","poolHash":175853229618},{"timestamp":1483336800,"timeFormat":"2017-01-02 14:00","poolHash":179262002077},{"timestamp":1483335000,"timeFormat":"2017-01-02 13:30","poolHash":177876681838},{"timestamp":1483333200,"timeFormat":"2017-01-02 13:00","poolHash":176972481090},{"timestamp":1483331400,"timeFormat":"2017-01-02 12:30","poolHash":175480639262},{"timestamp":1483329600,"timeFormat":"2017-01-02 12:00","poolHash":177211963773},{"timestamp":1483327800,"timeFormat":"2017-01-02 11:30","poolHash":179776022045},{"timestamp":1483326000,"timeFormat":"2017-01-02 11:00","poolHash":179221536017},{"timestamp":1483324200,"timeFormat":"2017-01-02 10:30","poolHash":177615893682},{"timestamp":1483322400,"timeFormat":"2017-01-02 10:00","poolHash":177275730340},{"timestamp":1483320600,"timeFormat":"2017-01-02 09:30","poolHash":175114987795},{"timestamp":1483318800,"timeFormat":"2017-01-02 09:00","poolHash":177488524344},{"timestamp":1483317000,"timeFormat":"2017-01-02 08:30","poolHash":177708320259},{"timestamp":1483315200,"timeFormat":"2017-01-02 08:00","poolHash":178367240232},{"timestamp":1483313400,"timeFormat":"2017-01-02 07:30","poolHash":179165847837},{"timestamp":1483311600,"timeFormat":"2017-01-02 07:00","poolHash":178380706234},{"timestamp":1483309800,"timeFormat":"2017-01-02 06:30","poolHash":175395706204},{"timestamp":1483308000,"timeFormat":"2017-01-02 06:00","poolHash":178549852362},{"timestamp":1483306200,"timeFormat":"2017-01-02 05:30","poolHash":178853250615},{"timestamp":1483304400,"timeFormat":"2017-01-02 05:00","poolHash":174813606355},{"timestamp":1483302600,"timeFormat":"2017-01-02 04:30","poolHash":175162351904},{"timestamp":1483300800,"timeFormat":"2017-01-02 04:00","poolHash":180545232940},{"timestamp":1483299000,"timeFormat":"2017-01-02 03:30","poolHash":181335429079},{"timestamp":1483297200,"timeFormat":"2017-01-02 03:00","poolHash":179447223719},{"timestamp":1483295400,"timeFormat":"2017-01-02 02:30","poolHash":179912647970},{"timestamp":1483293600,"timeFormat":"2017-01-02 02:00","poolHash":176692417601},{"timestamp":1483291800,"timeFormat":"2017-01-02 01:30","poolHash":178429158729},{"timestamp":1483290000,"timeFormat":"2017-01-02 01:00","poolHash":188346786341},{"timestamp":1483288200,"timeFormat":"2017-01-02 00:30","poolHash":194415259133},{"timestamp":1483286400,"timeFormat":"2017-01-02 00:00","poolHash":194013382226},{"timestamp":1483284600,"timeFormat":"2017-01-01 23:30","poolHash":197368967438},{"timestamp":1483282800,"timeFormat":"2017-01-01 23:00","poolHash":195019818657},{"timestamp":1483281000,"timeFormat":"2017-01-01 22:30","poolHash":193277627340},{"timestamp":1483279200,"timeFormat":"2017-01-01 22:00","poolHash":195254681868},{"timestamp":1483277400,"timeFormat":"2017-01-01 21:30","poolHash":195332052551},{"timestamp":1483275600,"timeFormat":"2017-01-01 21:00","poolHash":189477270155}],"stats":{"lastBlockFound":1483363120,"roundShares":17434200000000}}

то есть в изначальном варианте выводится просто hashrate а необходимо в структуре poolCharts выводить выводить данное значение за сутки в таком формате timestamp-timeFormat-poolHash на текущий момент понял как добавить poolCharts к выводу
прописал в /api/server.go 

func (s *ApiServer) StatsIndex(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Cache-Control", "no-cache")
w.WriteHeader(http.StatusOK)
reply := make(map[string]interface{})
nodes, err := s.backend.GetNodeStates()
if err != nil {
log.Printf("Failed to get nodes stats from backend: %v", err)
}
reply["nodes"] = nodes
stats := s.getStats()
if stats != nil {
reply["now"] = util.MakeTimestamp() reply["poolCharts"]= stats["poolCharts"]
reply["stats"] = stats["stats"]
reply["hashrate"] = stats["hashrate"]
reply["minersTotal"] = stats["minersTotal"]
reply["maturedTotal"] = stats["maturedTotal"]
reply["immatureTotal"] = stats["immatureTotal"]
reply["candidatesTotal"] = stats["candidatesTotal"]
}
err = json.NewEncoder(w).Encode(reply)
if err != nil {
log.Println("Error serializing API response: ", err)
}
}

Получилось следующее localhost/api/stats

{"candidatesTotal":0,"hashrate":3851168635,"immatureTotal":2,"maturedTotal":3657,"minersTotal":15,"nodes":[{"difficulty":"13685085881799","height":"2930444","lastBeat":"1483363055","name":"main"}],"now":1483363057201,"poolCharts":null,"stats":{"lastBlockFound":1483362193,"roundShares":3046000000000}}

каким образом его наполнить не пойму, сам проект https://github.com/sammy007/open-ethereum-pool/blob/master/main.go
Reply all
Reply to author
Forward
0 new messages