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 }