package oalib import ( "errors" "fmt" "github.com/veypi/utils/jwt" "io/ioutil" "net/http" ) /** * @name: main * @author: veypi * @date: 2021-11-17 16:28 * @description:main **/ func New(c *Config) *OA { if !c.Valid() { panic("invalid oa config") } return &OA{cfg: c} } type OA struct { cfg *Config } func (oa *OA) Ping() error { url := fmt.Sprintf("%s/api/app/%s/ping", oa.cfg.Host, oa.cfg.UUID) client := &http.Client{} req, err := http.NewRequest("GET", url, nil) if err != nil { return err } p := &PayLoad{} t, err := jwt.GetToken(p, oa.cfg.Key) if err != nil { return err } req.Header.Set("auth_token", t) resp, err := client.Do(req) defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { return err } if string(body) != "ok" { return errors.New(string(body)) } return nil } func (oa *OA) LoginUrl() string { return fmt.Sprintf("%s/login?uuid=%s", oa.cfg.Host, oa.cfg.UUID) } func (oa *OA) Parse(token string, payload jwt.PayloadInterface) (bool, error) { return jwt.ParseToken(token, payload, oa.cfg.Key) }