diff --git a/pkg/srun/api.go b/pkg/srun/api.go index 9c0ded2..bb91227 100644 --- a/pkg/srun/api.go +++ b/pkg/srun/api.go @@ -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) { diff --git a/pkg/srun/models.go b/pkg/srun/models.go index bfe8ec0..1664e6f 100644 --- a/pkg/srun/models.go +++ b/pkg/srun/models.go @@ -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) -} diff --git a/pkg/srun/login.go b/pkg/srun/srun.go similarity index 80% rename from pkg/srun/login.go rename to pkg/srun/srun.go index 77b9c0f..a9c8b99 100644 --- a/pkg/srun/login.go +++ b/pkg/srun/srun.go @@ -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 != "" {