MCPcopy
hub / github.com/silenceper/wechat / GetConfigContext

Method GetConfigContext

officialaccount/js/js.go:47–83  ·  view source on GitHub ↗

GetConfigContext 新方法,允许传入上下文,避免协程泄漏

(ctx context2.Context, uri string)

Source from the content-addressed store, hash-verified

45
46// GetConfigContext 新方法,允许传入上下文,避免协程泄漏
47func (js *Js) GetConfigContext(ctx context2.Context, uri string) (config *Config, err error) {
48 var accessToken string
49 // 类型断言,如果断言成功,调用安全的 GetAccessTokenContext 方法
50 if ctxHandle, ok := js.Context.AccessTokenHandle.(credential.AccessTokenContextHandle); ok {
51 accessToken, err = ctxHandle.GetAccessTokenContext(ctx)
52 } else {
53 // 如果没有实现 AccessTokenContextHandle 接口,调用旧的 GetAccessToken 方法
54 accessToken, err = js.Context.GetAccessToken()
55 }
56 if err != nil {
57 return
58 }
59
60 var ticketStr string
61 // 类型断言 jsTicket
62 if ticketCtxHandle, ok := js.JsTicketHandle.(credential.JsTicketContextHandle); ok {
63 ticketStr, err = ticketCtxHandle.GetTicketContext(ctx, accessToken)
64 } else {
65 // 如果没有实现 JsTicketContextHandle 接口,调用旧的 GetTicket 方法
66 ticketStr, err = js.GetTicket(accessToken)
67 }
68 if err != nil {
69 return
70 }
71
72 nonceStr := util.RandomStr(16)
73 timestamp := util.GetCurrTS()
74 str := fmt.Sprintf("jsapi_ticket=%s&noncestr=%s&timestamp=%d&url=%s", ticketStr, nonceStr, timestamp, uri)
75 sigStr := util.Signature(str)
76
77 config = new(Config)
78 config.AppID = js.AppID
79 config.NonceStr = nonceStr
80 config.Timestamp = timestamp
81 config.Signature = sigStr
82 return
83}

Callers 1

GetConfigMethod · 0.95

Calls 7

RandomStrFunction · 0.92
GetCurrTSFunction · 0.92
SignatureFunction · 0.92
GetAccessTokenContextMethod · 0.65
GetAccessTokenMethod · 0.65
GetTicketContextMethod · 0.65
GetTicketMethod · 0.65

Tested by

no test coverage detected