Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
75b949a50e | ||
![]() |
f3e1506f2f | ||
![]() |
bd2354b81e |
62
rest/rest.go
62
rest/rest.go
@ -44,18 +44,51 @@ type RESTAPIResult struct {
|
|||||||
TotalUsedTime time.Duration `json:"totalUsedTime"`
|
TotalUsedTime time.Duration `json:"totalUsedTime"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ResponseData 定义统一的响应数据接口
|
||||||
|
type ResponseData interface {
|
||||||
|
GetCode() string
|
||||||
|
GetMsg() string
|
||||||
|
GetData() interface{}
|
||||||
|
}
|
||||||
|
|
||||||
type Okexv5APIResponse struct {
|
type Okexv5APIResponse struct {
|
||||||
Code string `json:"code"`
|
Code string `json:"code"`
|
||||||
Msg string `json:"msg"`
|
Msg string `json:"msg"`
|
||||||
Data interface{} `json:"data"`
|
Data interface{} `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CandleData struct {
|
// 实现 ResponseData 接口
|
||||||
|
func (r Okexv5APIResponse) GetCode() string {
|
||||||
|
return r.Code
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Okexv5APIResponse) GetMsg() string {
|
||||||
|
return r.Msg
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Okexv5APIResponse) GetData() interface{} {
|
||||||
|
return r.Data
|
||||||
|
}
|
||||||
|
|
||||||
|
type CandleDataResponse struct {
|
||||||
Code string `json:"code"`
|
Code string `json:"code"`
|
||||||
Msg string `json:"msg"`
|
Msg string `json:"msg"`
|
||||||
Data [][]interface{} `json:"data"` // 用二维数组来接收 candles 数据
|
Data [][]interface{} `json:"data"` // 用二维数组来接收 candles 数据
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 实现 ResponseData 接口
|
||||||
|
func (r CandleDataResponse) GetCode() string {
|
||||||
|
return r.Code
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r CandleDataResponse) GetMsg() string {
|
||||||
|
return r.Msg
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r CandleDataResponse) GetData() interface{} {
|
||||||
|
return r.Data
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
endPoint:请求地址
|
endPoint:请求地址
|
||||||
apiKey
|
apiKey
|
||||||
@ -125,7 +158,7 @@ func (this *RESTAPI) SetTimeOut(timeout time.Duration) *RESTAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetCandles 获取蜡烛图数据
|
// GetCandles 获取蜡烛图数据
|
||||||
func (this *RESTAPI) GetCandles(ctx context.Context, uri string, param *map[string]interface{}) (res *RESTAPIResult, err error) {
|
func (this *RESTAPI) GetCandles(ctx context.Context, uri string, param *map[string]interface{}) (res ResponseData, err error) {
|
||||||
this.Method = GET
|
this.Method = GET
|
||||||
this.Uri = uri
|
this.Uri = uri
|
||||||
|
|
||||||
@ -139,7 +172,7 @@ func (this *RESTAPI) GetCandles(ctx context.Context, uri string, param *map[stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
// POST请求
|
// POST请求
|
||||||
func (this *RESTAPI) Post(ctx context.Context, uri string, param *map[string]interface{}) (res *RESTAPIResult, err error) {
|
func (this *RESTAPI) Post(ctx context.Context, uri string, param *map[string]interface{}) (res ResponseData, err error) {
|
||||||
this.Method = POST
|
this.Method = POST
|
||||||
this.Uri = uri
|
this.Uri = uri
|
||||||
|
|
||||||
@ -153,11 +186,16 @@ func (this *RESTAPI) Post(ctx context.Context, uri string, param *map[string]int
|
|||||||
return this.Run(ctx)
|
return this.Run(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *RESTAPI) Run(ctx context.Context) (res *RESTAPIResult, err error) {
|
func (this *RESTAPI) Run(ctx context.Context) (ResponseData, error) {
|
||||||
|
var res *RESTAPIResult
|
||||||
|
var err error
|
||||||
|
|
||||||
if this.ApiKeyInfo == nil {
|
if this.ApiKeyInfo == nil {
|
||||||
err = errors.New("APIKey不可为空")
|
err = errors.New("APIKey不可为空")
|
||||||
return
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return res.V5Response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
procStart := time.Now()
|
procStart := time.Now()
|
||||||
@ -174,7 +212,7 @@ func (this *RESTAPI) Run(ctx context.Context) (res *RESTAPIResult, err error) {
|
|||||||
|
|
||||||
uri, body, err := this.GenReqInfo()
|
uri, body, err := this.GenReqInfo()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
url := this.EndPoint + uri
|
url := this.EndPoint + uri
|
||||||
@ -183,7 +221,7 @@ func (this *RESTAPI) Run(ctx context.Context) (res *RESTAPIResult, err error) {
|
|||||||
|
|
||||||
req, err := http.NewRequest(this.Method, url, bodyBuf)
|
req, err := http.NewRequest(this.Method, url, bodyBuf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
res = &RESTAPIResult{
|
res = &RESTAPIResult{
|
||||||
@ -197,7 +235,7 @@ func (this *RESTAPI) Run(ctx context.Context) (res *RESTAPIResult, err error) {
|
|||||||
//log.Println("preHash:", preHash)
|
//log.Println("preHash:", preHash)
|
||||||
sign, err := utils.HmacSha256Base64Signer(preHash, this.ApiKeyInfo.SecKey)
|
sign, err := utils.HmacSha256Base64Signer(preHash, this.ApiKeyInfo.SecKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return nil, err
|
||||||
}
|
}
|
||||||
//log.Println("sign:", sign)
|
//log.Println("sign:", sign)
|
||||||
headStr := this.SetHeaders(req, timestamp, sign)
|
headStr := this.SetHeaders(req, timestamp, sign)
|
||||||
@ -207,7 +245,7 @@ func (this *RESTAPI) Run(ctx context.Context) (res *RESTAPIResult, err error) {
|
|||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("请求失败!", err)
|
fmt.Println("请求失败!", err)
|
||||||
return
|
return nil, err
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
@ -216,7 +254,7 @@ func (this *RESTAPI) Run(ctx context.Context) (res *RESTAPIResult, err error) {
|
|||||||
resBuff, err := ioutil.ReadAll(resp.Body)
|
resBuff, err := ioutil.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("获取请求结果失败!", err)
|
fmt.Println("获取请求结果失败!", err)
|
||||||
return
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
res.Body = string(resBuff)
|
res.Body = string(resBuff)
|
||||||
@ -227,12 +265,12 @@ func (this *RESTAPI) Run(ctx context.Context) (res *RESTAPIResult, err error) {
|
|||||||
err = json.Unmarshal(resBuff, &v5rsp)
|
err = json.Unmarshal(resBuff, &v5rsp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("解析v5返回失败!", err)
|
fmt.Println("解析v5返回失败!", err)
|
||||||
return
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
res.V5Response = v5rsp
|
res.V5Response = v5rsp
|
||||||
|
|
||||||
return
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user