直接完成

此提交包含在:
2022-11-23 20:56:28 +08:00
當前提交 b924e94c63
共有 21 個檔案被更改,包括 829 行新增0 行删除

67
pkg/httpclient/resty.go 一般檔案
查看文件

@@ -0,0 +1,67 @@
package httpclient
import (
"errors"
"github.com/go-resty/resty/v2"
"integrity-checkin/data/dto"
"regexp"
"time"
)
var Client *resty.Client
func Setup() {
Client = resty.New().SetTimeout(10 * time.Second)
}
func SDULogin(username string, password string) (*dto.SDULoginData, error) {
resp, err := Client.R().SetFormData(map[string]string{
"username": username,
"password": password,
}).Post("https://pass.sdu.edu.cn/cas/restlet/tickets")
if err != nil {
return nil, err
}
result1 := string(resp.Body())
if resp.StatusCode()/100 != 2 {
return nil, errors.New(result1)
}
resp, err = Client.R().SetBody("service=https://service.sdu.edu.cn/tp_up/view?m=up").
Post("https://pass.sdu.edu.cn/cas/restlet/tickets/" + result1)
if err != nil {
return nil, err
}
result2 := string(resp.Body())
if resp.StatusCode()/100 != 2 {
return nil, errors.New(result2)
}
resp, err = Client.R().SetQueryParams(map[string]string{
"ticket": result2,
"service": "https://service.sdu.edu.cn/tp_up/view?m=up",
}).Get("https://pass.sdu.edu.cn/cas/serviceValidate")
if err != nil {
return nil, err
}
result3 := string(resp.Body())
if resp.StatusCode()/100 != 2 {
return nil, errors.New(result3)
}
realName := ""
username = ""
if arr := regexp.MustCompile("<cas:USER_NAME>(.*?)<").FindStringSubmatch(result3); len(arr) >= 2 {
realName = arr[1]
} else {
return nil, errors.New(result3)
}
if arr := regexp.MustCompile("<cas:ID_NUMBER>(.*?)<").FindStringSubmatch(result3); len(arr) >= 2 {
username = arr[1]
} else {
return nil, errors.New(result3)
}
if realName == "" || username == "" {
return nil, errors.New(result3)
}
return &dto.SDULoginData{
RealName: realName,
Username: username,
}, nil
}