package api import ( "fmt" "io" "net/http" "strings" "gitlink.org.cn/cloudream/common/sdks" "gitlink.org.cn/cloudream/common/utils/http2" "gitlink.org.cn/cloudream/common/utils/serder" ) type SysEventService struct { *Client } func (c *Client) SysEvent() *SysEventService { return &SysEventService{ Client: c, } } const SysEventWatchPath = "/sysEvent/watch" type SysEventWatch struct{} func (r *SysEventWatch) MakeParam() *sdks.RequestParam { return sdks.MakeJSONParam(http.MethodPost, SysEventWatchPath, r) } type SysEventWatchResp struct { Stream io.ReadCloser } func (r *SysEventWatchResp) ParseResponse(resp *http.Response) error { contType := resp.Header.Get("Content-Type") if strings.Contains(contType, http2.ContentTypeJSON) { var err error var r sdks.CodeDataResponse[any] if err = serder.JSONToObjectStreamExRaw(resp.Body, &r); err != nil { return fmt.Errorf("parsing response: %w", err) } return &sdks.CodeMessageError{Code: r.Code, Message: r.Message} } r.Stream = resp.Body return nil } func (c *SysEventService) Watch(req SysEventWatch) (*SysEventWatchResp, error) { return JSONAPI(&c.cfg, c.httpCli, &req, &SysEventWatchResp{}) }