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  }