github.com/qiniu/go-sdk/v7@v7.27.0/pili/stream.go (about) 1 package pili 2 3 import ( 4 "context" 5 "net/http" 6 "net/url" 7 ) 8 9 // GetStreamsList 查询直播流列表 10 // GET /v2/hubs/<Hub>/streams?liveonly=<true>&prefix=<Prefix>&limit=<Limit>&marker=<Marker> 11 func (m *Manager) GetStreamsList(ctx context.Context, req GetStreamListRequest) (*GetStreamsListResponse, error) { 12 if err := defaultValidator.Validate(req); err != nil { 13 return nil, err 14 } 15 query := url.Values{} 16 setQuery(query, "liveonly", req.LiveOnly) 17 setQuery(query, "prefix", req.Prefix) 18 setQuery(query, "limit", req.Limit) 19 setQuery(query, "marker", req.Marker) 20 resp := GetStreamsListResponse{} 21 if err := m.client.Call(ctx, &resp, http.MethodGet, m.url("/v2/hubs/%s/streams", req.Hub, query), nil); err != nil { 22 return nil, err 23 } 24 return &resp, nil 25 } 26 27 // GetStreamBaseInfo 查询直播流信息 28 // GET v2/hubs/<hub>/streams/<EncodedStreamTitle> 29 func (m *Manager) GetStreamBaseInfo(ctx context.Context, req GetStreamBaseInfoRequest) (*GetStreamBaseInfoResponse, error) { 30 if err := defaultValidator.Validate(req); err != nil { 31 return nil, err 32 } 33 34 resp := GetStreamBaseInfoResponse{} 35 if err := m.client.Call(ctx, &resp, http.MethodGet, m.url("/v2/hubs/%s/streams/%s", req.Hub, encodeStream(req.Stream)), nil); err != nil { 36 return nil, err 37 } 38 return &resp, nil 39 } 40 41 // StreamDisable 禁用直播流 42 // POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/disabled 43 func (m *Manager) StreamDisable(ctx context.Context, req StreamDisabledRequest) error { 44 if err := defaultValidator.Validate(req); err != nil { 45 return err 46 } 47 48 if err := m.client.CallWithJson(ctx, nil, http.MethodPost, m.url("/v2/hubs/%s/streams/%s/disabled", req.Hub, encodeStream(req.Stream)), nil, req); err != nil { 49 return err 50 } 51 return nil 52 } 53 54 // GetStreamLiveStatus 查询直播流实时信息 55 // GET v2/hubs/<hub>/streams/<EncodedStreamTitle>/live 56 func (m *Manager) GetStreamLiveStatus(ctx context.Context, req GetStreamLiveStatusRequest) (*GetStreamLiveStatusResponse, error) { 57 if err := defaultValidator.Validate(req); err != nil { 58 return nil, err 59 } 60 61 resp := GetStreamLiveStatusResponse{} 62 if err := m.client.Call(ctx, &resp, http.MethodGet, m.url("/v2/hubs/%s/streams/%s/live", req.Hub, encodeStream(req.Stream)), nil); err != nil { 63 return nil, err 64 } 65 return &resp, nil 66 } 67 68 // BatchGetStreamLiveStatus 批量查询直播实时状态 69 // POST /v2/hubs/<hub>/livestreams 70 func (m *Manager) BatchGetStreamLiveStatus(ctx context.Context, req BatchGetStreamLiveStatusRequest) (*BatchGetStreamLiveStatusResponse, error) { 71 if err := defaultValidator.Validate(req); err != nil { 72 return nil, err 73 } 74 75 resp := BatchGetStreamLiveStatusResponse{} 76 if err := m.client.CallWithJson(ctx, &resp, http.MethodPost, m.url("/v2/hubs/%s/livestreams", req.Hub), nil, req); err != nil { 77 return nil, err 78 } 79 return &resp, nil 80 } 81 82 // GetStreamHistory 查询直播流推流记录 83 // GET /v2/hubs/<hub>/streams/<EncodedStreamTitle>/historyactivity?start=<Start>&end=<End> 84 func (m *Manager) GetStreamHistory(ctx context.Context, req GetStreamHistoryRequest) (*GetStreamHistoryResponse, error) { 85 if err := defaultValidator.Validate(req); err != nil { 86 return nil, err 87 } 88 query := url.Values{} 89 setQuery(query, "start", req.Start) 90 setQuery(query, "end", req.End) 91 resp := GetStreamHistoryResponse{} 92 if err := m.client.Call(ctx, &resp, http.MethodGet, m.url("/v2/hubs/%s/streams/%s/historyactivity", req.Hub, encodeStream(req.Stream), query), nil); err != nil { 93 return nil, err 94 } 95 return &resp, nil 96 } 97 98 // StreamSaveas 录制直播回放 99 // POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/saveas 100 func (m *Manager) StreamSaveas(ctx context.Context, req StreamSaveasRequest) (*StreamSaveasResponse, error) { 101 if err := defaultValidator.Validate(req); err != nil { 102 return nil, err 103 } 104 105 resp := StreamSaveasResponse{} 106 if err := m.client.CallWithJson(ctx, &resp, http.MethodPost, m.url("/v2/hubs/%s/streams/%s/saveas", req.Hub, encodeStream(req.Stream)), nil, req); err != nil { 107 return nil, err 108 } 109 return &resp, nil 110 } 111 112 // StreamSnapshot 保存直播截图 113 // POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/snapshot 114 func (m *Manager) StreamSnapshot(ctx context.Context, req StreamSnapshotRequest) (*StreamSnapshotResponse, error) { 115 if err := defaultValidator.Validate(req); err != nil { 116 return nil, err 117 } 118 119 resp := StreamSnapshotResponse{} 120 if err := m.client.CallWithJson(ctx, &resp, http.MethodPost, m.url("/v2/hubs/%s/streams/%s/snapshot", req.Hub, encodeStream(req.Stream)), nil, req); err != nil { 121 return nil, err 122 } 123 return &resp, nil 124 } 125 126 // StreamConverts 修改直播流转码配置 127 // POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/converts 128 func (m *Manager) StreamConverts(ctx context.Context, req StreamConvertsRequest) error { 129 if err := defaultValidator.Validate(req); err != nil { 130 return err 131 } 132 133 if err := m.client.CallWithJson(ctx, nil, http.MethodPost, m.url("/v2/hubs/%s/streams/%s/converts", req.Hub, encodeStream(req.Stream)), nil, req); err != nil { 134 return err 135 } 136 return nil 137 }