package iprecoder import ( "errors" "github.com/Yuzuki616/V2bX/conf" "github.com/Yuzuki616/V2bX/limiter" "github.com/go-resty/resty/v2" "github.com/goccy/go-json" "time" ) type Recorder struct { client *resty.Client *conf.RecorderConfig } func NewRecorder(c *conf.RecorderConfig) *Recorder { return &Recorder{ client: resty.New().SetTimeout(time.Duration(c.Timeout) * time.Second), RecorderConfig: c, } } func (r *Recorder) SyncOnlineIp(ips []limiter.UserIpList) ([]limiter.UserIpList, error) { rsp, err := r.client.R(). SetBody(ips). Post(r.Url + "/api/v1/SyncOnlineIp?token=" + r.Token) if err != nil { return nil, err } if rsp.StatusCode() != 200 { return nil, errors.New(rsp.String()) } ips = []limiter.UserIpList{} err = json.Unmarshal(rsp.Body(), &ips) if err != nil { return nil, err } return ips, nil }