Browse Source

Update exchange.go

master
yuriy0803 3 years ago committed by GitHub
parent
commit
4b8df40b4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 41
      exchange/exchange.go

41
exchange/exchange.go

@ -1,27 +1,22 @@
package exchange package exchange
import ( import (
"sync"
"encoding/json" "encoding/json"
"time" "io/ioutil"
"net/http"
"log" "log"
"net/http"
"sync"
"time"
"github.com/yuriy0803/open-etc-pool-friends/util"
"github.com/yuriy0803/open-etc-pool-friends/storage" "github.com/yuriy0803/open-etc-pool-friends/storage"
"io/ioutil" "github.com/yuriy0803/open-etc-pool-friends/util"
) )
type ExchangeProcessor struct { type ExchangeProcessor struct {
ExchangeConfig *ExchangeConfig ExchangeConfig *ExchangeConfig
backend *storage.RedisClient backend *storage.RedisClient
rpc *RestClient rpc *RestClient
halt bool halt bool
} }
type ExchangeConfig struct { type ExchangeConfig struct {
@ -54,14 +49,13 @@ func NewRestClient(name, url, timeout string) *RestClient {
} }
func (r *RestClient) GetData() (ExchangeReply, error) { func (r *RestClient) GetData() (ExchangeReply, error) {
Resp, err := r.doPost(r.Url, "ticker") resp, err := r.doPost(r.Url, "ticker")
if err != nil { if err != nil {
return nil, err return nil, err
} }
//var reply map[string][]interface{}
var data ExchangeReply var data ExchangeReply
err = json.Unmarshal(Resp, &data) err = json.Unmarshal(resp, &data)
return data, err return data, err
} }
@ -72,7 +66,6 @@ func StartExchangeProcessor(cfg *ExchangeConfig, backend *storage.RedisClient)*E
} }
func (u *ExchangeProcessor) Start() { func (u *ExchangeProcessor) Start() {
refreshIntv := util.MustParseDuration(u.ExchangeConfig.RefreshInterval) refreshIntv := util.MustParseDuration(u.ExchangeConfig.RefreshInterval)
refreshTimer := time.NewTimer(refreshIntv) refreshTimer := time.NewTimer(refreshIntv)
log.Printf("Set Exchange data refresh every %v", refreshIntv) log.Printf("Set Exchange data refresh every %v", refreshIntv)
@ -80,7 +73,6 @@ func (u *ExchangeProcessor) Start(){
u.fetchData() u.fetchData()
refreshTimer.Reset(refreshIntv) refreshTimer.Reset(refreshIntv)
go func() { go func() {
for { for {
select { select {
@ -90,11 +82,9 @@ func (u *ExchangeProcessor) Start(){
} }
} }
}() }()
} }
func (u *ExchangeProcessor) fetchData() { func (u *ExchangeProcessor) fetchData() {
reply, err := u.rpc.GetData() reply, err := u.rpc.GetData()
if err != nil { if err != nil {
@ -102,13 +92,10 @@ func (u *ExchangeProcessor) fetchData() {
return return
} }
//log.Printf("Reply %v", reply)
//Store the data into the Redis Store
u.backend.StoreExchangeData(reply) u.backend.StoreExchangeData(reply)
if err != nil { if err != nil {
log.Printf("Failed to Store the data to echange %v", err) log.Printf("Failed to store the data to exchange %v", err)
return return
} }
@ -116,25 +103,23 @@ func (u *ExchangeProcessor) fetchData() {
} }
func (r *RestClient) doPost(url string, method string) ([]byte, error) { func (r *RestClient) doPost(url string, method string) ([]byte, error) {
req, err := http.NewRequest("GET", url, nil) req, err := http.NewRequest("GET", url, nil)
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json") req.Header.Set("Accept", "application/json")
log.Println(req) resp, err := r.client.Do(req)
resp, err := r.client.Get(url)
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer resp.Body.Close() defer resp.Body.Close()
if resp.StatusCode == 200 { // OK if resp.StatusCode == 200 { // OK
bodyBytes, err2 := ioutil.ReadAll(resp.Body) bodyBytes, err2 := ioutil.ReadAll(resp.Body)
return bodyBytes, err2 return bodyBytes, err2
} }
return nil, err return nil, err
}
Loading…
Cancel
Save