package exam

import (
	"fmt"
	// "gitea.zjmud.xyz/phyer/blingo/cache"
	// "gitea.zjmud.xyz/phyer/blingo/collector"
	// "gitea.zjmud.xyz/phyer/blingo/config"
	// "gitea.zjmud.xyz/phyer/blingo/feature_processor"
	// "gitea.zjmud.xyz/phyer/blingo/scheduler"
	// "gitea.zjmud.xyz/phyer/blingo/storage"
	// "log"
	// "error"
	ccxt "gitea.zjmud.xyz/ext/ccxt-go"
	// "os"
	// "os/exec"
	// "net/http"
	"time"
)

func FetchTicker() {

	// 1. 创建 OKX 交易所实例
	okx := ccxt.NewOkx(map[string]interface{}{
		"apiKey":   "fe468418-5e40-433f-8d04-04951286d417",
		"secret":   "D6D74DF9DD60A25BE2B27CA71D8F814D",
		"password": "M4pw71Id",
		"hostname": "aws.okx.com",
	})

	// 3. 可选:自定义 HTTP 客户端配置
	// okx.HttpClient.Timeout = 15 * time.Second
	okx.EnableRateLimit = true // 启用内置速率限制

	// 4. 加载市场数据(关键步骤!)
	marketsChan := okx.LoadMarkets()
	select {
	case marketsResult := <-marketsChan:

		switch v := marketsResult.(type) {
		case error:
			panic(fmt.Errorf("加载市场数据失败: %v", v))
		case string:
			panic(fmt.Errorf("加载市场数据失败: %v", v))
		case map[string]interface{}:
			okx.Markets = v
		default:
			panic(fmt.Errorf("加载市场数据失败: 未知类型的结果"))
		}
	case <-time.After(30 * time.Second):
		panic(fmt.Errorf("加载市场数据超时"))
	}

	fmt.Println("OKX 初始化完成,已加载", len(okx.Markets), "个交易对")
	// 获取ticker数据
	symbol := "BTC/USDT"

	// opt里具体写什么,得需要看okx官方api的内容要求来定
	opt := map[string]interface{}{}
	ticker, err := okx.FetchTicker(symbol,
		ccxt.WithFetchTickerParams(opt))
	if err != nil {
		fmt.Println("获取ticker数据错误:", err)
		return
	}
	fmt.Println("ticker数据:", ticker)
}