github.com/qiniu/go-sdk/v7@v7.27.0/qvs/template.go (about)

     1  package qvs
     2  
     3  import (
     4  	"context"
     5  	"net/url"
     6  )
     7  
     8  type Template struct {
     9  	ID               string `json:"id"`
    10  	Name             string `json:"name"`             // 模版名称,格式为 4 ~ 100个字符,可包含小写字母、数字、中划线、汉字)
    11  	Desc             string `json:"desc,omitempty"`   // 模版描述
    12  	Bucket           string `json:"bucket"`           // 模版对应的对象存储的bucket
    13  	DeleteAfterDays  int    `json:"deleteAfterDays"`  // 存储过期时间,默认永久不过期
    14  	TemplateType     int    `json:"templateType"`     // 模板类型,取值:0(录制模版), 1(截图模版)
    15  	FileType         int    `json:"fileType"`         // 文件存储类型,取值:0(普通存储),1(低频存储)
    16  	RecordType       int    `json:"recordType"`       // 录制模式, 0(不录制),1(实时录制), 2(按需录制)
    17  	RecordFileFormat int    `json:"recordFileFormat"` // 录制文件存储格式(多选), 范围:1(001)~7(111), 从左往右的三位二进制数分别代表MP4, FLV, M3U8; 0代表不选择该格式, 1代表选择;例如:2(010)代表选择FLV格式,6(110)代表选择MP4和FLV格式,1(001)代表选择M3U8格式,7(111)代表三种格式均选择
    18  
    19  	// record/ts/${namespaceId}/${streamId}/${startMs}-${endMs}.ts
    20  	TSFileNameTemplate string `json:"tsFileNameTemplate"`
    21  	// record/snap/${namespaceId}/${streamId}/${startMs}.jpg // 录制封面
    22  	RecordSnapFileNameFmt string `json:"recordSnapFileNameTemplate"`
    23  	RecordInterval        int    `json:"recordInterval"` // 录制文件长度
    24  
    25  	M3u8FileNameTemplate string `json:"m3u8FileNameTemplate,omitempty"` // m3u8文件命名格式
    26  	FlvFileNameTemplate  string `json:"flvFileNameTemplate,omitempty"`  // flv文件命名格式
    27  	Mp4FileNameTemplate  string `json:"mp4FileNameTemplate,omitempty"`  // mp4文件命名格式
    28  
    29  	JpgOverwriteStatus bool `json:"jpgOverwriteStatus"` // 开启覆盖式截图(一般用于流封面)
    30  	JpgSequenceStatus  bool `json:"jpgSequenceStatus"`  // 开启序列式截图
    31  	JpgOnDemandStatus  bool `json:"jpgOnDemandStatus"`  // 开启按需截图
    32  
    33  	// 覆盖式截图文件命名格式:snapshot/jpg/${namespaceId}/${streamId}/${streamId}.jpg
    34  	JpgOverwriteFileNameTemplate string `json:"jpgOverwriteFileNameTemplate"`
    35  	// 序列式截图文件命名格式:snapshot/jpg/${namespaceId}/${streamId}/${startMs}.jpg
    36  	JpgSequenceFileNameTemplate string `json:"jpgSequenceFileNameTemplate"`
    37  	// 按需式截图文件命名格式:snapshot/jpg/${namespaceId}/${streamId}/ondemand-${startMs}.jpg
    38  	JpgOnDemandFileNameTemplate string `json:"jpgOnDemandFileNameTemplate"`
    39  	SnapInterval                int    `json:"snapInterval"` // 序列式截图时间间隔
    40  
    41  	CreatedAt int64  `json:"createdAt,omitempty"` // 模板创建时间
    42  	UpdatedAt int64  `json:"updatedAt,omitempty"` // 模板更新时间
    43  	Zone      string `json:"zone"`                // zone为服务区域配置项,可选项为z0, z1, z2,默认为z0. z0表示华东, z1表示华北、z2表示华南
    44  }
    45  
    46  /*
    47  创建模板API
    48  */
    49  func (manager *Manager) AddTemplate(tmpl *Template) (*Template, error) {
    50  	var ret Template
    51  	err := manager.client.CallWithJson(context.Background(), &ret, "POST", manager.url("/templates"), nil, tmpl)
    52  	if err != nil {
    53  		return nil, err
    54  	}
    55  	return &ret, err
    56  }
    57  
    58  /*
    59  查询模板信息API
    60  */
    61  func (manager *Manager) QueryTemplate(templId string) (*Template, error) {
    62  	var ret Template
    63  	err := manager.client.Call(context.Background(), &ret, "GET", manager.url("/templates/%s", templId), nil)
    64  	if err != nil {
    65  		return nil, err
    66  	}
    67  	return &ret, nil
    68  }
    69  
    70  /*
    71  修改模板API
    72  */
    73  func (manager *Manager) UpdateTemplate(templId string, ops []PatchOperation) (*Template, error) {
    74  	req := M{"operations": ops}
    75  	var ret Template
    76  	err := manager.client.CallWithJson(context.Background(), &ret, "PATCH", manager.url("/templates/%s", templId), nil, req)
    77  	if err != nil {
    78  		return nil, err
    79  	}
    80  	return &ret, err
    81  }
    82  
    83  /*
    84  删除模板API
    85  */
    86  func (manager *Manager) DeleteTemplate(templId string) error {
    87  	return manager.client.Call(context.Background(), nil, "DELETE", manager.url("/templates/%s", templId), nil)
    88  }
    89  
    90  /*
    91  获取模版列表API
    92  */
    93  func (manager *Manager) ListTemplate(offset, line int, sortBy string, templateType int, match string) ([]Template, int64, error) {
    94  	ret := struct {
    95  		Items []Template `json:"items"`
    96  		Total int64      `json:"total"`
    97  	}{}
    98  
    99  	query := url.Values{}
   100  	setQuery(query, "offset", offset)
   101  	setQuery(query, "line", line)
   102  	setQuery(query, "sortBy", sortBy)
   103  	setQuery(query, "match", match)
   104  	setQuery(query, "templateType", templateType)
   105  
   106  	err := manager.client.Call(context.Background(), &ret, "GET", manager.url("/templates?%v", query.Encode()), nil)
   107  	return ret.Items, ret.Total, err
   108  }