51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
|
package dal
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"io/ioutil"
|
||
|
"net/http"
|
||
|
"time"
|
||
|
|
||
|
jsoniter "github.com/json-iterator/go"
|
||
|
"github.com/riba2534/wecomchan/go-scf/consts"
|
||
|
"github.com/riba2534/wecomchan/go-scf/model"
|
||
|
)
|
||
|
|
||
|
var AccessToken string
|
||
|
|
||
|
func loadAccessToken() {
|
||
|
client := http.Client{Timeout: 10 * time.Second}
|
||
|
req, _ := http.NewRequest("GET", fmt.Sprintf(consts.WeComAccessTokenURL, consts.WECOM_CID, consts.WECOM_SECRET), nil)
|
||
|
resp, err := client.Do(req)
|
||
|
if err != nil {
|
||
|
fmt.Println("getAccessToken err=", err)
|
||
|
}
|
||
|
defer resp.Body.Close()
|
||
|
if resp.StatusCode != 200 {
|
||
|
fmt.Println("getAccessToken statusCode is not 200")
|
||
|
}
|
||
|
respBodyBytes, _ := ioutil.ReadAll(resp.Body)
|
||
|
assesTokenResp := &model.AssesTokenResp{}
|
||
|
if err := jsoniter.Unmarshal(respBodyBytes, assesTokenResp); err != nil {
|
||
|
fmt.Println("getAccessToken json Unmarshal failed, err=", err)
|
||
|
panic(err)
|
||
|
}
|
||
|
if assesTokenResp.Errcode != 0 {
|
||
|
fmt.Println("getAccessToken assesTokenResp.Errcode != 0, err=", assesTokenResp.Errmsg)
|
||
|
panic(err)
|
||
|
}
|
||
|
AccessToken = assesTokenResp.AccessToken
|
||
|
}
|
||
|
|
||
|
func Init() {
|
||
|
loadAccessToken()
|
||
|
fmt.Printf("[Init] accessToken load success, time=%s, token=%s\n", time.Now().Format("2006-01-02 15:04:05"), AccessToken)
|
||
|
go func() {
|
||
|
for {
|
||
|
time.Sleep(30 * time.Minute)
|
||
|
loadAccessToken()
|
||
|
fmt.Printf("[Goroutine] accessToken load success, time=%s, token=%s\n", time.Now().Format("2006-01-02 15:04:05"), AccessToken)
|
||
|
}
|
||
|
}()
|
||
|
}
|