34 lines
971 B
Go
34 lines
971 B
Go
package coinglass
|
||
|
||
import "fmt"
|
||
|
||
// V_CONSTANTS — 来自 bundle 的硬编码 seed(cg.md "Known branches")。
|
||
var vConstants = map[string]string{
|
||
"55": "170b070da9654622",
|
||
"66": "d6537d845a964081",
|
||
"77": "863f08689c97435b",
|
||
}
|
||
|
||
// resolveSeed 把 v 分支映射到 stage-1 解密的 seed 字符串(spec §4.3)。
|
||
//
|
||
// v="0" → request 时挂的 cache-ts-v2(毫秒 unix ts,字符串)
|
||
// v="1" → URL path(待验证形状,cg.md 标 "shape — verify")
|
||
// v="2" → response.headers.time
|
||
// v="55" / "66" / "77" → bundle 常量
|
||
//
|
||
// 未知 v → ErrUnknownV,让 collector log + alert 等人工 review bundle。
|
||
func resolveSeed(v, path, reqCacheTsV2, respTime string) (string, error) {
|
||
switch v {
|
||
case "0":
|
||
return reqCacheTsV2, nil
|
||
case "1":
|
||
return path, nil
|
||
case "2":
|
||
return respTime, nil
|
||
}
|
||
if c, ok := vConstants[v]; ok {
|
||
return c, nil
|
||
}
|
||
return "", fmt.Errorf("%w: v=%q (bundle may have added a new case)", ErrUnknownV, v)
|
||
}
|