improve: 优化 pkg/srun api 抽象层级

This commit is contained in:
Mmx233
2023-06-04 20:31:51 +08:00
parent cc6d4f8da4
commit 92575d812e
3 changed files with 24 additions and 29 deletions

View File

@@ -13,8 +13,6 @@ import (
)
type Api struct {
inited bool
BaseUrl string
Client *http.Client
// 禁用自动重定向
@@ -22,10 +20,6 @@ type Api struct {
}
func (a *Api) Init(https bool, domain string, client *http.Client) {
if a.inited {
return
}
a.BaseUrl = "http"
if https {
a.BaseUrl += "s"
@@ -38,8 +32,6 @@ func (a *Api) Init(https bool, domain string, client *http.Client) {
a.NoDirect.CheckRedirect = func(_ *http.Request, _ []*http.Request) error {
return http.ErrUseLastResponse
}
a.inited = true
}
func (a *Api) request(path string, query map[string]interface{}) (map[string]interface{}, error) {

View File

@@ -1,9 +1,5 @@
package srun
import (
"net/http"
)
type LoginForm struct {
Domain string `json:"domain"`
UserName string `json:"username"`
@@ -23,17 +19,3 @@ type LoginInfo struct {
Form LoginForm
Meta LoginMeta
}
type Conf struct {
//调用 API 时直接访问 https URL
Https bool
//登录参数,不可缺省
LoginInfo LoginInfo
Client *http.Client
api Api
}
func (a *Conf) initApi() {
a.api.Init(a.Https, a.LoginInfo.Form.Domain, a.Client)
}

View File

@@ -4,12 +4,33 @@ import (
"encoding/json"
"errors"
log "github.com/sirupsen/logrus"
"net/http"
"strings"
)
func LoginStatus(c *Conf) (online bool, ip string, e error) {
c.initApi()
type Conf struct {
//调用 API 时直接访问 https URL
Https bool
//登录参数,不可缺省
LoginInfo LoginInfo
Client *http.Client
}
func New(conf *Conf) *Srun {
srun := &Srun{
LoginInfo: conf.LoginInfo,
}
srun.api.Init(conf.Https, conf.LoginInfo.Form.Domain, conf.Client)
return srun
}
type Srun struct {
//登录参数,不可缺省
LoginInfo LoginInfo
api Api
}
func (c *Srun) LoginStatus() (online bool, ip string, e error) {
res, e := c.api.GetUserInfo()
if e != nil {
return false, "", e
@@ -38,7 +59,7 @@ func LoginStatus(c *Conf) (online bool, ip string, e error) {
return
}
func DoLogin(clientIP string, c *Conf) error {
func (c *Srun) DoLogin(clientIP string) error {
log.Debugln("正在获取 Token")
if c.LoginInfo.Form.UserType != "" {