Просмотр исходного кода

小程序auth增加Context接口 (#483)

okhowang 4 лет назад
Родитель
Сommit
1e2f909f34
2 измененных файлов с 34 добавлено и 4 удалено
  1. 13 2
      miniprogram/auth/auth.go
  2. 21 2
      util/http.go

+ 13 - 2
miniprogram/auth/auth.go

@@ -1,6 +1,7 @@
 package auth
 
 import (
+	context2 "context"
 	"encoding/json"
 	"fmt"
 
@@ -43,8 +44,13 @@ type RspCheckEncryptedData struct {
 
 // Code2Session 登录凭证校验。
 func (auth *Auth) Code2Session(jsCode string) (result ResCode2Session, err error) {
+	return auth.Code2SessionContext(context2.Background(), jsCode)
+}
+
+// Code2SessionContext 登录凭证校验。
+func (auth *Auth) Code2SessionContext(ctx context2.Context, jsCode string) (result ResCode2Session, err error) {
 	var response []byte
-	if response, err = util.HTTPGet(fmt.Sprintf(code2SessionURL, auth.AppID, auth.AppSecret, jsCode)); err != nil {
+	if response, err = util.HTTPGetContext(ctx, fmt.Sprintf(code2SessionURL, auth.AppID, auth.AppSecret, jsCode)); err != nil {
 		return
 	}
 	if err = json.Unmarshal(response, &result); err != nil {
@@ -64,6 +70,11 @@ func (auth *Auth) GetPaidUnionID() {
 
 // CheckEncryptedData .检查加密信息是否由微信生成(当前只支持手机号加密数据),只能检测最近3天生成的加密数据
 func (auth *Auth) CheckEncryptedData(encryptedMsgHash string) (result RspCheckEncryptedData, err error) {
+	return auth.CheckEncryptedDataContext(context2.Background(), encryptedMsgHash)
+}
+
+// CheckEncryptedDataContext .检查加密信息是否由微信生成(当前只支持手机号加密数据),只能检测最近3天生成的加密数据
+func (auth *Auth) CheckEncryptedDataContext(ctx context2.Context, encryptedMsgHash string) (result RspCheckEncryptedData, err error) {
 	var response []byte
 	var (
 		at string
@@ -71,7 +82,7 @@ func (auth *Auth) CheckEncryptedData(encryptedMsgHash string) (result RspCheckEn
 	if at, err = auth.GetAccessToken(); err != nil {
 		return
 	}
-	if response, err = util.HTTPPost(fmt.Sprintf(checkEncryptedDataURL, at), "encrypted_msg_hash="+encryptedMsgHash); err != nil {
+	if response, err = util.HTTPPostContext(ctx, fmt.Sprintf(checkEncryptedDataURL, at), "encrypted_msg_hash="+encryptedMsgHash); err != nil {
 		return
 	}
 	if err = util.DecodeWithError(response, &result, "CheckEncryptedDataAuth"); err != nil {

+ 21 - 2
util/http.go

@@ -2,6 +2,7 @@ package util
 
 import (
 	"bytes"
+	"context"
 	"crypto/tls"
 	"encoding/json"
 	"encoding/pem"
@@ -19,7 +20,16 @@ import (
 
 // HTTPGet get 请求
 func HTTPGet(uri string) ([]byte, error) {
-	response, err := http.Get(uri)
+	return HTTPGetContext(context.Background(), uri)
+}
+
+// HTTPGetContext get 请求
+func HTTPGetContext(ctx context.Context, uri string) ([]byte, error) {
+	request, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
+	if err != nil {
+		return nil, err
+	}
+	response, err := http.DefaultClient.Do(request)
 	if err != nil {
 		return nil, err
 	}
@@ -33,8 +43,17 @@ func HTTPGet(uri string) ([]byte, error) {
 
 // HTTPPost post 请求
 func HTTPPost(uri string, data string) ([]byte, error) {
+	return HTTPPostContext(context.Background(), uri, data)
+}
+
+// HTTPPostContext post 请求
+func HTTPPostContext(ctx context.Context, uri string, data string) ([]byte, error) {
 	body := bytes.NewBuffer([]byte(data))
-	response, err := http.Post(uri, "", body)
+	request, err := http.NewRequestWithContext(ctx, http.MethodPost, uri, body)
+	if err != nil {
+		return nil, err
+	}
+	response, err := http.DefaultClient.Do(request)
 	if err != nil {
 		return nil, err
 	}