123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- package defi
- import (
- "bytes"
- "encoding/json"
- "net/http"
- "net/url"
- "os"
- "strconv"
- "strings"
- "birdcall/internal/library/birdeye"
- "github.com/gogf/gf/v2/util/gconv"
- )
- type Defi struct{}
- func (d *Defi) Support() (*NetWorkRes, error) {
-
- baseURL := os.Getenv(birdeye.DEFI_URL)
- fullURL := baseURL + birdeye.NET_WORKS
- apiReq, err := http.NewRequest(birdeye.GET, fullURL, nil)
- if err != nil {
- return nil, err
- }
-
- apiReq = birdeye.MakeHeader(apiReq)
- body, err := birdeye.SendRequest(apiReq)
- if err != nil {
- return nil, err
- }
-
- var res *NetWorkRes
- err = gconv.Struct(body, &res)
- if err != nil {
- return nil, err
- }
- return res, nil
- }
- func (d *Defi) Price(chain_name string, check_liquidity float64, include_liquidity bool, address string) (*PriceRes, error) {
-
- baseURL := os.Getenv(birdeye.DEFI_URL)
- params := url.Values{}
- params.Add(birdeye.CheckLiquidity, strconv.FormatFloat(check_liquidity, 'f', 2, 64))
- params.Add(birdeye.IncludeLiquidity, strconv.FormatBool(include_liquidity))
- params.Add(birdeye.ADDRESS, address)
- fullURL := baseURL + birdeye.PRICE + birdeye.QUESTION_MARK + params.Encode()
- apiReq, err := http.NewRequest(birdeye.GET, fullURL, nil)
- if err != nil {
- return nil, err
- }
-
- apiReq = birdeye.MakeHeader(apiReq, chain_name)
- body, err := birdeye.SendRequest(apiReq)
- if err != nil {
- return nil, err
- }
-
- var res *PriceRes
-
- err = gconv.Struct(body, &res)
- if err != nil {
- return nil, err
- }
- return res, nil
- }
- func (d *Defi) MultiplePrice(chain_name string, check_liquidity float64, include_liquidity bool, address []string, method string) (*MultiplePriceRes, error) {
-
- baseURL := os.Getenv(birdeye.DEFI_URL)
- params := url.Values{}
- params.Add(birdeye.CheckLiquidity, strconv.FormatFloat(check_liquidity, 'f', 2, 64))
- params.Add(birdeye.IncludeLiquidity, strconv.FormatBool(include_liquidity))
- var ApiReq *http.Request
- var payload *bytes.Buffer = nil
-
- if method == birdeye.GET {
- addresses := strings.Join(address, birdeye.COMMAS)
- params.Add(birdeye.LIST_ADDRESS, addresses)
- } else if method == birdeye.POST {
- data, err := json.Marshal(address)
- if err != nil {
- return nil, err
- }
- payload = bytes.NewBuffer(data)
- }
- fullURL := baseURL + birdeye.MULTIPLE_PRICE + birdeye.QUESTION_MARK + params.Encode()
- if method == birdeye.GET {
- apiReq, err := http.NewRequest(method, fullURL, nil)
- if err != nil {
- return nil, err
- }
- ApiReq = apiReq
- } else if method == birdeye.POST {
- apiReq, err := http.NewRequest(method, fullURL, payload)
- if err != nil {
- return nil, err
- }
- ApiReq = apiReq
- }
-
- ApiReq = birdeye.MakeHeader(ApiReq, chain_name)
-
- body, err := birdeye.SendRequest(ApiReq)
- if err != nil {
- return nil, err
- }
- var res *MultiplePriceRes
- err = gconv.Struct(body, &res)
- if err != nil {
- return nil, err
- }
- return res, nil
- }
|