|
@@ -1,26 +1,25 @@
|
|
|
package defi
|
|
|
|
|
|
import (
|
|
|
- v1 "birdcall/api/defi/v1"
|
|
|
- "birdcall/internal/consts"
|
|
|
- "birdcall/internal/service"
|
|
|
- "context"
|
|
|
- "encoding/json"
|
|
|
"io"
|
|
|
"net/http"
|
|
|
"net/url"
|
|
|
"os"
|
|
|
"strconv"
|
|
|
-)
|
|
|
|
|
|
-type sDefi struct{}
|
|
|
-
|
|
|
-func init() {
|
|
|
- service.RegisterDefi(&sDefi{})
|
|
|
+ "birdcall/internal/consts"
|
|
|
+ "birdcall/internal/library/birdeye"
|
|
|
+ "encoding/json"
|
|
|
+)
|
|
|
|
|
|
+type Defi struct {
|
|
|
+ Address string ` json:"address" dc:"代币地址"`
|
|
|
+ Chain string ` json:"chain" dc:"链名"`
|
|
|
+ CheckLiquidity float64 ` json:"check_liquidity" dc:"流动性验证"`
|
|
|
+ IncludeLiquidity bool ` json:"include_liquidity" dc:"是否返回流动数据" `
|
|
|
}
|
|
|
|
|
|
-func (s *sDefi) Support(ctx context.Context, req *v1.SupportReq) (*v1.CommonRes, error) {
|
|
|
+func (d *Defi) Support() (*birdeye.CommonRes, error) {
|
|
|
//构建基本请求连接
|
|
|
baseURL := os.Getenv(consts.DEFI_URL)
|
|
|
fullURL := baseURL + consts.NET_WORKS
|
|
@@ -29,10 +28,8 @@ func (s *sDefi) Support(ctx context.Context, req *v1.SupportReq) (*v1.CommonRes,
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
-
|
|
|
- apiKey := os.Getenv(consts.BIRD_EYE_API_KEY)
|
|
|
//构建请求头
|
|
|
- apiReq.Header.Add(consts.X_API_KEY, apiKey)
|
|
|
+ apiReq = birdeye.MakeHeader(apiReq, d.Chain)
|
|
|
|
|
|
apiRes, err := http.DefaultClient.Do(apiReq)
|
|
|
if err != nil {
|
|
@@ -41,7 +38,7 @@ func (s *sDefi) Support(ctx context.Context, req *v1.SupportReq) (*v1.CommonRes,
|
|
|
|
|
|
//处理结果
|
|
|
body, _ := io.ReadAll(apiRes.Body)
|
|
|
- var commonRes *v1.CommonRes
|
|
|
+ var commonRes *birdeye.CommonRes
|
|
|
err = json.Unmarshal(body, &commonRes)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
@@ -49,13 +46,13 @@ func (s *sDefi) Support(ctx context.Context, req *v1.SupportReq) (*v1.CommonRes,
|
|
|
return commonRes, nil
|
|
|
}
|
|
|
|
|
|
-func (s *sDefi) Price(ctx context.Context, req *v1.PriceReq) (*v1.CommonRes, error) {
|
|
|
+func (d *Defi) Price() (*birdeye.CommonRes, error) {
|
|
|
//构建基本请求连接
|
|
|
baseURL := os.Getenv(consts.DEFI_URL)
|
|
|
params := url.Values{}
|
|
|
- params.Add(consts.CheckLiquidity, strconv.FormatFloat(req.CheckLiquidity, 'f', 2, 64))
|
|
|
- params.Add(consts.IncludeLiquidity, strconv.FormatBool(req.IncludeLiquidity))
|
|
|
- params.Add(consts.ADDRESS, req.Address)
|
|
|
+ params.Add(consts.CheckLiquidity, strconv.FormatFloat(d.CheckLiquidity, 'f', 2, 64))
|
|
|
+ params.Add(consts.IncludeLiquidity, strconv.FormatBool(d.IncludeLiquidity))
|
|
|
+ params.Add(consts.ADDRESS, d.Address)
|
|
|
fullURL := baseURL + consts.PRICE + consts.QUESTION_MARK + params.Encode()
|
|
|
|
|
|
apiReq, err := http.NewRequest(consts.GET, fullURL, nil)
|
|
@@ -64,7 +61,7 @@ func (s *sDefi) Price(ctx context.Context, req *v1.PriceReq) (*v1.CommonRes, err
|
|
|
}
|
|
|
|
|
|
//构建请求头
|
|
|
- apiReq = makeHeader(apiReq, req.Chain)
|
|
|
+ apiReq = birdeye.MakeHeader(apiReq, d.Chain)
|
|
|
|
|
|
//发送请求
|
|
|
apiRes, err := http.DefaultClient.Do(apiReq)
|
|
@@ -74,19 +71,10 @@ func (s *sDefi) Price(ctx context.Context, req *v1.PriceReq) (*v1.CommonRes, err
|
|
|
|
|
|
//处理结果
|
|
|
body, _ := io.ReadAll(apiRes.Body)
|
|
|
- var commonRes *v1.CommonRes
|
|
|
+ var commonRes *birdeye.CommonRes
|
|
|
err = json.Unmarshal(body, &commonRes)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
return commonRes, nil
|
|
|
}
|
|
|
-
|
|
|
-func makeHeader(req *http.Request, chainName string) *http.Request {
|
|
|
- apiKey := os.Getenv(consts.BIRD_EYE_API_KEY)
|
|
|
-
|
|
|
- req.Header.Add(consts.ACCEPT, consts.APPLICATION_JSON)
|
|
|
- req.Header.Add(consts.X_CHAIN, chainName)
|
|
|
- req.Header.Add(consts.X_API_KEY, apiKey)
|
|
|
- return req
|
|
|
-}
|