add authorize module

This commit is contained in:
kenneth 2022-05-09 17:25:24 +08:00
parent 4103eae82a
commit c9848509b4
2 changed files with 131 additions and 0 deletions

View File

@ -0,0 +1,69 @@
package authorize
import (
"bytes"
"encoding/json"
"errors"
"io"
"net/http"
"time"
)
type renewAccessTokenResponse struct {
Code int `json:"code"`
Message string `json:"message"`
Data RenewAccessTokenBody `json:"data"`
RequestId string `json:"request_id"`
}
// RenewAccessTokenBody 刷新access_token返回信息
type RenewAccessTokenBody struct {
AccessToken string `json:"access_token"`
AccessTokenExpiresAt time.Time `json:"access_token_expires_at"`
}
// RenewAccessTokenRequest 刷新access_token请求
type RenewAccessTokenRequest struct {
RefreshToken string `json:"refresh_token" binding:"required"`
}
// RenewAccessToken 刷新Token
func RenewAccessToken(url string, parameter RenewAccessTokenRequest, timeout int) (*RenewAccessTokenBody, error) {
client := &http.Client{Timeout: time.Second * time.Duration(timeout)}
args, err := json.Marshal(parameter)
if err != nil {
return nil, err
}
request, err := http.NewRequest("POST", url, bytes.NewBuffer(args))
if err != nil {
return nil, err
}
request.Header.Set("Content-type", "application/json")
response, err := client.Do(request)
if err != nil {
return nil, err
}
if response.StatusCode != 200 {
return nil, err
}
all, err := io.ReadAll(response.Body)
if err != nil {
return nil, err
}
var resp renewAccessTokenResponse
err = json.Unmarshal(all, &resp)
if err != nil {
return nil, err
}
if resp.Code == 200 && resp.Message == "ok" {
return &resp.Data, nil
}
return nil, errors.New("刷新access_token失败")
}

View File

@ -0,0 +1,62 @@
package authorize
import (
"bytes"
"encoding/json"
"io"
"net/http"
"time"
)
type validAccessTokenResponse struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data"`
RequestId string `json:"request_id"`
}
// ValidAccessTokenRequest 校验access_token请求
type ValidAccessTokenRequest struct {
AccessToken string `json:"access_token" binding:"required"`
}
// ValidAccessToken 校验Token
func ValidAccessToken(url string, parameter ValidAccessTokenRequest, timeout int) bool {
client := &http.Client{Timeout: time.Second * time.Duration(timeout)}
args, err := json.Marshal(parameter)
if err != nil {
return false
}
request, err := http.NewRequest("POST", url, bytes.NewBuffer(args))
if err != nil {
return false
}
request.Header.Set("Content-type", "application/json")
response, err := client.Do(request)
if err != nil {
return false
}
if response.StatusCode != 200 {
return false
}
all, err := io.ReadAll(response.Body)
if err != nil {
return false
}
var resp validAccessTokenResponse
err = json.Unmarshal(all, &resp)
if err != nil {
return false
}
if resp.Code == 200 && resp.Message == "ok" {
return true
}
return false
}