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