From eaabf887c83114c9efae236adc700de7d26d7aab Mon Sep 17 00:00:00 2001 From: nickyinluo Date: Tue, 1 Nov 2022 14:32:36 +0800 Subject: [PATCH 1/7] support css watermark, watermark_rule and pull stream task --- go.mod | 1 + go.sum | 3 + tencentcloud/connectivity/client.go | 15 + tencentcloud/provider.go | 3 + .../resource_tc_css_pull_stream_task.go | 790 + .../resource_tc_css_pull_stream_task_test.go | 66 + tencentcloud/resource_tc_css_watermark.go | 287 + .../resource_tc_css_watermark_rule.go | 221 + .../resource_tc_css_watermark_rule_test.go | 40 + .../resource_tc_css_watermark_test.go | 42 + tencentcloud/service_tencentcloud_css.go | 190 + .../tencentcloud/live/LICENSE | 201 + .../tencentcloud/live/v20180801/client.go | 9302 ++++++++++++ .../tencentcloud/live/v20180801/errors.go | 547 + .../tencentcloud/live/v20180801/models.go | 12656 ++++++++++++++++ vendor/modules.txt | 2 + .../docs/r/css_pull_stream_task.html.markdown | 105 + website/docs/r/css_watermark.html.markdown | 52 + .../docs/r/css_watermark_rule.html.markdown | 49 + website/tencentcloud.erb | 20 + 20 files changed, 24592 insertions(+) create mode 100644 tencentcloud/resource_tc_css_pull_stream_task.go create mode 100644 tencentcloud/resource_tc_css_pull_stream_task_test.go create mode 100644 tencentcloud/resource_tc_css_watermark.go create mode 100644 tencentcloud/resource_tc_css_watermark_rule.go create mode 100644 tencentcloud/resource_tc_css_watermark_rule_test.go create mode 100644 tencentcloud/resource_tc_css_watermark_test.go create mode 100644 tencentcloud/service_tencentcloud_css.go create mode 100644 vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/LICENSE create mode 100644 vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/client.go create mode 100644 vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/errors.go create mode 100644 vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/models.go create mode 100644 website/docs/r/css_pull_stream_task.html.markdown create mode 100644 website/docs/r/css_watermark.html.markdown create mode 100644 website/docs/r/css_watermark_rule.html.markdown diff --git a/go.mod b/go.mod index fcbbbcc854..05830186bf 100644 --- a/go.mod +++ b/go.mod @@ -49,6 +49,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.199 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.525 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.199 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.518 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.391 diff --git a/go.sum b/go.sum index 8243a20fcf..287f6febb5 100644 --- a/go.sum +++ b/go.sum @@ -503,6 +503,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.518/go.mod github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.519/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.520/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.524/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.525/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.527/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.529 h1:B26Pn9N5O3Mmbh8icZSpZ8kkhcfnapUdU/TBxPDWggA= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.529/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= @@ -533,6 +534,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.199 h1:rSDQeqv github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.199/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413 h1:9v95vMBfqvBciwagN+ZqP6Ue3iBFYZRVQga4c1yL5Uc= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413/go.mod h1:nG/8Iz/MtV4zBxz9ToLJ90O4ocdME9WUKwims/bitr4= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.525 h1:BXXFoizOv43lfZ/Ww8t7jvwiD3RyssckRgWDGIqjDPE= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.525/go.mod h1:Irr11PIq15N1XYyeH2c/RqtDsAbEWY4KXiMxu4BVRfI= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532 h1:3PCI1M2dvfAWVx+5xTqap+8qIsmG8cQ4lpvGfwmO2NM= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532/go.mod h1:lb1pdGQn9dzyXmq6+NkpN4avTVRvG+ziqFtOeL5D7y4= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.199 h1:2jsGprrewRIP3smcTsY5GpEuOuJ+qyV/BN3Py0Ivf1o= diff --git a/tencentcloud/connectivity/client.go b/tencentcloud/connectivity/client.go index dd27ee000b..eb1889cd0e 100644 --- a/tencentcloud/connectivity/client.go +++ b/tencentcloud/connectivity/client.go @@ -47,6 +47,7 @@ import ( gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" @@ -130,6 +131,7 @@ type TencentCloudClient struct { temConn *tem.Client teoConn *teo.Client tcmConn *tcm.Client + cssConn *css.Client sesConn *ses.Client dcdbConn *dcdb.Client smsConn *sms.Client @@ -788,6 +790,19 @@ func (me *TencentCloudClient) UseTcmClient() *tcm.Client { return me.tcmConn } +// UseCssClient returns css client for service +func (me *TencentCloudClient) UseCssClient() *css.Client { + if me.cssConn != nil { + return me.cssConn + } + + cpf := me.NewClientProfile(300) + me.cssConn, _ = css.NewClient(me.Credential, me.Region, cpf) + me.cssConn.WithHttpTransport(&LogRoundTripper{}) + + return me.cssConn +} + // UseSesClient returns Ses client for service func (me *TencentCloudClient) UseSesClient() *ses.Client { if me.sesConn != nil { diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index d74df52ee4..9054842242 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -1335,6 +1335,9 @@ func Provider() terraform.ResourceProvider { "tencentcloud_mariadb_parameters": resourceTencentCloudMariadbParameters(), "tencentcloud_mariadb_log_file_retention_period": resourceTencentCloudMariadbLogFileRetentionPeriod(), "tencentcloud_mariadb_security_groups": resourceTencentCloudMariadbSecurityGroups(), + "tencentcloud_css_watermark": resourceTencentCloudCssWatermark(), + "tencentcloud_css_watermark_rule": resourceTencentCloudCssWatermarkRule(), + "tencentcloud_css_pull_stream_task": resourceTencentCloudCssPullStreamTask(), }, ConfigureFunc: providerConfigure, diff --git a/tencentcloud/resource_tc_css_pull_stream_task.go b/tencentcloud/resource_tc_css_pull_stream_task.go new file mode 100644 index 0000000000..d020f17599 --- /dev/null +++ b/tencentcloud/resource_tc_css_pull_stream_task.go @@ -0,0 +1,790 @@ +/* +Provides a resource to create a css pull_stream_task + +Example Usage + +```hcl +resource "tencentcloud_css_pull_stream_task" "pull_stream_task" { + source_type = "PullLivePushLive" + source_urls = "" + domain_name = "" + app_name = "" + stream_name = "" + start_time = "" + end_time = "" + operator = "" + push_args = "" + callback_events = "" + vod_loop_times = "" + vod_refresh_type = "" + callback_url = "" + extra_cmd = "" + comment = "" + to_url = "" + backup_source_type = "" + backup_source_url = "" + watermark_list { + picture_url = "" + x_position = "" + y_position = "" + width = "" + height = "" + location = "" + + } + status = "" + file_index = "" + offset_time = "" + } + +``` +Import + +css pull_stream_task can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_pull_stream_task.pull_stream_task pullStreamTask_id +``` +*/ +package tencentcloud + +import ( + "context" + "fmt" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func resourceTencentCloudCssPullStreamTask() *schema.Resource { + return &schema.Resource{ + Read: resourceTencentCloudCssPullStreamTaskRead, + Create: resourceTencentCloudCssPullStreamTaskCreate, + Update: resourceTencentCloudCssPullStreamTaskUpdate, + Delete: resourceTencentCloudCssPullStreamTaskDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "source_type": { + Type: schema.TypeString, + Required: true, + Description: "&#39;PullLivePushLive&#39;: SourceUrls live type, &#39;PullVodPushLive&#39;: SourceUrls vod type.", + }, + + "source_urls": { + Type: schema.TypeSet, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + Required: true, + Description: "Pull Source media, SourceType=PullLivePushLive only 1 value, SourceType=PullLivePushLive can input multi values.", + }, + + "domain_name": { + Type: schema.TypeString, + Required: true, + Description: "push domain name.", + }, + + "app_name": { + Type: schema.TypeString, + Required: true, + Description: "push app name.", + }, + + "stream_name": { + Type: schema.TypeString, + Required: true, + Description: "push stream name.", + }, + + "start_time": { + Type: schema.TypeString, + Required: true, + Description: "task begin time.", + }, + + "end_time": { + Type: schema.TypeString, + Required: true, + Description: "task end time.", + }, + + "operator": { + Type: schema.TypeString, + Required: true, + Description: "desc operator user name.", + }, + + "push_args": { + Type: schema.TypeString, + Optional: true, + Description: "other pushing args.", + }, + + "callback_events": { + Type: schema.TypeSet, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + Optional: true, + Description: "defind the callback event you need, null for all. TaskStart, TaskExit, VodSourceFileStart, VodSourceFileFinish, ResetTaskConfig, PullFileUnstable, PushStreamUnstable, PullFileFailed, PushStreamFailed, FileEndEarly.", + }, + + "vod_loop_times": { + Type: schema.TypeInt, + Optional: true, + Description: "loop time for vod.", + }, + + "vod_refresh_type": { + Type: schema.TypeString, + Optional: true, + Description: "vod refresh method. &#39;ImmediateNewSource&#39;: switch to new source at once, &#39;ContinueBreakPoint&#39;: switch to new source while old source finish.", + }, + + "callback_url": { + Type: schema.TypeString, + Optional: true, + Description: "task event callback url.", + }, + + "extra_cmd": { + Type: schema.TypeString, + Optional: true, + Description: "ignore_region for ignore the input region and reblance inside the server.", + }, + + "comment": { + Type: schema.TypeString, + Optional: true, + Description: "desc for pull task.", + }, + + "to_url": { + Type: schema.TypeString, + Optional: true, + Description: "full target push url, DomainName, AppName, StreamName field must be empty.", + }, + + "backup_source_type": { + Type: schema.TypeString, + Optional: true, + Description: "backup pull source type.", + }, + + "backup_source_url": { + Type: schema.TypeString, + Optional: true, + Description: "backup pull source.", + }, + + "watermark_list": { + Type: schema.TypeList, + Optional: true, + Description: "watermark list, max 4 setting.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "picture_url": { + Type: schema.TypeString, + Required: true, + Description: "watermark picture url.", + }, + "x_position": { + Type: schema.TypeInt, + Required: true, + Description: "x position.", + }, + "y_position": { + Type: schema.TypeInt, + Required: true, + Description: "y position.", + }, + "width": { + Type: schema.TypeInt, + Required: true, + Description: "pic width.", + }, + "height": { + Type: schema.TypeInt, + Required: true, + Description: "pic height.", + }, + "location": { + Type: schema.TypeInt, + Required: true, + Description: "position type, 0:left top, 1:right top, 2:right bot, 3: left bot.", + }, + }, + }, + }, + + "status": { + Type: schema.TypeString, + Optional: true, + Description: "task enable or disable.", + }, + + "create_by": { + Type: schema.TypeString, + Computed: true, + Description: "desc who create the task.", + }, + + "create_time": { + Type: schema.TypeString, + Computed: true, + Description: "create time.", + }, + + "update_by": { + Type: schema.TypeString, + Computed: true, + Description: "desc who update the task.", + }, + + "update_time": { + Type: schema.TypeString, + Computed: true, + Description: "update time.", + }, + + "file_index": { + Type: schema.TypeInt, + Optional: true, + Description: "task enable or disable.", + }, + + "offset_time": { + Type: schema.TypeInt, + Optional: true, + Description: "task enable or disable.", + }, + + "region": { + Type: schema.TypeString, + Computed: true, + Description: "task run region.", + }, + }, + } +} + +func resourceTencentCloudCssPullStreamTaskCreate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_pull_stream_task.create")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + + var ( + request = css.NewCreateLivePullStreamTaskRequest() + response *css.CreateLivePullStreamTaskResponse + taskId string + ) + + if v, ok := d.GetOk("source_type"); ok { + + request.SourceType = helper.String(v.(string)) + } + + if v, ok := d.GetOk("source_urls"); ok { + sourceUrlsSet := v.(*schema.Set).List() + for i := range sourceUrlsSet { + sourceUrls := sourceUrlsSet[i].(string) + request.SourceUrls = append(request.SourceUrls, &sourceUrls) + } + } + + if v, ok := d.GetOk("domain_name"); ok { + + request.DomainName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("app_name"); ok { + + request.AppName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("stream_name"); ok { + + request.StreamName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("start_time"); ok { + + request.StartTime = helper.String(v.(string)) + } + + if v, ok := d.GetOk("end_time"); ok { + + request.EndTime = helper.String(v.(string)) + } + + if v, ok := d.GetOk("operator"); ok { + + request.Operator = helper.String(v.(string)) + } + + if v, ok := d.GetOk("push_args"); ok { + + request.PushArgs = helper.String(v.(string)) + } + + if v, ok := d.GetOk("callback_events"); ok { + callbackEventsSet := v.(*schema.Set).List() + for i := range callbackEventsSet { + callbackEvents := callbackEventsSet[i].(string) + request.CallbackEvents = append(request.CallbackEvents, &callbackEvents) + } + } + + if v, ok := d.GetOk("vod_loop_times"); ok { + request.VodLoopTimes = helper.String(helper.Int64ToStr(v.(int64))) + } + + if v, ok := d.GetOk("vod_refresh_type"); ok { + request.VodRefreshType = helper.String(v.(string)) + } + + if v, ok := d.GetOk("callback_url"); ok { + request.CallbackUrl = helper.String(v.(string)) + } + + if v, ok := d.GetOk("extra_cmd"); ok { + request.ExtraCmd = helper.String(v.(string)) + } + + if v, ok := d.GetOk("comment"); ok { + request.Comment = helper.String(v.(string)) + } + + if v, ok := d.GetOk("to_url"); ok { + request.ToUrl = helper.String(v.(string)) + } + + if v, ok := d.GetOk("backup_source_type"); ok { + request.BackupSourceType = helper.String(v.(string)) + } + + if v, ok := d.GetOk("backup_source_url"); ok { + request.BackupSourceUrl = helper.String(v.(string)) + } + + if v, ok := d.GetOk("watermark_list"); ok { + for _, item := range v.([]interface{}) { + dMap := item.(map[string]interface{}) + pullPushWatermarkInfo := css.PullPushWatermarkInfo{} + if v, ok := dMap["picture_url"]; ok { + pullPushWatermarkInfo.PictureUrl = helper.String(v.(string)) + } + if v, ok := dMap["x_position"]; ok { + pullPushWatermarkInfo.XPosition = helper.IntInt64(v.(int)) + } + if v, ok := dMap["y_position"]; ok { + pullPushWatermarkInfo.YPosition = helper.IntInt64(v.(int)) + } + if v, ok := dMap["width"]; ok { + pullPushWatermarkInfo.Width = helper.IntInt64(v.(int)) + } + if v, ok := dMap["height"]; ok { + pullPushWatermarkInfo.Height = helper.IntInt64(v.(int)) + } + if v, ok := dMap["location"]; ok { + pullPushWatermarkInfo.Location = helper.IntInt64(v.(int)) + } + + request.WatermarkList = append(request.WatermarkList, &pullPushWatermarkInfo) + } + } + + err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().CreateLivePullStreamTask(request) + if e != nil { + return retryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + response = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create css pullStreamTask failed, reason:%+v", logId, err) + return err + } + + taskId = *response.Response.TaskId + + d.SetId(taskId) + return resourceTencentCloudCssPullStreamTaskRead(d, meta) +} + +func resourceTencentCloudCssPullStreamTaskRead(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_pull_stream_task.read")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + taskId := d.Id() + + pullStreamTask, err := service.DescribeCssPullStreamTask(ctx, taskId) + + if err != nil { + return err + } + + if pullStreamTask == nil { + d.SetId("") + return fmt.Errorf("resource `pullStreamTask` %s does not exist", taskId) + } + + if pullStreamTask.SourceType != nil { + _ = d.Set("source_type", pullStreamTask.SourceType) + } + + if pullStreamTask.SourceUrls != nil { + _ = d.Set("source_urls", pullStreamTask.SourceUrls) + } + + if pullStreamTask.DomainName != nil { + _ = d.Set("domain_name", pullStreamTask.DomainName) + } + + if pullStreamTask.AppName != nil { + _ = d.Set("app_name", pullStreamTask.AppName) + } + + if pullStreamTask.StreamName != nil { + _ = d.Set("stream_name", pullStreamTask.StreamName) + } + + if pullStreamTask.StartTime != nil { + _ = d.Set("start_time", pullStreamTask.StartTime) + } + + if pullStreamTask.EndTime != nil { + _ = d.Set("end_time", pullStreamTask.EndTime) + } + + // if pullStreamTask.Operator != nil { + // _ = d.Set("operator", pullStreamTask.Operator) + // } + + if pullStreamTask.PushArgs != nil { + _ = d.Set("push_args", pullStreamTask.PushArgs) + } + + if pullStreamTask.CallbackEvents != nil { + _ = d.Set("callback_events", pullStreamTask.CallbackEvents) + } + + if pullStreamTask.VodLoopTimes != nil { + _ = d.Set("vod_loop_times", pullStreamTask.VodLoopTimes) + } + + if pullStreamTask.VodRefreshType != nil { + _ = d.Set("vod_refresh_type", pullStreamTask.VodRefreshType) + } + + if pullStreamTask.CallbackUrl != nil { + _ = d.Set("callback_url", pullStreamTask.CallbackUrl) + } + + if pullStreamTask.Comment != nil { + _ = d.Set("comment", pullStreamTask.Comment) + } + + if pullStreamTask.BackupSourceType != nil { + _ = d.Set("backup_source_type", pullStreamTask.BackupSourceType) + } + + if pullStreamTask.BackupSourceUrl != nil { + _ = d.Set("backup_source_url", pullStreamTask.BackupSourceUrl) + } + + if pullStreamTask.WatermarkList != nil { + watermarkListList := []interface{}{} + for _, watermarkList := range pullStreamTask.WatermarkList { + watermarkListMap := map[string]interface{}{} + if watermarkList.PictureUrl != nil { + watermarkListMap["picture_url"] = watermarkList.PictureUrl + } + if watermarkList.XPosition != nil { + watermarkListMap["x_position"] = watermarkList.XPosition + } + if watermarkList.YPosition != nil { + watermarkListMap["y_position"] = watermarkList.YPosition + } + if watermarkList.Width != nil { + watermarkListMap["width"] = watermarkList.Width + } + if watermarkList.Height != nil { + watermarkListMap["height"] = watermarkList.Height + } + if watermarkList.Location != nil { + watermarkListMap["location"] = watermarkList.Location + } + + watermarkListList = append(watermarkListList, watermarkListMap) + } + _ = d.Set("watermark_list", watermarkListList) + } + + if pullStreamTask.Status != nil { + _ = d.Set("status", pullStreamTask.Status) + } + + if pullStreamTask.CreateBy != nil { + _ = d.Set("create_by", pullStreamTask.CreateBy) + } + + if pullStreamTask.CreateTime != nil { + _ = d.Set("create_time", pullStreamTask.CreateTime) + } + + if pullStreamTask.UpdateBy != nil { + _ = d.Set("update_by", pullStreamTask.UpdateBy) + } + + if pullStreamTask.UpdateTime != nil { + _ = d.Set("update_time", pullStreamTask.UpdateTime) + } + + // if pullStreamTask.FileIndex != nil { + // _ = d.Set("file_index", pullStreamTask.FileIndex) + // } + + // if pullStreamTask.OffsetTime != nil { + // _ = d.Set("offset_time", pullStreamTask.OffsetTime) + // } + + if pullStreamTask.Region != nil { + _ = d.Set("region", pullStreamTask.Region) + } + + return nil +} + +func resourceTencentCloudCssPullStreamTaskUpdate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_pull_stream_task.update")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + // ctx := context.WithValue(context.TODO(), logIdKey, logId) + + request := css.NewModifyLivePullStreamTaskRequest() + + request.TaskId = helper.String(d.Id()) + + if d.HasChange("source_type") { + + return fmt.Errorf("`source_type` do not support change now.") + + } + + if d.HasChange("source_urls") { + if v, ok := d.GetOk("source_urls"); ok { + sourceUrlsSet := v.(*schema.Set).List() + for i := range sourceUrlsSet { + sourceUrls := sourceUrlsSet[i].(string) + request.SourceUrls = append(request.SourceUrls, &sourceUrls) + } + } + } + + if d.HasChange("domain_name") { + return fmt.Errorf("`domain_name` do not support change now.") + } + + if d.HasChange("app_name") { + return fmt.Errorf("`app_name` do not support change now.") + + } + + if d.HasChange("stream_name") { + return fmt.Errorf("`stream_name` do not support change now.") + } + + if d.HasChange("start_time") { + if v, ok := d.GetOk("start_time"); ok { + request.StartTime = helper.String(v.(string)) + } + } + + if d.HasChange("end_time") { + if v, ok := d.GetOk("end_time"); ok { + request.EndTime = helper.String(v.(string)) + } + } + + if d.HasChange("operator") { + if v, ok := d.GetOk("operator"); ok { + request.Operator = helper.String(v.(string)) + } + } + + if d.HasChange("push_args") { + + return fmt.Errorf("`push_args` do not support change now.") + + } + + if d.HasChange("callback_events") { + if v, ok := d.GetOk("callback_events"); ok { + callbackEventsSet := v.(*schema.Set).List() + for i := range callbackEventsSet { + callbackEvents := callbackEventsSet[i].(string) + request.CallbackEvents = append(request.CallbackEvents, &callbackEvents) + } + } + + } + + if d.HasChange("vod_loop_times") { + if v, ok := d.GetOk("vod_loop_times"); ok { + request.VodLoopTimes = helper.IntInt64(v.(int)) + } + + } + + if d.HasChange("vod_refresh_type") { + if v, ok := d.GetOk("vod_refresh_type"); ok { + request.VodRefreshType = helper.String(v.(string)) + } + + } + + if d.HasChange("callback_url") { + if v, ok := d.GetOk("callback_url"); ok { + request.CallbackUrl = helper.String(v.(string)) + } + + } + + if d.HasChange("extra_cmd") { + + return fmt.Errorf("`extra_cmd` do not support change now.") + + } + + if d.HasChange("comment") { + if v, ok := d.GetOk("comment"); ok { + request.Comment = helper.String(v.(string)) + } + + } + + if d.HasChange("to_url") { + + return fmt.Errorf("`to_url` do not support change now.") + + } + + if d.HasChange("backup_source_type") { + if v, ok := d.GetOk("backup_source_type"); ok { + request.BackupSourceType = helper.String(v.(string)) + } + + } + + if d.HasChange("backup_source_url") { + if v, ok := d.GetOk("backup_source_url"); ok { + request.BackupSourceUrl = helper.String(v.(string)) + } + + } + + if d.HasChange("watermark_list") { + if v, ok := d.GetOk("watermark_list"); ok { + for _, item := range v.([]interface{}) { + dMap := item.(map[string]interface{}) + pullPushWatermarkInfo := css.PullPushWatermarkInfo{} + if v, ok := dMap["picture_url"]; ok { + pullPushWatermarkInfo.PictureUrl = helper.String(v.(string)) + } + if v, ok := dMap["x_position"]; ok { + pullPushWatermarkInfo.XPosition = helper.IntInt64(v.(int)) + } + if v, ok := dMap["y_position"]; ok { + pullPushWatermarkInfo.YPosition = helper.IntInt64(v.(int)) + } + if v, ok := dMap["width"]; ok { + pullPushWatermarkInfo.Width = helper.IntInt64(v.(int)) + } + if v, ok := dMap["height"]; ok { + pullPushWatermarkInfo.Height = helper.IntInt64(v.(int)) + } + if v, ok := dMap["location"]; ok { + pullPushWatermarkInfo.Location = helper.IntInt64(v.(int)) + } + + request.WatermarkList = append(request.WatermarkList, &pullPushWatermarkInfo) + } + } + + } + + if d.HasChange("status") { + if v, ok := d.GetOk("status"); ok { + request.Status = helper.String(v.(string)) + } + + } + + if d.HasChange("file_index") { + if v, ok := d.GetOk("file_index"); ok { + request.FileIndex = helper.IntInt64(v.(int)) + } + + } + + if d.HasChange("offset_time") { + if v, ok := d.GetOk("offset_time"); ok { + request.OffsetTime = helper.IntInt64(v.(int)) + } + + } + + err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().ModifyLivePullStreamTask(request) + if e != nil { + return retryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create css pullStreamTask failed, reason:%+v", logId, err) + return err + } + + return resourceTencentCloudCssPullStreamTaskRead(d, meta) +} + +func resourceTencentCloudCssPullStreamTaskDelete(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_pull_stream_task.delete")() + defer inconsistentCheck(d, meta)() + + // logId := getLogId(contextNil) + // ctx := context.WithValue(context.TODO(), logIdKey, logId) + + // service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + // pullStreamTaskId := d.Id() + + // if err := service.DeleteCssPullStreamTaskById(ctx, taskId); err != nil { + // return err + // } + + return nil +} diff --git a/tencentcloud/resource_tc_css_pull_stream_task_test.go b/tencentcloud/resource_tc_css_pull_stream_task_test.go new file mode 100644 index 0000000000..e6031b13c8 --- /dev/null +++ b/tencentcloud/resource_tc_css_pull_stream_task_test.go @@ -0,0 +1,66 @@ +package tencentcloud + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +func TestAccTencentCloudCssPullStreamTask_basic(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCssPullStreamTask, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "id"), + ), + }, + { + ResourceName: "tencentcloud_css_pull_stream_task.pullStreamTask", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +const testAccCssPullStreamTask = ` + +resource "tencentcloud_css_pull_stream_task" "pull_stream_task" { + source_type = "PullLivePushLive" + source_urls = "" + domain_name = "" + app_name = "" + stream_name = "" + start_time = "" + end_time = "" + operator = "" + push_args = "" + callback_events = "" + vod_loop_times = "" + vod_refresh_type = "" + callback_url = "" + extra_cmd = "" + comment = "" + to_url = "" + backup_source_type = "" + backup_source_url = "" + watermark_list { + picture_url = "" + x_position = "" + y_position = "" + width = "" + height = "" + location = "" + + } + status = "" + file_index = "" + offset_time = "" + } + +` diff --git a/tencentcloud/resource_tc_css_watermark.go b/tencentcloud/resource_tc_css_watermark.go new file mode 100644 index 0000000000..23cad43571 --- /dev/null +++ b/tencentcloud/resource_tc_css_watermark.go @@ -0,0 +1,287 @@ +/* +Provides a resource to create a css watermark + +Example Usage + +```hcl +resource "tencentcloud_css_watermark" "watermark" { + picture_url = "" + watermark_name = ""-+ + + x_position = "" + y_position = "" + width = "" + height = "" +} + +``` +Import + +css watermark can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_watermark.watermark watermark_id +``` +*/ +package tencentcloud + +import ( + "context" + "fmt" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func resourceTencentCloudCssWatermark() *schema.Resource { + return &schema.Resource{ + Read: resourceTencentCloudCssWatermarkRead, + Create: resourceTencentCloudCssWatermarkCreate, + Update: resourceTencentCloudCssWatermarkUpdate, + Delete: resourceTencentCloudCssWatermarkDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "picture_url": { + Type: schema.TypeString, + Required: true, + Description: "watermark url.", + }, + + "watermark_name": { + Type: schema.TypeString, + Required: true, + Description: "watermark name.", + }, + + "x_position": { + Type: schema.TypeInt, + Optional: true, + Description: "x position of the picture.", + }, + + "y_position": { + Type: schema.TypeInt, + Optional: true, + Description: "y position of the picture.", + }, + + "width": { + Type: schema.TypeInt, + Optional: true, + Description: "width of the picture.", + }, + + "height": { + Type: schema.TypeInt, + Optional: true, + Description: "height of the picture.", + }, + }, + } +} + +func resourceTencentCloudCssWatermarkCreate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark.create")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + + var ( + request = css.NewAddLiveWatermarkRequest() + response *css.AddLiveWatermarkResponse + watermarkId uint64 + ) + + if v, ok := d.GetOk("picture_url"); ok { + + request.PictureUrl = helper.String(v.(string)) + } + + if v, ok := d.GetOk("watermark_name"); ok { + + request.WatermarkName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("x_position"); ok { + request.XPosition = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("y_position"); ok { + request.YPosition = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("width"); ok { + request.Width = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("height"); ok { + request.Height = helper.IntInt64(v.(int)) + } + + err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().AddLiveWatermark(request) + if e != nil { + return retryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + response = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create css watermark failed, reason:%+v", logId, err) + return err + } + + watermarkId = *response.Response.WatermarkId + + d.SetId(helper.UInt64ToStr(watermarkId)) + return resourceTencentCloudCssWatermarkRead(d, meta) +} + +func resourceTencentCloudCssWatermarkRead(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark.read")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + watermarkId := d.Id() + + watermark, err := service.DescribeCssWatermark(ctx, watermarkId) + + if err != nil { + return err + } + + if watermark == nil { + d.SetId("") + return fmt.Errorf("resource `watermark` %s does not exist", watermarkId) + } + + if watermark.PictureUrl != nil { + _ = d.Set("picture_url", watermark.PictureUrl) + } + + if watermark.WatermarkName != nil { + _ = d.Set("watermark_name", watermark.WatermarkName) + } + + if watermark.XPosition != nil { + _ = d.Set("x_position", watermark.XPosition) + } + + if watermark.YPosition != nil { + _ = d.Set("y_position", watermark.YPosition) + } + + if watermark.Width != nil { + _ = d.Set("width", watermark.Width) + } + + if watermark.Height != nil { + _ = d.Set("height", watermark.Height) + } + + return nil +} + +func resourceTencentCloudCssWatermarkUpdate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark.update")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + // ctx := context.WithValue(context.TODO(), logIdKey, logId) + + request := css.NewUpdateLiveWatermarkRequest() + + watermarkId := helper.StrToInt64(d.Id()) + + request.WatermarkId = helper.Int64(watermarkId) + + if d.HasChange("picture_url") { + if v, ok := d.GetOk("picture_url"); ok { + request.PictureUrl = helper.String(v.(string)) + } + + } + + if d.HasChange("watermark_name") { + if v, ok := d.GetOk("watermark_name"); ok { + request.WatermarkName = helper.String(v.(string)) + } + + } + + if d.HasChange("x_position") { + if v, ok := d.GetOk("x_position"); ok { + request.XPosition = helper.IntInt64(v.(int)) + } + + } + + if d.HasChange("y_position") { + if v, ok := d.GetOk("y_position"); ok { + request.YPosition = helper.IntInt64(v.(int)) + } + + } + + if d.HasChange("width") { + if v, ok := d.GetOk("width"); ok { + request.Width = helper.IntInt64(v.(int)) + } + + } + + if d.HasChange("height") { + if v, ok := d.GetOk("height"); ok { + request.Height = helper.IntInt64(v.(int)) + } + + } + + err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().UpdateLiveWatermark(request) + if e != nil { + return retryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create css watermark failed, reason:%+v", logId, err) + return err + } + + return resourceTencentCloudCssWatermarkRead(d, meta) +} + +func resourceTencentCloudCssWatermarkDelete(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark.delete")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + watermarkId := d.Id() + + if err := service.DeleteCssWatermarkById(ctx, watermarkId); err != nil { + return err + } + + return nil +} diff --git a/tencentcloud/resource_tc_css_watermark_rule.go b/tencentcloud/resource_tc_css_watermark_rule.go new file mode 100644 index 0000000000..2751db50a5 --- /dev/null +++ b/tencentcloud/resource_tc_css_watermark_rule.go @@ -0,0 +1,221 @@ +/* +Provides a resource to create a css watermark_rule + +Example Usage + +```hcl +resource "tencentcloud_css_watermark_rule" "watermark_rule" { + domain_name = "" + app_name = "" + stream_name = "" + watermark_id = "" + } + +``` +Import + +css watermark_rule can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_watermark_rule.watermark_rule watermarkRule_id +``` +*/ +package tencentcloud + +import ( + "context" + "fmt" + "log" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func resourceTencentCloudCssWatermarkRule() *schema.Resource { + return &schema.Resource{ + Read: resourceTencentCloudCssWatermarkRuleRead, + Create: resourceTencentCloudCssWatermarkRuleCreate, + // Update: resourceTencentCloudCssWatermarkRuleUpdate, + Delete: resourceTencentCloudCssWatermarkRuleDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "domain_name": { + Type: schema.TypeString, + Required: true, + Description: "rule domain name.", + }, + + "app_name": { + Type: schema.TypeString, + Required: true, + Description: "rule app name.", + }, + + "stream_name": { + Type: schema.TypeString, + Required: true, + Description: "rule stream name.", + }, + + "watermark_id": { + Type: schema.TypeInt, + Required: true, + Description: "watermark id created by AddLiveWatermark.", + }, + + "create_time": { + Type: schema.TypeInt, + Computed: true, + Description: "create time.", + }, + + "update_time": { + Type: schema.TypeString, + Computed: true, + Description: "update time.", + }, + }, + } +} + +func resourceTencentCloudCssWatermarkRuleCreate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark_rule.create")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + + var ( + request = css.NewCreateLiveWatermarkRuleRequest() + // response *css.CreateLiveWatermarkRuleResponse + domainName string + appName string + streamName string + watermarkId string + ) + + if v, ok := d.GetOk("domain_name"); ok { + domainName = v.(string) + request.DomainName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("app_name"); ok { + appName = v.(string) + request.AppName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("stream_name"); ok { + streamName = v.(string) + request.StreamName = helper.String(v.(string)) + } + + // if v, ok := d.GetOk("watermark_id"); ok { + // request.WatermarkId = helper.IntInt64(v.(int)) + // } + + err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().CreateLiveWatermarkRule(request) + if e != nil { + return retryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + // response = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create css watermarkRule failed, reason:%+v", logId, err) + return err + } + + watermarkId = "" //*response.Response.DomainName + + d.SetId(domainName + FILED_SP + appName + FILED_SP + streamName + FILED_SP + watermarkId) + return resourceTencentCloudCssWatermarkRuleRead(d, meta) +} + +func resourceTencentCloudCssWatermarkRuleRead(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark_rule.read")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + idSplit := strings.Split(d.Id(), FILED_SP) + if len(idSplit) != 4 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + domainName := idSplit[0] + appName := idSplit[1] + streamName := idSplit[2] + watermarkId := idSplit[3] + + watermarkRule, err := service.DescribeCssWatermarkRule(ctx, domainName, appName, streamName, watermarkId) + + if err != nil { + return err + } + + if watermarkRule == nil { + d.SetId("") + return fmt.Errorf("resource `watermarkRule` %s does not exist", d.Id()) + } + + if watermarkRule.DomainName != nil { + _ = d.Set("domain_name", watermarkRule.DomainName) + } + + if watermarkRule.AppName != nil { + _ = d.Set("app_name", watermarkRule.AppName) + } + + if watermarkRule.StreamName != nil { + _ = d.Set("stream_name", watermarkRule.StreamName) + } + + // if watermarkRule.WatermarkId != nil { + // _ = d.Set("watermark_id", watermarkRule.WatermarkId) + // } + + if watermarkRule.CreateTime != nil { + _ = d.Set("create_time", watermarkRule.CreateTime) + } + + if watermarkRule.UpdateTime != nil { + _ = d.Set("update_time", watermarkRule.UpdateTime) + } + + return nil +} + +func resourceTencentCloudCssWatermarkRuleDelete(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark_rule.delete")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + idSplit := strings.Split(d.Id(), FILED_SP) + if len(idSplit) != 4 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + domainName := idSplit[0] + appName := idSplit[1] + streamName := idSplit[2] + watermarkId := idSplit[3] + + if err := service.DeleteCssWatermarkRuleById(ctx, domainName, appName, streamName, watermarkId); err != nil { + return err + } + + return nil +} diff --git a/tencentcloud/resource_tc_css_watermark_rule_test.go b/tencentcloud/resource_tc_css_watermark_rule_test.go new file mode 100644 index 0000000000..00dbeed632 --- /dev/null +++ b/tencentcloud/resource_tc_css_watermark_rule_test.go @@ -0,0 +1,40 @@ +package tencentcloud + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +func TestAccTencentCloudCssWatermarkRule_basic(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCssWatermarkRule, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark_rule.watermark_rule", "id"), + ), + }, + { + ResourceName: "tencentcloud_css_watermark_rule.watermarkRule", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +const testAccCssWatermarkRule = ` + +resource "tencentcloud_css_watermark_rule" "watermark_rule" { + domain_name = "" + app_name = "" + stream_name = "" + watermark_id = "" + } + +` diff --git a/tencentcloud/resource_tc_css_watermark_test.go b/tencentcloud/resource_tc_css_watermark_test.go new file mode 100644 index 0000000000..5d65274c82 --- /dev/null +++ b/tencentcloud/resource_tc_css_watermark_test.go @@ -0,0 +1,42 @@ +package tencentcloud + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +func TestAccTencentCloudCssWatermark_basic(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCssWatermark, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark.watermark", "id"), + ), + }, + { + ResourceName: "tencentcloud_css_watermark.watermark", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +const testAccCssWatermark = ` + +resource "tencentcloud_css_watermark" "watermark" { + picture_url = "" + watermark_name = "" + x_position = "" + y_position = "" + width = "" + height = "" +} + +` diff --git a/tencentcloud/service_tencentcloud_css.go b/tencentcloud/service_tencentcloud_css.go new file mode 100644 index 0000000000..e7733022cc --- /dev/null +++ b/tencentcloud/service_tencentcloud_css.go @@ -0,0 +1,190 @@ +package tencentcloud + +import ( + "context" + "log" + + css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +type CssService struct { + client *connectivity.TencentCloudClient +} + +func (me *CssService) DescribeCssWatermark(ctx context.Context, watermarkId string) (watermark *css.WatermarkInfo, errRet error) { + var ( + logId = getLogId(ctx) + request = css.NewDescribeLiveWatermarkRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.WatermarkId = helper.Int64Uint64(helper.StrToInt64(watermarkId)) + + response, err := me.client.UseCssClient().DescribeLiveWatermark(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response.Response.Watermark == nil { + return + } + watermark = response.Response.Watermark + return +} + +func (me *CssService) DeleteCssWatermarkById(ctx context.Context, watermarkId string) (errRet error) { + logId := getLogId(ctx) + + request := css.NewDeleteLiveWatermarkRequest() + + request.WatermarkId = helper.Int64(helper.StrToInt64(watermarkId)) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseCssClient().DeleteLiveWatermark(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *CssService) DescribeCssWatermarkRule(ctx context.Context, domainName, appName, streamName, watermarkId string) (watermarkRule *css.RuleInfo, errRet error) { + var ( + logId = getLogId(ctx) + request = css.NewDescribeLiveWatermarkRulesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + // request.DomainName = &domainName + // request.AppName = &appName + // request.StreamName = &streamName + // request.WatermarkId = &watermarkId + + response, err := me.client.UseCssClient().DescribeLiveWatermarkRules(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if len(response.Response.Rules) < 1 { + return + } + watermarkRule = response.Response.Rules[0] + return +} + +func (me *CssService) DeleteCssWatermarkRuleById(ctx context.Context, domainName, appName, streamName, watermarkId string) (errRet error) { + logId := getLogId(ctx) + + request := css.NewDeleteLiveWatermarkRuleRequest() + + request.DomainName = &domainName + request.AppName = &appName + request.StreamName = &streamName + // request.WatermarkId = &watermarkId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseCssClient().DeleteLiveWatermarkRule(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *CssService) DescribeCssPullStreamTask(ctx context.Context, taskId string) (pullStreamTask *css.PullStreamTaskInfo, errRet error) { + var ( + logId = getLogId(ctx) + request = css.NewDescribeLivePullStreamTasksRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.TaskId = &taskId + + response, err := me.client.UseCssClient().DescribeLivePullStreamTasks(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if len(response.Response.TaskInfos) < 1 { + return + } + pullStreamTask = response.Response.TaskInfos[0] + return +} + +func (me *CssService) DeleteCssPullStreamTaskById(ctx context.Context, taskId string) (errRet error) { + logId := getLogId(ctx) + + request := css.NewDeleteLivePullStreamTaskRequest() + + request.TaskId = &taskId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseCssClient().DeleteLivePullStreamTask(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/LICENSE b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/LICENSE new file mode 100644 index 0000000000..efc75a2253 --- /dev/null +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2017-2018 Tencent Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/client.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/client.go new file mode 100644 index 0000000000..90c83012f0 --- /dev/null +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/client.go @@ -0,0 +1,9302 @@ +// Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package v20180801 + +import ( + "context" + "errors" + "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + tchttp "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http" + "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" +) + +const APIVersion = "2018-08-01" + +type Client struct { + common.Client +} + +// Deprecated +func NewClientWithSecretId(secretId, secretKey, region string) (client *Client, err error) { + cpf := profile.NewClientProfile() + client = &Client{} + client.Init(region).WithSecretId(secretId, secretKey).WithProfile(cpf) + return +} + +func NewClient(credential common.CredentialIface, region string, clientProfile *profile.ClientProfile) (client *Client, err error) { + client = &Client{} + client.Init(region). + WithCredential(credential). + WithProfile(clientProfile) + return +} + + +func NewAddDelayLiveStreamRequest() (request *AddDelayLiveStreamRequest) { + request = &AddDelayLiveStreamRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "AddDelayLiveStream") + + + return +} + +func NewAddDelayLiveStreamResponse() (response *AddDelayLiveStreamResponse) { + response = &AddDelayLiveStreamResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// AddDelayLiveStream +// 针对大型活动直播,通过对直播流设置延时来控制现场与观众播放画面的时间间隔,避免突发状况造成影响。 +// +// +// +// 注意:如果在推流前设置延播,需要提前5分钟设置,目前该接口只支持流粒度。 +// +// 可能返回的错误码: +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) AddDelayLiveStream(request *AddDelayLiveStreamRequest) (response *AddDelayLiveStreamResponse, err error) { + return c.AddDelayLiveStreamWithContext(context.Background(), request) +} + +// AddDelayLiveStream +// 针对大型活动直播,通过对直播流设置延时来控制现场与观众播放画面的时间间隔,避免突发状况造成影响。 +// +// +// +// 注意:如果在推流前设置延播,需要提前5分钟设置,目前该接口只支持流粒度。 +// +// 可能返回的错误码: +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) AddDelayLiveStreamWithContext(ctx context.Context, request *AddDelayLiveStreamRequest) (response *AddDelayLiveStreamResponse, err error) { + if request == nil { + request = NewAddDelayLiveStreamRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("AddDelayLiveStream require credential") + } + + request.SetContext(ctx) + + response = NewAddDelayLiveStreamResponse() + err = c.Send(request, response) + return +} + +func NewAddLiveDomainRequest() (request *AddLiveDomainRequest) { + request = &AddLiveDomainRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "AddLiveDomain") + + + return +} + +func NewAddLiveDomainResponse() (response *AddLiveDomainResponse) { + response = &AddLiveDomainResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// AddLiveDomain +// 添加域名,一次只能提交一个域名。域名必须已备案。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_DELETEDOMAININLOCKEDTIME = "FailedOperation.DeleteDomainInLockedTime" +// FAILEDOPERATION_DOMAINADDED = "FailedOperation.DomainAdded" +// FAILEDOPERATION_DOMAINGSLBFAIL = "FailedOperation.DomainGslbFail" +// FAILEDOPERATION_DOMAINNEEDREALNAME = "FailedOperation.DomainNeedRealName" +// FAILEDOPERATION_DOMAINNEEDVERIFYOWNER = "FailedOperation.DomainNeedVerifyOwner" +// FAILEDOPERATION_HOSTOUTLIMIT = "FailedOperation.HostOutLimit" +// FAILEDOPERATION_PARENTDOMAINADDED = "FailedOperation.ParentDomainAdded" +// FAILEDOPERATION_SUBDOMAINADDED = "FailedOperation.SubDomainAdded" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CHINESECHARACTERDETECTED = "InternalError.ChineseCharacterDetected" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_DOMAINALREADYEXIST = "InternalError.DomainAlreadyExist" +// INTERNALERROR_DOMAINFORMATERROR = "InternalError.DomainFormatError" +// INTERNALERROR_DOMAINGSLBFAIL = "InternalError.DomainGslbFail" +// INTERNALERROR_DOMAINISFAMOUS = "InternalError.DomainIsFamous" +// INTERNALERROR_DOMAINISLIMITED = "InternalError.DomainIsLimited" +// INTERNALERROR_DOMAINNORECORD = "InternalError.DomainNoRecord" +// INTERNALERROR_DOMAINTOOLONG = "InternalError.DomainTooLong" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_INVALIDUSER = "InternalError.InvalidUser" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINALREADYEXIST = "InvalidParameter.DomainAlreadyExist" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETER_DOMAINHITBLACKLIST = "InvalidParameter.DomainHitBlackList" +// INVALIDPARAMETER_DOMAINISFAMOUS = "InvalidParameter.DomainIsFamous" +// INVALIDPARAMETER_DOMAINISLIMITED = "InvalidParameter.DomainIsLimited" +// INVALIDPARAMETER_DOMAINTOOLONG = "InvalidParameter.DomainTooLong" +// INVALIDPARAMETER_MPHOSTDELETE = "InvalidParameter.MpHostDelete" +// INVALIDPARAMETER_MPPLUGINNOUSE = "InvalidParameter.MpPluginNoUse" +// RESOURCENOTFOUND_DOMAINNORECORD = "ResourceNotFound.DomainNoRecord" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_INVALIDUSER = "ResourceNotFound.InvalidUser" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) AddLiveDomain(request *AddLiveDomainRequest) (response *AddLiveDomainResponse, err error) { + return c.AddLiveDomainWithContext(context.Background(), request) +} + +// AddLiveDomain +// 添加域名,一次只能提交一个域名。域名必须已备案。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_DELETEDOMAININLOCKEDTIME = "FailedOperation.DeleteDomainInLockedTime" +// FAILEDOPERATION_DOMAINADDED = "FailedOperation.DomainAdded" +// FAILEDOPERATION_DOMAINGSLBFAIL = "FailedOperation.DomainGslbFail" +// FAILEDOPERATION_DOMAINNEEDREALNAME = "FailedOperation.DomainNeedRealName" +// FAILEDOPERATION_DOMAINNEEDVERIFYOWNER = "FailedOperation.DomainNeedVerifyOwner" +// FAILEDOPERATION_HOSTOUTLIMIT = "FailedOperation.HostOutLimit" +// FAILEDOPERATION_PARENTDOMAINADDED = "FailedOperation.ParentDomainAdded" +// FAILEDOPERATION_SUBDOMAINADDED = "FailedOperation.SubDomainAdded" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CHINESECHARACTERDETECTED = "InternalError.ChineseCharacterDetected" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_DOMAINALREADYEXIST = "InternalError.DomainAlreadyExist" +// INTERNALERROR_DOMAINFORMATERROR = "InternalError.DomainFormatError" +// INTERNALERROR_DOMAINGSLBFAIL = "InternalError.DomainGslbFail" +// INTERNALERROR_DOMAINISFAMOUS = "InternalError.DomainIsFamous" +// INTERNALERROR_DOMAINISLIMITED = "InternalError.DomainIsLimited" +// INTERNALERROR_DOMAINNORECORD = "InternalError.DomainNoRecord" +// INTERNALERROR_DOMAINTOOLONG = "InternalError.DomainTooLong" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_INVALIDUSER = "InternalError.InvalidUser" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINALREADYEXIST = "InvalidParameter.DomainAlreadyExist" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETER_DOMAINHITBLACKLIST = "InvalidParameter.DomainHitBlackList" +// INVALIDPARAMETER_DOMAINISFAMOUS = "InvalidParameter.DomainIsFamous" +// INVALIDPARAMETER_DOMAINISLIMITED = "InvalidParameter.DomainIsLimited" +// INVALIDPARAMETER_DOMAINTOOLONG = "InvalidParameter.DomainTooLong" +// INVALIDPARAMETER_MPHOSTDELETE = "InvalidParameter.MpHostDelete" +// INVALIDPARAMETER_MPPLUGINNOUSE = "InvalidParameter.MpPluginNoUse" +// RESOURCENOTFOUND_DOMAINNORECORD = "ResourceNotFound.DomainNoRecord" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_INVALIDUSER = "ResourceNotFound.InvalidUser" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) AddLiveDomainWithContext(ctx context.Context, request *AddLiveDomainRequest) (response *AddLiveDomainResponse, err error) { + if request == nil { + request = NewAddLiveDomainRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("AddLiveDomain require credential") + } + + request.SetContext(ctx) + + response = NewAddLiveDomainResponse() + err = c.Send(request, response) + return +} + +func NewAddLiveWatermarkRequest() (request *AddLiveWatermarkRequest) { + request = &AddLiveWatermarkRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "AddLiveWatermark") + + + return +} + +func NewAddLiveWatermarkResponse() (response *AddLiveWatermarkResponse) { + response = &AddLiveWatermarkResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// AddLiveWatermark +// 添加水印,成功返回水印 ID 后,需要调用[CreateLiveWatermarkRule](/document/product/267/32629)接口将水印 ID 绑定到流使用。 +// +// 水印数量上限 100,超过后需要先删除,再添加。 +// +// 可能返回的错误码: +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_WATERMARKADDERROR = "InternalError.WatermarkAddError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTFOUNT = "ResourceNotFound.UserNotFount" +func (c *Client) AddLiveWatermark(request *AddLiveWatermarkRequest) (response *AddLiveWatermarkResponse, err error) { + return c.AddLiveWatermarkWithContext(context.Background(), request) +} + +// AddLiveWatermark +// 添加水印,成功返回水印 ID 后,需要调用[CreateLiveWatermarkRule](/document/product/267/32629)接口将水印 ID 绑定到流使用。 +// +// 水印数量上限 100,超过后需要先删除,再添加。 +// +// 可能返回的错误码: +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_WATERMARKADDERROR = "InternalError.WatermarkAddError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTFOUNT = "ResourceNotFound.UserNotFount" +func (c *Client) AddLiveWatermarkWithContext(ctx context.Context, request *AddLiveWatermarkRequest) (response *AddLiveWatermarkResponse, err error) { + if request == nil { + request = NewAddLiveWatermarkRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("AddLiveWatermark require credential") + } + + request.SetContext(ctx) + + response = NewAddLiveWatermarkResponse() + err = c.Send(request, response) + return +} + +func NewAuthenticateDomainOwnerRequest() (request *AuthenticateDomainOwnerRequest) { + request = &AuthenticateDomainOwnerRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "AuthenticateDomainOwner") + + + return +} + +func NewAuthenticateDomainOwnerResponse() (response *AuthenticateDomainOwnerResponse) { + response = &AuthenticateDomainOwnerResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// AuthenticateDomainOwner +// 验证用户是否拥有特定直播域名。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +func (c *Client) AuthenticateDomainOwner(request *AuthenticateDomainOwnerRequest) (response *AuthenticateDomainOwnerResponse, err error) { + return c.AuthenticateDomainOwnerWithContext(context.Background(), request) +} + +// AuthenticateDomainOwner +// 验证用户是否拥有特定直播域名。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +func (c *Client) AuthenticateDomainOwnerWithContext(ctx context.Context, request *AuthenticateDomainOwnerRequest) (response *AuthenticateDomainOwnerResponse, err error) { + if request == nil { + request = NewAuthenticateDomainOwnerRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("AuthenticateDomainOwner require credential") + } + + request.SetContext(ctx) + + response = NewAuthenticateDomainOwnerResponse() + err = c.Send(request, response) + return +} + +func NewCancelCommonMixStreamRequest() (request *CancelCommonMixStreamRequest) { + request = &CancelCommonMixStreamRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CancelCommonMixStream") + + + return +} + +func NewCancelCommonMixStreamResponse() (response *CancelCommonMixStreamResponse) { + response = &CancelCommonMixStreamResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CancelCommonMixStream +// 该接口用来取消混流。用法与 mix_streamv2.cancel_mix_stream 基本一致。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRERROR = "FailedOperation.CallOtherSvrError" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_CANCELSESSIONNOTEXIST = "FailedOperation.CancelSessionNotExist" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_CANCELSESSIONNOTEXIST = "InvalidParameter.CancelSessionNotExist" +// INVALIDPARAMETER_OTHERERROR = "InvalidParameter.OtherError" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) CancelCommonMixStream(request *CancelCommonMixStreamRequest) (response *CancelCommonMixStreamResponse, err error) { + return c.CancelCommonMixStreamWithContext(context.Background(), request) +} + +// CancelCommonMixStream +// 该接口用来取消混流。用法与 mix_streamv2.cancel_mix_stream 基本一致。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRERROR = "FailedOperation.CallOtherSvrError" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_CANCELSESSIONNOTEXIST = "FailedOperation.CancelSessionNotExist" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_CANCELSESSIONNOTEXIST = "InvalidParameter.CancelSessionNotExist" +// INVALIDPARAMETER_OTHERERROR = "InvalidParameter.OtherError" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) CancelCommonMixStreamWithContext(ctx context.Context, request *CancelCommonMixStreamRequest) (response *CancelCommonMixStreamResponse, err error) { + if request == nil { + request = NewCancelCommonMixStreamRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CancelCommonMixStream require credential") + } + + request.SetContext(ctx) + + response = NewCancelCommonMixStreamResponse() + err = c.Send(request, response) + return +} + +func NewCreateCommonMixStreamRequest() (request *CreateCommonMixStreamRequest) { + request = &CreateCommonMixStreamRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateCommonMixStream") + + + return +} + +func NewCreateCommonMixStreamResponse() (response *CreateCommonMixStreamResponse) { + response = &CreateCommonMixStreamResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateCommonMixStream +// 该接口用来创建通用混流。用法与旧接口 mix_streamv2.start_mix_stream_advanced 基本一致。 +// +// 注意:当前最多支持16路混流。 +// +// 最佳实践:https://cloud.tencent.com/document/product/267/45566 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRERROR = "FailedOperation.CallOtherSvrError" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_CANCELSESSIONNOTEXIST = "FailedOperation.CancelSessionNotExist" +// FAILEDOPERATION_GETPICTUREURLERROR = "FailedOperation.GetPictureUrlError" +// FAILEDOPERATION_GETSTREAMRESOLUTIONERROR = "FailedOperation.GetStreamResolutionError" +// FAILEDOPERATION_PROCESSMIXERROR = "FailedOperation.ProcessMixError" +// FAILEDOPERATION_STREAMNOTEXIST = "FailedOperation.StreamNotExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_JIFEIOTHERERROR = "InternalError.JiFeiOtherError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_CANCELSESSIONNOTEXIST = "InvalidParameter.CancelSessionNotExist" +// INVALIDPARAMETER_INPUTNUMLIMITEXCEEDED = "InvalidParameter.InputNumLimitExceeded" +// INVALIDPARAMETER_INVALIDBACKGROUDRESOLUTION = "InvalidParameter.InvalidBackgroudResolution" +// INVALIDPARAMETER_INVALIDBITRATE = "InvalidParameter.InvalidBitrate" +// INVALIDPARAMETER_INVALIDCROPPARAM = "InvalidParameter.InvalidCropParam" +// INVALIDPARAMETER_INVALIDLAYERPARAM = "InvalidParameter.InvalidLayerParam" +// INVALIDPARAMETER_INVALIDOUTPUTSTREAMID = "InvalidParameter.InvalidOutputStreamID" +// INVALIDPARAMETER_INVALIDOUTPUTTYPE = "InvalidParameter.InvalidOutputType" +// INVALIDPARAMETER_INVALIDPICTUREID = "InvalidParameter.InvalidPictureID" +// INVALIDPARAMETER_INVALIDROUNDRECTRADIUS = "InvalidParameter.InvalidRoundRectRadius" +// INVALIDPARAMETER_OTHERERROR = "InvalidParameter.OtherError" +// INVALIDPARAMETER_SESSIONOUTPUTSTREAMCHANGED = "InvalidParameter.SessionOutputStreamChanged" +// INVALIDPARAMETER_TEMPLATENOTMATCHINPUTNUM = "InvalidParameter.TemplateNotMatchInputNum" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) CreateCommonMixStream(request *CreateCommonMixStreamRequest) (response *CreateCommonMixStreamResponse, err error) { + return c.CreateCommonMixStreamWithContext(context.Background(), request) +} + +// CreateCommonMixStream +// 该接口用来创建通用混流。用法与旧接口 mix_streamv2.start_mix_stream_advanced 基本一致。 +// +// 注意:当前最多支持16路混流。 +// +// 最佳实践:https://cloud.tencent.com/document/product/267/45566 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRERROR = "FailedOperation.CallOtherSvrError" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_CANCELSESSIONNOTEXIST = "FailedOperation.CancelSessionNotExist" +// FAILEDOPERATION_GETPICTUREURLERROR = "FailedOperation.GetPictureUrlError" +// FAILEDOPERATION_GETSTREAMRESOLUTIONERROR = "FailedOperation.GetStreamResolutionError" +// FAILEDOPERATION_PROCESSMIXERROR = "FailedOperation.ProcessMixError" +// FAILEDOPERATION_STREAMNOTEXIST = "FailedOperation.StreamNotExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_JIFEIOTHERERROR = "InternalError.JiFeiOtherError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_CANCELSESSIONNOTEXIST = "InvalidParameter.CancelSessionNotExist" +// INVALIDPARAMETER_INPUTNUMLIMITEXCEEDED = "InvalidParameter.InputNumLimitExceeded" +// INVALIDPARAMETER_INVALIDBACKGROUDRESOLUTION = "InvalidParameter.InvalidBackgroudResolution" +// INVALIDPARAMETER_INVALIDBITRATE = "InvalidParameter.InvalidBitrate" +// INVALIDPARAMETER_INVALIDCROPPARAM = "InvalidParameter.InvalidCropParam" +// INVALIDPARAMETER_INVALIDLAYERPARAM = "InvalidParameter.InvalidLayerParam" +// INVALIDPARAMETER_INVALIDOUTPUTSTREAMID = "InvalidParameter.InvalidOutputStreamID" +// INVALIDPARAMETER_INVALIDOUTPUTTYPE = "InvalidParameter.InvalidOutputType" +// INVALIDPARAMETER_INVALIDPICTUREID = "InvalidParameter.InvalidPictureID" +// INVALIDPARAMETER_INVALIDROUNDRECTRADIUS = "InvalidParameter.InvalidRoundRectRadius" +// INVALIDPARAMETER_OTHERERROR = "InvalidParameter.OtherError" +// INVALIDPARAMETER_SESSIONOUTPUTSTREAMCHANGED = "InvalidParameter.SessionOutputStreamChanged" +// INVALIDPARAMETER_TEMPLATENOTMATCHINPUTNUM = "InvalidParameter.TemplateNotMatchInputNum" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) CreateCommonMixStreamWithContext(ctx context.Context, request *CreateCommonMixStreamRequest) (response *CreateCommonMixStreamResponse, err error) { + if request == nil { + request = NewCreateCommonMixStreamRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateCommonMixStream require credential") + } + + request.SetContext(ctx) + + response = NewCreateCommonMixStreamResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveCallbackRuleRequest() (request *CreateLiveCallbackRuleRequest) { + request = &CreateLiveCallbackRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveCallbackRule") + + + return +} + +func NewCreateLiveCallbackRuleResponse() (response *CreateLiveCallbackRuleResponse) { + response = &CreateLiveCallbackRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveCallbackRule +// 创建回调规则,需要先调用[CreateLiveCallbackTemplate](/document/product/267/32637)接口创建回调模板,将返回的模板id绑定到域名/路径进行使用。 +// +//
回调协议相关文档:[事件消息通知](/document/product/267/32744)。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveCallbackRule(request *CreateLiveCallbackRuleRequest) (response *CreateLiveCallbackRuleResponse, err error) { + return c.CreateLiveCallbackRuleWithContext(context.Background(), request) +} + +// CreateLiveCallbackRule +// 创建回调规则,需要先调用[CreateLiveCallbackTemplate](/document/product/267/32637)接口创建回调模板,将返回的模板id绑定到域名/路径进行使用。 +// +//
回调协议相关文档:[事件消息通知](/document/product/267/32744)。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveCallbackRuleWithContext(ctx context.Context, request *CreateLiveCallbackRuleRequest) (response *CreateLiveCallbackRuleResponse, err error) { + if request == nil { + request = NewCreateLiveCallbackRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveCallbackRule require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveCallbackRuleResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveCallbackTemplateRequest() (request *CreateLiveCallbackTemplateRequest) { + request = &CreateLiveCallbackTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveCallbackTemplate") + + + return +} + +func NewCreateLiveCallbackTemplateResponse() (response *CreateLiveCallbackTemplateResponse) { + response = &CreateLiveCallbackTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveCallbackTemplate +// 创建回调模板,成功返回模板id后,需要调用[CreateLiveCallbackRule](/document/product/267/32638)接口将模板 ID 绑定到域名/路径使用。 +// +//
回调协议相关文档:[事件消息通知](/document/product/267/32744)。 +// +// 注意:至少填写一个回调 URL。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_ARGSNOTMATCH = "InvalidParameter.ArgsNotMatch" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETER_URLNOTSAFE = "InvalidParameter.UrlNotSafe" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveCallbackTemplate(request *CreateLiveCallbackTemplateRequest) (response *CreateLiveCallbackTemplateResponse, err error) { + return c.CreateLiveCallbackTemplateWithContext(context.Background(), request) +} + +// CreateLiveCallbackTemplate +// 创建回调模板,成功返回模板id后,需要调用[CreateLiveCallbackRule](/document/product/267/32638)接口将模板 ID 绑定到域名/路径使用。 +// +//
回调协议相关文档:[事件消息通知](/document/product/267/32744)。 +// +// 注意:至少填写一个回调 URL。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_ARGSNOTMATCH = "InvalidParameter.ArgsNotMatch" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETER_URLNOTSAFE = "InvalidParameter.UrlNotSafe" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveCallbackTemplateWithContext(ctx context.Context, request *CreateLiveCallbackTemplateRequest) (response *CreateLiveCallbackTemplateResponse, err error) { + if request == nil { + request = NewCreateLiveCallbackTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveCallbackTemplate require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveCallbackTemplateResponse() + err = c.Send(request, response) + return +} + +func NewCreateLivePullStreamTaskRequest() (request *CreateLivePullStreamTaskRequest) { + request = &CreateLivePullStreamTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLivePullStreamTask") + + + return +} + +func NewCreateLivePullStreamTaskResponse() (response *CreateLivePullStreamTaskResponse) { + response = &CreateLivePullStreamTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLivePullStreamTask +// 创建直播拉流任务。支持将外部已有的点播文件,或者直播源拉取过来转推到指定的目标地址。 +// +// 注意: +// +// 1. 默认支持任务数上限20个,如有特殊需求,可通过提单到售后进行评估增加上限。 +// +// 2. 源流视频编码目前只支持: H264, H265。其他编码格式建议先进行转码处理。 +// +// 3. 源流音频编码目前只支持: AAC。其他编码格式建议先进行转码处理。 +// +// 4. 可在控制台开启过期自动清理,避免过期任务占用任务数额度。 +// +// 5. 拉流转推功能为计费增值服务,计费规则详情可参见[计费文档](https://cloud.tencent.com/document/product/267/53308)。 +// +// 6. 拉流转推功能仅提供内容拉取与推送服务,请确保内容已获得授权并符合内容传播相关的法律法规。若内容有侵权或违规相关问题,云直播会停止相关的功能服务并保留追究法律责任的权利。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCALLBACKURL = "InvalidParameter.InvalidCallbackUrl" +// INVALIDPARAMETER_INVALIDSOURCEURL = "InvalidParameter.InvalidSourceUrl" +// INVALIDPARAMETER_INVALIDTASKTIME = "InvalidParameter.InvalidTaskTime" +// INVALIDPARAMETER_INVALIDTOURL = "InvalidParameter.InvalidToUrl" +// INVALIDPARAMETER_INVALIDWATERMARK = "InvalidParameter.InvalidWatermark" +// INVALIDPARAMETER_TASKNOTEXIST = "InvalidParameter.TaskNotExist" +// INVALIDPARAMETER_TASKNUMMORETHANLIMIT = "InvalidParameter.TaskNumMoreThanLimit" +// INVALIDPARAMETER_TOURLNOPERMISSION = "InvalidParameter.ToUrlNoPermission" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) CreateLivePullStreamTask(request *CreateLivePullStreamTaskRequest) (response *CreateLivePullStreamTaskResponse, err error) { + return c.CreateLivePullStreamTaskWithContext(context.Background(), request) +} + +// CreateLivePullStreamTask +// 创建直播拉流任务。支持将外部已有的点播文件,或者直播源拉取过来转推到指定的目标地址。 +// +// 注意: +// +// 1. 默认支持任务数上限20个,如有特殊需求,可通过提单到售后进行评估增加上限。 +// +// 2. 源流视频编码目前只支持: H264, H265。其他编码格式建议先进行转码处理。 +// +// 3. 源流音频编码目前只支持: AAC。其他编码格式建议先进行转码处理。 +// +// 4. 可在控制台开启过期自动清理,避免过期任务占用任务数额度。 +// +// 5. 拉流转推功能为计费增值服务,计费规则详情可参见[计费文档](https://cloud.tencent.com/document/product/267/53308)。 +// +// 6. 拉流转推功能仅提供内容拉取与推送服务,请确保内容已获得授权并符合内容传播相关的法律法规。若内容有侵权或违规相关问题,云直播会停止相关的功能服务并保留追究法律责任的权利。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCALLBACKURL = "InvalidParameter.InvalidCallbackUrl" +// INVALIDPARAMETER_INVALIDSOURCEURL = "InvalidParameter.InvalidSourceUrl" +// INVALIDPARAMETER_INVALIDTASKTIME = "InvalidParameter.InvalidTaskTime" +// INVALIDPARAMETER_INVALIDTOURL = "InvalidParameter.InvalidToUrl" +// INVALIDPARAMETER_INVALIDWATERMARK = "InvalidParameter.InvalidWatermark" +// INVALIDPARAMETER_TASKNOTEXIST = "InvalidParameter.TaskNotExist" +// INVALIDPARAMETER_TASKNUMMORETHANLIMIT = "InvalidParameter.TaskNumMoreThanLimit" +// INVALIDPARAMETER_TOURLNOPERMISSION = "InvalidParameter.ToUrlNoPermission" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) CreateLivePullStreamTaskWithContext(ctx context.Context, request *CreateLivePullStreamTaskRequest) (response *CreateLivePullStreamTaskResponse, err error) { + if request == nil { + request = NewCreateLivePullStreamTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLivePullStreamTask require credential") + } + + request.SetContext(ctx) + + response = NewCreateLivePullStreamTaskResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveRecordRequest() (request *CreateLiveRecordRequest) { + request = &CreateLiveRecordRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveRecord") + + + return +} + +func NewCreateLiveRecordResponse() (response *CreateLiveRecordResponse) { + response = &CreateLiveRecordResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveRecord +// - 使用前提 +// +// 1. 录制文件存放于点播平台,所以用户如需使用录制功能,需首先自行开通点播服务。 +// +// 2. 录制文件存放后相关费用(含存储以及下行播放流量)按照点播平台计费方式收取,具体请参考 [对应文档](https://cloud.tencent.com/document/product/266/2838)。 +// +// +// +// - 模式说明 +// +// 该接口支持两种录制模式: +// +// 1. 定时录制模式【默认模式】。 +// +// 需要传入开始时间与结束时间,录制任务根据起止时间自动开始与结束。在所设置结束时间过期之前(且未调用StopLiveRecord提前终止任务),录制任务都是有效的,期间多次断流然后重推都会启动录制任务。 +// +// 2. 实时视频录制模式。 +// +// 忽略传入的开始时间,在录制任务创建后立即开始录制,录制时长支持最大为30分钟,如果传入的结束时间与当前时间差大于30分钟,则按30分钟计算,实时视频录制主要用于录制精彩视频场景,时长建议控制在5分钟以内。 +// +// +// +// - 注意事项 +// +// 1. 调用接口超时设置应大于3秒,小于3秒重试以及按不同起止时间调用都有可能产生重复录制任务,进而导致额外录制费用。 +// +// 2. 受限于音视频文件格式(FLV/MP4/HLS)对编码类型的支持,视频编码类型支持 H.264,音频编码类型支持 AAC。 +// +// 3. 为避免恶意或非主观的频繁 API 请求,对定时录制模式最大创建任务数做了限制:其中,当天可以创建的最大任务数不超过4000(不含已删除的任务);当前时刻并发运行的任务数不超过400。有超出此限制的需要提工单申请。 +// +// 4. 此调用方式暂时不支持海外推流录制。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED_MAXIMUMRUNNINGTASK = "LimitExceeded.MaximumRunningTask" +// LIMITEXCEEDED_MAXIMUMTASK = "LimitExceeded.MaximumTask" +// RESOURCENOTFOUND_CHANNELNOTEXIST = "ResourceNotFound.ChannelNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCEUNAVAILABLE_INVALIDVODSTATUS = "ResourceUnavailable.InvalidVodStatus" +// RESOURCEUNAVAILABLE_STREAMNOTEXIST = "ResourceUnavailable.StreamNotExist" +func (c *Client) CreateLiveRecord(request *CreateLiveRecordRequest) (response *CreateLiveRecordResponse, err error) { + return c.CreateLiveRecordWithContext(context.Background(), request) +} + +// CreateLiveRecord +// - 使用前提 +// +// 1. 录制文件存放于点播平台,所以用户如需使用录制功能,需首先自行开通点播服务。 +// +// 2. 录制文件存放后相关费用(含存储以及下行播放流量)按照点播平台计费方式收取,具体请参考 [对应文档](https://cloud.tencent.com/document/product/266/2838)。 +// +// +// +// - 模式说明 +// +// 该接口支持两种录制模式: +// +// 1. 定时录制模式【默认模式】。 +// +// 需要传入开始时间与结束时间,录制任务根据起止时间自动开始与结束。在所设置结束时间过期之前(且未调用StopLiveRecord提前终止任务),录制任务都是有效的,期间多次断流然后重推都会启动录制任务。 +// +// 2. 实时视频录制模式。 +// +// 忽略传入的开始时间,在录制任务创建后立即开始录制,录制时长支持最大为30分钟,如果传入的结束时间与当前时间差大于30分钟,则按30分钟计算,实时视频录制主要用于录制精彩视频场景,时长建议控制在5分钟以内。 +// +// +// +// - 注意事项 +// +// 1. 调用接口超时设置应大于3秒,小于3秒重试以及按不同起止时间调用都有可能产生重复录制任务,进而导致额外录制费用。 +// +// 2. 受限于音视频文件格式(FLV/MP4/HLS)对编码类型的支持,视频编码类型支持 H.264,音频编码类型支持 AAC。 +// +// 3. 为避免恶意或非主观的频繁 API 请求,对定时录制模式最大创建任务数做了限制:其中,当天可以创建的最大任务数不超过4000(不含已删除的任务);当前时刻并发运行的任务数不超过400。有超出此限制的需要提工单申请。 +// +// 4. 此调用方式暂时不支持海外推流录制。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED_MAXIMUMRUNNINGTASK = "LimitExceeded.MaximumRunningTask" +// LIMITEXCEEDED_MAXIMUMTASK = "LimitExceeded.MaximumTask" +// RESOURCENOTFOUND_CHANNELNOTEXIST = "ResourceNotFound.ChannelNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCEUNAVAILABLE_INVALIDVODSTATUS = "ResourceUnavailable.InvalidVodStatus" +// RESOURCEUNAVAILABLE_STREAMNOTEXIST = "ResourceUnavailable.StreamNotExist" +func (c *Client) CreateLiveRecordWithContext(ctx context.Context, request *CreateLiveRecordRequest) (response *CreateLiveRecordResponse, err error) { + if request == nil { + request = NewCreateLiveRecordRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveRecord require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveRecordResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveRecordRuleRequest() (request *CreateLiveRecordRuleRequest) { + request = &CreateLiveRecordRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveRecordRule") + + + return +} + +func NewCreateLiveRecordRuleResponse() (response *CreateLiveRecordRuleResponse) { + response = &CreateLiveRecordRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveRecordRule +// 创建录制规则,需要先调用[CreateLiveRecordTemplate](/document/product/267/32614)接口创建录制模板,将返回的模板id绑定到流使用。 +// +//
录制相关文档:[直播录制](/document/product/267/32739)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_RULEALREADYEXIST = "FailedOperation.RuleAlreadyExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) CreateLiveRecordRule(request *CreateLiveRecordRuleRequest) (response *CreateLiveRecordRuleResponse, err error) { + return c.CreateLiveRecordRuleWithContext(context.Background(), request) +} + +// CreateLiveRecordRule +// 创建录制规则,需要先调用[CreateLiveRecordTemplate](/document/product/267/32614)接口创建录制模板,将返回的模板id绑定到流使用。 +// +//
录制相关文档:[直播录制](/document/product/267/32739)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_RULEALREADYEXIST = "FailedOperation.RuleAlreadyExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) CreateLiveRecordRuleWithContext(ctx context.Context, request *CreateLiveRecordRuleRequest) (response *CreateLiveRecordRuleResponse, err error) { + if request == nil { + request = NewCreateLiveRecordRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveRecordRule require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveRecordRuleResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveRecordTemplateRequest() (request *CreateLiveRecordTemplateRequest) { + request = &CreateLiveRecordTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveRecordTemplate") + + + return +} + +func NewCreateLiveRecordTemplateResponse() (response *CreateLiveRecordTemplateResponse) { + response = &CreateLiveRecordTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveRecordTemplate +// 创建录制模板,数量上限:50,成功返回模板id后,需要调用[CreateLiveRecordRule](/document/product/267/32615)接口,将模板id绑定到流进行使用。 +// +//
录制相关文档:[直播录制](/document/product/267/32739)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveRecordTemplate(request *CreateLiveRecordTemplateRequest) (response *CreateLiveRecordTemplateResponse, err error) { + return c.CreateLiveRecordTemplateWithContext(context.Background(), request) +} + +// CreateLiveRecordTemplate +// 创建录制模板,数量上限:50,成功返回模板id后,需要调用[CreateLiveRecordRule](/document/product/267/32615)接口,将模板id绑定到流进行使用。 +// +//
录制相关文档:[直播录制](/document/product/267/32739)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveRecordTemplateWithContext(ctx context.Context, request *CreateLiveRecordTemplateRequest) (response *CreateLiveRecordTemplateResponse, err error) { + if request == nil { + request = NewCreateLiveRecordTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveRecordTemplate require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveRecordTemplateResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveSnapshotRuleRequest() (request *CreateLiveSnapshotRuleRequest) { + request = &CreateLiveSnapshotRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveSnapshotRule") + + + return +} + +func NewCreateLiveSnapshotRuleResponse() (response *CreateLiveSnapshotRuleResponse) { + response = &CreateLiveSnapshotRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveSnapshotRule +// 创建截图规则,需要先调用[CreateLiveSnapshotTemplate](/document/product/267/32624)接口创建截图模板,然后将返回的模板 ID 绑定到流进行使用。 +// +//
截图相关文档:[直播截图](/document/product/267/32737)。 +// +// 注意:单个域名仅支持关联一个截图模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_RULEALREADYEXIST = "FailedOperation.RuleAlreadyExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) CreateLiveSnapshotRule(request *CreateLiveSnapshotRuleRequest) (response *CreateLiveSnapshotRuleResponse, err error) { + return c.CreateLiveSnapshotRuleWithContext(context.Background(), request) +} + +// CreateLiveSnapshotRule +// 创建截图规则,需要先调用[CreateLiveSnapshotTemplate](/document/product/267/32624)接口创建截图模板,然后将返回的模板 ID 绑定到流进行使用。 +// +//
截图相关文档:[直播截图](/document/product/267/32737)。 +// +// 注意:单个域名仅支持关联一个截图模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_RULEALREADYEXIST = "FailedOperation.RuleAlreadyExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) CreateLiveSnapshotRuleWithContext(ctx context.Context, request *CreateLiveSnapshotRuleRequest) (response *CreateLiveSnapshotRuleResponse, err error) { + if request == nil { + request = NewCreateLiveSnapshotRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveSnapshotRule require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveSnapshotRuleResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveSnapshotTemplateRequest() (request *CreateLiveSnapshotTemplateRequest) { + request = &CreateLiveSnapshotTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveSnapshotTemplate") + + + return +} + +func NewCreateLiveSnapshotTemplateResponse() (response *CreateLiveSnapshotTemplateResponse) { + response = &CreateLiveSnapshotTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveSnapshotTemplate +// 创建截图模板,数量上限:50,成功返回模板id后,需要调用[CreateLiveSnapshotRule](/document/product/267/32625)接口,将模板id绑定到流使用。 +// +//
截图相关文档:[直播截图](/document/product/267/32737)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_COSBUCKETNOTEXIST = "FailedOperation.CosBucketNotExist" +// FAILEDOPERATION_COSBUCKETNOTPERMISSION = "FailedOperation.CosBucketNotPermission" +// FAILEDOPERATION_COSROLENOTEXISTS = "FailedOperation.CosRoleNotExists" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveSnapshotTemplate(request *CreateLiveSnapshotTemplateRequest) (response *CreateLiveSnapshotTemplateResponse, err error) { + return c.CreateLiveSnapshotTemplateWithContext(context.Background(), request) +} + +// CreateLiveSnapshotTemplate +// 创建截图模板,数量上限:50,成功返回模板id后,需要调用[CreateLiveSnapshotRule](/document/product/267/32625)接口,将模板id绑定到流使用。 +// +//
截图相关文档:[直播截图](/document/product/267/32737)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_COSBUCKETNOTEXIST = "FailedOperation.CosBucketNotExist" +// FAILEDOPERATION_COSBUCKETNOTPERMISSION = "FailedOperation.CosBucketNotPermission" +// FAILEDOPERATION_COSROLENOTEXISTS = "FailedOperation.CosRoleNotExists" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveSnapshotTemplateWithContext(ctx context.Context, request *CreateLiveSnapshotTemplateRequest) (response *CreateLiveSnapshotTemplateResponse, err error) { + if request == nil { + request = NewCreateLiveSnapshotTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveSnapshotTemplate require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveSnapshotTemplateResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveTranscodeRuleRequest() (request *CreateLiveTranscodeRuleRequest) { + request = &CreateLiveTranscodeRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveTranscodeRule") + + + return +} + +func NewCreateLiveTranscodeRuleResponse() (response *CreateLiveTranscodeRuleResponse) { + response = &CreateLiveTranscodeRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveTranscodeRule +// 创建转码规则,需要先调用[CreateLiveTranscodeTemplate](/document/product/267/32646)接口创建转码模板,将返回的模板id绑定到流使用。 +// +//
转码相关文档:[直播转封装及转码](/document/product/267/32736)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_RULEALREADYEXIST = "FailedOperation.RuleAlreadyExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INTERNALERROR_RULEOUTLIMIT = "InternalError.RuleOutLimit" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveTranscodeRule(request *CreateLiveTranscodeRuleRequest) (response *CreateLiveTranscodeRuleResponse, err error) { + return c.CreateLiveTranscodeRuleWithContext(context.Background(), request) +} + +// CreateLiveTranscodeRule +// 创建转码规则,需要先调用[CreateLiveTranscodeTemplate](/document/product/267/32646)接口创建转码模板,将返回的模板id绑定到流使用。 +// +//
转码相关文档:[直播转封装及转码](/document/product/267/32736)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_RULEALREADYEXIST = "FailedOperation.RuleAlreadyExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INTERNALERROR_RULEOUTLIMIT = "InternalError.RuleOutLimit" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveTranscodeRuleWithContext(ctx context.Context, request *CreateLiveTranscodeRuleRequest) (response *CreateLiveTranscodeRuleResponse, err error) { + if request == nil { + request = NewCreateLiveTranscodeRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveTranscodeRule require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveTranscodeRuleResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveTranscodeTemplateRequest() (request *CreateLiveTranscodeTemplateRequest) { + request = &CreateLiveTranscodeTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveTranscodeTemplate") + + + return +} + +func NewCreateLiveTranscodeTemplateResponse() (response *CreateLiveTranscodeTemplateResponse) { + response = &CreateLiveTranscodeTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveTranscodeTemplate +// 创建转码模板,数量上限:50,成功返回模板id后,需要调用[CreateLiveTranscodeRule](/document/product/267/32647)接口,将返回的模板id绑定到流使用。 +// +//
转码相关文档:[直播转封装及转码](/document/product/267/32736)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_AITRANSCODEOPTIONFAIL = "FailedOperation.AiTranscodeOptionFail" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_PROCESSORALREADYEXIST = "InternalError.ProcessorAlreadyExist" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_ARGSNOTMATCH = "InvalidParameter.ArgsNotMatch" +// INVALIDPARAMETER_GOPMUSTEQUALANDEXISTS = "InvalidParameter.GopMustEqualAndExists" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveTranscodeTemplate(request *CreateLiveTranscodeTemplateRequest) (response *CreateLiveTranscodeTemplateResponse, err error) { + return c.CreateLiveTranscodeTemplateWithContext(context.Background(), request) +} + +// CreateLiveTranscodeTemplate +// 创建转码模板,数量上限:50,成功返回模板id后,需要调用[CreateLiveTranscodeRule](/document/product/267/32647)接口,将返回的模板id绑定到流使用。 +// +//
转码相关文档:[直播转封装及转码](/document/product/267/32736)。 +// +// 可能返回的错误码: +// FAILEDOPERATION_AITRANSCODEOPTIONFAIL = "FailedOperation.AiTranscodeOptionFail" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_PROCESSORALREADYEXIST = "InternalError.ProcessorAlreadyExist" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_ARGSNOTMATCH = "InvalidParameter.ArgsNotMatch" +// INVALIDPARAMETER_GOPMUSTEQUALANDEXISTS = "InvalidParameter.GopMustEqualAndExists" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveTranscodeTemplateWithContext(ctx context.Context, request *CreateLiveTranscodeTemplateRequest) (response *CreateLiveTranscodeTemplateResponse, err error) { + if request == nil { + request = NewCreateLiveTranscodeTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveTranscodeTemplate require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveTranscodeTemplateResponse() + err = c.Send(request, response) + return +} + +func NewCreateLiveWatermarkRuleRequest() (request *CreateLiveWatermarkRuleRequest) { + request = &CreateLiveWatermarkRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateLiveWatermarkRule") + + + return +} + +func NewCreateLiveWatermarkRuleResponse() (response *CreateLiveWatermarkRuleResponse) { + response = &CreateLiveWatermarkRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateLiveWatermarkRule +// 创建水印规则,需要先调用[AddLiveWatermark](/document/product/267/30154)接口添加水印,将返回的水印id绑定到流使用。 +// +// 可能返回的错误码: +// FAILEDOPERATION_RULEALREADYEXIST = "FailedOperation.RuleAlreadyExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveWatermarkRule(request *CreateLiveWatermarkRuleRequest) (response *CreateLiveWatermarkRuleResponse, err error) { + return c.CreateLiveWatermarkRuleWithContext(context.Background(), request) +} + +// CreateLiveWatermarkRule +// 创建水印规则,需要先调用[AddLiveWatermark](/document/product/267/30154)接口添加水印,将返回的水印id绑定到流使用。 +// +// 可能返回的错误码: +// FAILEDOPERATION_RULEALREADYEXIST = "FailedOperation.RuleAlreadyExist" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) CreateLiveWatermarkRuleWithContext(ctx context.Context, request *CreateLiveWatermarkRuleRequest) (response *CreateLiveWatermarkRuleResponse, err error) { + if request == nil { + request = NewCreateLiveWatermarkRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateLiveWatermarkRule require credential") + } + + request.SetContext(ctx) + + response = NewCreateLiveWatermarkRuleResponse() + err = c.Send(request, response) + return +} + +func NewCreatePullStreamConfigRequest() (request *CreatePullStreamConfigRequest) { + request = &CreatePullStreamConfigRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreatePullStreamConfig") + + + return +} + +func NewCreatePullStreamConfigResponse() (response *CreatePullStreamConfigResponse) { + response = &CreatePullStreamConfigResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreatePullStreamConfig +// 创建临时拉流转推任务,目前限制添加10条任务。 +// +// 该接口已下线,请使用新接口 CreateLivePullStreamTask。 +// +// +// +// 注意:该接口用于创建临时拉流转推任务, +// +// 拉流源地址即 FromUrl 可以是腾讯或非腾讯数据源, +// +// 但转推目标地址即 ToUrl 目前限制为已注册的腾讯直播域名。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) CreatePullStreamConfig(request *CreatePullStreamConfigRequest) (response *CreatePullStreamConfigResponse, err error) { + return c.CreatePullStreamConfigWithContext(context.Background(), request) +} + +// CreatePullStreamConfig +// 创建临时拉流转推任务,目前限制添加10条任务。 +// +// 该接口已下线,请使用新接口 CreateLivePullStreamTask。 +// +// +// +// 注意:该接口用于创建临时拉流转推任务, +// +// 拉流源地址即 FromUrl 可以是腾讯或非腾讯数据源, +// +// 但转推目标地址即 ToUrl 目前限制为已注册的腾讯直播域名。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) CreatePullStreamConfigWithContext(ctx context.Context, request *CreatePullStreamConfigRequest) (response *CreatePullStreamConfigResponse, err error) { + if request == nil { + request = NewCreatePullStreamConfigRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreatePullStreamConfig require credential") + } + + request.SetContext(ctx) + + response = NewCreatePullStreamConfigResponse() + err = c.Send(request, response) + return +} + +func NewCreateRecordTaskRequest() (request *CreateRecordTaskRequest) { + request = &CreateRecordTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateRecordTask") + + + return +} + +func NewCreateRecordTaskResponse() (response *CreateRecordTaskResponse) { + response = &CreateRecordTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateRecordTask +// 创建一个在指定时间启动、结束的录制任务,并使用指定录制模板ID对应的配置进行录制。 +// +// - 使用前提 +// +// 1. 录制文件存放于点播平台,所以用户如需使用录制功能,需首先自行开通点播服务。 +// +// 2. 录制文件存放后相关费用(含存储以及下行播放流量)按照点播平台计费方式收取,具体请参考 [对应文档](https://cloud.tencent.com/document/product/266/2837)。 +// +// - 注意事项 +// +// 1. 断流会结束当前录制并生成录制文件。在结束时间到达之前任务仍然有效,期间只要正常推流都会正常录制,与是否多次推、断流无关。 +// +// 2. 使用上避免创建时间段相互重叠的录制任务。若同一条流当前存在多个时段重叠的任务,为避免重复录制系统将启动最多3个录制任务。 +// +// 3. 创建的录制任务记录在平台侧只保留3个月。 +// +// 4. 当前录制任务管理API([CreateRecordTask](https://cloud.tencent.com/document/product/267/45983)/[StopRecordTask](https://cloud.tencent.com/document/product/267/45981)/[DeleteRecordTask](https://cloud.tencent.com/document/product/267/45982))与旧API(CreateLiveRecord/StopLiveRecord/DeleteLiveRecord)不兼容,两套接口不能混用。 +// +// 5. 避免 创建录制任务 与 推流 操作同时进行,可能导致因录制任务未生效而引起任务延迟启动问题,两者操作间隔建议大于3秒。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_MAXIMUMRUNNINGTASK = "LimitExceeded.MaximumRunningTask" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCEUNAVAILABLE_INVALIDVODSTATUS = "ResourceUnavailable.InvalidVodStatus" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) CreateRecordTask(request *CreateRecordTaskRequest) (response *CreateRecordTaskResponse, err error) { + return c.CreateRecordTaskWithContext(context.Background(), request) +} + +// CreateRecordTask +// 创建一个在指定时间启动、结束的录制任务,并使用指定录制模板ID对应的配置进行录制。 +// +// - 使用前提 +// +// 1. 录制文件存放于点播平台,所以用户如需使用录制功能,需首先自行开通点播服务。 +// +// 2. 录制文件存放后相关费用(含存储以及下行播放流量)按照点播平台计费方式收取,具体请参考 [对应文档](https://cloud.tencent.com/document/product/266/2837)。 +// +// - 注意事项 +// +// 1. 断流会结束当前录制并生成录制文件。在结束时间到达之前任务仍然有效,期间只要正常推流都会正常录制,与是否多次推、断流无关。 +// +// 2. 使用上避免创建时间段相互重叠的录制任务。若同一条流当前存在多个时段重叠的任务,为避免重复录制系统将启动最多3个录制任务。 +// +// 3. 创建的录制任务记录在平台侧只保留3个月。 +// +// 4. 当前录制任务管理API([CreateRecordTask](https://cloud.tencent.com/document/product/267/45983)/[StopRecordTask](https://cloud.tencent.com/document/product/267/45981)/[DeleteRecordTask](https://cloud.tencent.com/document/product/267/45982))与旧API(CreateLiveRecord/StopLiveRecord/DeleteLiveRecord)不兼容,两套接口不能混用。 +// +// 5. 避免 创建录制任务 与 推流 操作同时进行,可能导致因录制任务未生效而引起任务延迟启动问题,两者操作间隔建议大于3秒。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_MAXIMUMRUNNINGTASK = "LimitExceeded.MaximumRunningTask" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCEUNAVAILABLE_INVALIDVODSTATUS = "ResourceUnavailable.InvalidVodStatus" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) CreateRecordTaskWithContext(ctx context.Context, request *CreateRecordTaskRequest) (response *CreateRecordTaskResponse, err error) { + if request == nil { + request = NewCreateRecordTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateRecordTask require credential") + } + + request.SetContext(ctx) + + response = NewCreateRecordTaskResponse() + err = c.Send(request, response) + return +} + +func NewCreateScreenshotTaskRequest() (request *CreateScreenshotTaskRequest) { + request = &CreateScreenshotTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "CreateScreenshotTask") + + + return +} + +func NewCreateScreenshotTaskResponse() (response *CreateScreenshotTaskResponse) { + response = &CreateScreenshotTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// CreateScreenshotTask +// 创建一个在指定时间启动、结束的截图任务,并使用指定截图模板ID对应的配置进行截图。 +// +// - 注意事项 +// +// 1. 断流会结束当前截图。在结束时间到达之前任务仍然有效,期间只要正常推流都会正常截图,与是否多次推、断流无关。 +// +// 2. 使用上避免创建时间段相互重叠的截图任务。若同一条流当前存在多个时段重叠的任务,为避免重复系统将启动最多3个截图任务。 +// +// 3. 创建的截图任务记录在平台侧只保留3个月。 +// +// 4. 当前截图任务管理API(CreateScreenshotTask/StopScreenshotTask/DeleteScreenshotTask)与旧API(CreateLiveInstantSnapshot/StopLiveInstantSnapshot)不兼容,两套接口不能混用。 +// +// 5. 避免 创建截图任务 与 推流 操作同时进行,可能导致因截图任务未生效而引起任务延迟启动问题,两者操作间隔建议大于3秒。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_MAXIMUMRUNNINGTASK = "LimitExceeded.MaximumRunningTask" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) CreateScreenshotTask(request *CreateScreenshotTaskRequest) (response *CreateScreenshotTaskResponse, err error) { + return c.CreateScreenshotTaskWithContext(context.Background(), request) +} + +// CreateScreenshotTask +// 创建一个在指定时间启动、结束的截图任务,并使用指定截图模板ID对应的配置进行截图。 +// +// - 注意事项 +// +// 1. 断流会结束当前截图。在结束时间到达之前任务仍然有效,期间只要正常推流都会正常截图,与是否多次推、断流无关。 +// +// 2. 使用上避免创建时间段相互重叠的截图任务。若同一条流当前存在多个时段重叠的任务,为避免重复系统将启动最多3个截图任务。 +// +// 3. 创建的截图任务记录在平台侧只保留3个月。 +// +// 4. 当前截图任务管理API(CreateScreenshotTask/StopScreenshotTask/DeleteScreenshotTask)与旧API(CreateLiveInstantSnapshot/StopLiveInstantSnapshot)不兼容,两套接口不能混用。 +// +// 5. 避免 创建截图任务 与 推流 操作同时进行,可能导致因截图任务未生效而引起任务延迟启动问题,两者操作间隔建议大于3秒。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_MAXIMUMRUNNINGTASK = "LimitExceeded.MaximumRunningTask" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) CreateScreenshotTaskWithContext(ctx context.Context, request *CreateScreenshotTaskRequest) (response *CreateScreenshotTaskResponse, err error) { + if request == nil { + request = NewCreateScreenshotTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateScreenshotTask require credential") + } + + request.SetContext(ctx) + + response = NewCreateScreenshotTaskResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveCallbackRuleRequest() (request *DeleteLiveCallbackRuleRequest) { + request = &DeleteLiveCallbackRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveCallbackRule") + + + return +} + +func NewDeleteLiveCallbackRuleResponse() (response *DeleteLiveCallbackRuleResponse) { + response = &DeleteLiveCallbackRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveCallbackRule +// 删除回调规则。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DeleteLiveCallbackRule(request *DeleteLiveCallbackRuleRequest) (response *DeleteLiveCallbackRuleResponse, err error) { + return c.DeleteLiveCallbackRuleWithContext(context.Background(), request) +} + +// DeleteLiveCallbackRule +// 删除回调规则。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DeleteLiveCallbackRuleWithContext(ctx context.Context, request *DeleteLiveCallbackRuleRequest) (response *DeleteLiveCallbackRuleResponse, err error) { + if request == nil { + request = NewDeleteLiveCallbackRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveCallbackRule require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveCallbackRuleResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveCallbackTemplateRequest() (request *DeleteLiveCallbackTemplateRequest) { + request = &DeleteLiveCallbackTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveCallbackTemplate") + + + return +} + +func NewDeleteLiveCallbackTemplateResponse() (response *DeleteLiveCallbackTemplateResponse) { + response = &DeleteLiveCallbackTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveCallbackTemplate +// 删除回调模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveCallbackTemplate(request *DeleteLiveCallbackTemplateRequest) (response *DeleteLiveCallbackTemplateResponse, err error) { + return c.DeleteLiveCallbackTemplateWithContext(context.Background(), request) +} + +// DeleteLiveCallbackTemplate +// 删除回调模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveCallbackTemplateWithContext(ctx context.Context, request *DeleteLiveCallbackTemplateRequest) (response *DeleteLiveCallbackTemplateResponse, err error) { + if request == nil { + request = NewDeleteLiveCallbackTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveCallbackTemplate require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveCallbackTemplateResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveDomainRequest() (request *DeleteLiveDomainRequest) { + request = &DeleteLiveDomainRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveDomain") + + + return +} + +func NewDeleteLiveDomainResponse() (response *DeleteLiveDomainResponse) { + response = &DeleteLiveDomainResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveDomain +// 删除已添加的直播域名 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_DELETEDOMAININLOCKEDTIME = "FailedOperation.DeleteDomainInLockedTime" +// FAILEDOPERATION_JIFEINOENOUGHFUND = "FailedOperation.JiFeiNoEnoughFund" +// FAILEDOPERATION_TAGUNBINDERROR = "FailedOperation.TagUnbindError" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER_DOMAINALREADYEXIST = "InvalidParameter.DomainAlreadyExist" +// INVALIDPARAMETER_DOMAINISLIMITED = "InvalidParameter.DomainIsLimited" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveDomain(request *DeleteLiveDomainRequest) (response *DeleteLiveDomainResponse, err error) { + return c.DeleteLiveDomainWithContext(context.Background(), request) +} + +// DeleteLiveDomain +// 删除已添加的直播域名 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_DELETEDOMAININLOCKEDTIME = "FailedOperation.DeleteDomainInLockedTime" +// FAILEDOPERATION_JIFEINOENOUGHFUND = "FailedOperation.JiFeiNoEnoughFund" +// FAILEDOPERATION_TAGUNBINDERROR = "FailedOperation.TagUnbindError" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER_DOMAINALREADYEXIST = "InvalidParameter.DomainAlreadyExist" +// INVALIDPARAMETER_DOMAINISLIMITED = "InvalidParameter.DomainIsLimited" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveDomainWithContext(ctx context.Context, request *DeleteLiveDomainRequest) (response *DeleteLiveDomainResponse, err error) { + if request == nil { + request = NewDeleteLiveDomainRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveDomain require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveDomainResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLivePullStreamTaskRequest() (request *DeleteLivePullStreamTaskRequest) { + request = &DeleteLivePullStreamTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLivePullStreamTask") + + + return +} + +func NewDeleteLivePullStreamTaskResponse() (response *DeleteLivePullStreamTaskResponse) { + response = &DeleteLivePullStreamTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLivePullStreamTask +// 删除接口 CreateLivePullStreamTask 创建的拉流任务。 +// +// 注意: +// +// 1. 入参中的 TaskId 为 CreateLivePullStreamTask 接口创建时返回的TaskId。 +// +// 2. 也可通过 DescribeLivePullStreamTasks 进行查询创建的任务。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INVALIDPARAMETER_TASKNOTEXIST = "InvalidParameter.TaskNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DeleteLivePullStreamTask(request *DeleteLivePullStreamTaskRequest) (response *DeleteLivePullStreamTaskResponse, err error) { + return c.DeleteLivePullStreamTaskWithContext(context.Background(), request) +} + +// DeleteLivePullStreamTask +// 删除接口 CreateLivePullStreamTask 创建的拉流任务。 +// +// 注意: +// +// 1. 入参中的 TaskId 为 CreateLivePullStreamTask 接口创建时返回的TaskId。 +// +// 2. 也可通过 DescribeLivePullStreamTasks 进行查询创建的任务。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INVALIDPARAMETER_TASKNOTEXIST = "InvalidParameter.TaskNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DeleteLivePullStreamTaskWithContext(ctx context.Context, request *DeleteLivePullStreamTaskRequest) (response *DeleteLivePullStreamTaskResponse, err error) { + if request == nil { + request = NewDeleteLivePullStreamTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLivePullStreamTask require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLivePullStreamTaskResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveRecordRequest() (request *DeleteLiveRecordRequest) { + request = &DeleteLiveRecordRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveRecord") + + + return +} + +func NewDeleteLiveRecordResponse() (response *DeleteLiveRecordResponse) { + response = &DeleteLiveRecordResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveRecord +// 注:DeleteLiveRecord 接口仅用于删除录制任务记录,不具备停止录制的功能,也不能删除正在进行中的录制。如果需要停止录制任务,请使用终止录制[StopLiveRecord](/document/product/267/30146) 接口。 +// +// 可能返回的错误码: +// FAILEDOPERATION_ALTERTASKSTATE = "FailedOperation.AlterTaskState" +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_CHANNELNOTEXIST = "ResourceNotFound.ChannelNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_TASKID = "ResourceNotFound.TaskId" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveRecord(request *DeleteLiveRecordRequest) (response *DeleteLiveRecordResponse, err error) { + return c.DeleteLiveRecordWithContext(context.Background(), request) +} + +// DeleteLiveRecord +// 注:DeleteLiveRecord 接口仅用于删除录制任务记录,不具备停止录制的功能,也不能删除正在进行中的录制。如果需要停止录制任务,请使用终止录制[StopLiveRecord](/document/product/267/30146) 接口。 +// +// 可能返回的错误码: +// FAILEDOPERATION_ALTERTASKSTATE = "FailedOperation.AlterTaskState" +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_CHANNELNOTEXIST = "ResourceNotFound.ChannelNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_TASKID = "ResourceNotFound.TaskId" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveRecordWithContext(ctx context.Context, request *DeleteLiveRecordRequest) (response *DeleteLiveRecordResponse, err error) { + if request == nil { + request = NewDeleteLiveRecordRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveRecord require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveRecordResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveRecordRuleRequest() (request *DeleteLiveRecordRuleRequest) { + request = &DeleteLiveRecordRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveRecordRule") + + + return +} + +func NewDeleteLiveRecordRuleResponse() (response *DeleteLiveRecordRuleResponse) { + response = &DeleteLiveRecordRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveRecordRule +// 删除录制规则。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveRecordRule(request *DeleteLiveRecordRuleRequest) (response *DeleteLiveRecordRuleResponse, err error) { + return c.DeleteLiveRecordRuleWithContext(context.Background(), request) +} + +// DeleteLiveRecordRule +// 删除录制规则。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveRecordRuleWithContext(ctx context.Context, request *DeleteLiveRecordRuleRequest) (response *DeleteLiveRecordRuleResponse, err error) { + if request == nil { + request = NewDeleteLiveRecordRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveRecordRule require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveRecordRuleResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveRecordTemplateRequest() (request *DeleteLiveRecordTemplateRequest) { + request = &DeleteLiveRecordTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveRecordTemplate") + + + return +} + +func NewDeleteLiveRecordTemplateResponse() (response *DeleteLiveRecordTemplateResponse) { + response = &DeleteLiveRecordTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveRecordTemplate +// 删除录制模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveRecordTemplate(request *DeleteLiveRecordTemplateRequest) (response *DeleteLiveRecordTemplateResponse, err error) { + return c.DeleteLiveRecordTemplateWithContext(context.Background(), request) +} + +// DeleteLiveRecordTemplate +// 删除录制模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveRecordTemplateWithContext(ctx context.Context, request *DeleteLiveRecordTemplateRequest) (response *DeleteLiveRecordTemplateResponse, err error) { + if request == nil { + request = NewDeleteLiveRecordTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveRecordTemplate require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveRecordTemplateResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveSnapshotRuleRequest() (request *DeleteLiveSnapshotRuleRequest) { + request = &DeleteLiveSnapshotRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveSnapshotRule") + + + return +} + +func NewDeleteLiveSnapshotRuleResponse() (response *DeleteLiveSnapshotRuleResponse) { + response = &DeleteLiveSnapshotRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveSnapshotRule +// 删除截图规则。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveSnapshotRule(request *DeleteLiveSnapshotRuleRequest) (response *DeleteLiveSnapshotRuleResponse, err error) { + return c.DeleteLiveSnapshotRuleWithContext(context.Background(), request) +} + +// DeleteLiveSnapshotRule +// 删除截图规则。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveSnapshotRuleWithContext(ctx context.Context, request *DeleteLiveSnapshotRuleRequest) (response *DeleteLiveSnapshotRuleResponse, err error) { + if request == nil { + request = NewDeleteLiveSnapshotRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveSnapshotRule require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveSnapshotRuleResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveSnapshotTemplateRequest() (request *DeleteLiveSnapshotTemplateRequest) { + request = &DeleteLiveSnapshotTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveSnapshotTemplate") + + + return +} + +func NewDeleteLiveSnapshotTemplateResponse() (response *DeleteLiveSnapshotTemplateResponse) { + response = &DeleteLiveSnapshotTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveSnapshotTemplate +// 删除截图模板 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveSnapshotTemplate(request *DeleteLiveSnapshotTemplateRequest) (response *DeleteLiveSnapshotTemplateResponse, err error) { + return c.DeleteLiveSnapshotTemplateWithContext(context.Background(), request) +} + +// DeleteLiveSnapshotTemplate +// 删除截图模板 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveSnapshotTemplateWithContext(ctx context.Context, request *DeleteLiveSnapshotTemplateRequest) (response *DeleteLiveSnapshotTemplateResponse, err error) { + if request == nil { + request = NewDeleteLiveSnapshotTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveSnapshotTemplate require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveSnapshotTemplateResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveTranscodeRuleRequest() (request *DeleteLiveTranscodeRuleRequest) { + request = &DeleteLiveTranscodeRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveTranscodeRule") + + + return +} + +func NewDeleteLiveTranscodeRuleResponse() (response *DeleteLiveTranscodeRuleResponse) { + response = &DeleteLiveTranscodeRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveTranscodeRule +// 删除转码规则。 +// +// DomainName+AppName+StreamName+TemplateId唯一标识单个转码规则,如需删除需要强匹配。其中TemplateId必填,其余参数为空时也需要传空字符串进行强匹配。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveTranscodeRule(request *DeleteLiveTranscodeRuleRequest) (response *DeleteLiveTranscodeRuleResponse, err error) { + return c.DeleteLiveTranscodeRuleWithContext(context.Background(), request) +} + +// DeleteLiveTranscodeRule +// 删除转码规则。 +// +// DomainName+AppName+StreamName+TemplateId唯一标识单个转码规则,如需删除需要强匹配。其中TemplateId必填,其余参数为空时也需要传空字符串进行强匹配。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveTranscodeRuleWithContext(ctx context.Context, request *DeleteLiveTranscodeRuleRequest) (response *DeleteLiveTranscodeRuleResponse, err error) { + if request == nil { + request = NewDeleteLiveTranscodeRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveTranscodeRule require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveTranscodeRuleResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveTranscodeTemplateRequest() (request *DeleteLiveTranscodeTemplateRequest) { + request = &DeleteLiveTranscodeTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveTranscodeTemplate") + + + return +} + +func NewDeleteLiveTranscodeTemplateResponse() (response *DeleteLiveTranscodeTemplateResponse) { + response = &DeleteLiveTranscodeTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveTranscodeTemplate +// 删除转码模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_AITRANSCODEOPTIONFAIL = "FailedOperation.AiTranscodeOptionFail" +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveTranscodeTemplate(request *DeleteLiveTranscodeTemplateRequest) (response *DeleteLiveTranscodeTemplateResponse, err error) { + return c.DeleteLiveTranscodeTemplateWithContext(context.Background(), request) +} + +// DeleteLiveTranscodeTemplate +// 删除转码模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_AITRANSCODEOPTIONFAIL = "FailedOperation.AiTranscodeOptionFail" +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveTranscodeTemplateWithContext(ctx context.Context, request *DeleteLiveTranscodeTemplateRequest) (response *DeleteLiveTranscodeTemplateResponse, err error) { + if request == nil { + request = NewDeleteLiveTranscodeTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveTranscodeTemplate require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveTranscodeTemplateResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveWatermarkRequest() (request *DeleteLiveWatermarkRequest) { + request = &DeleteLiveWatermarkRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveWatermark") + + + return +} + +func NewDeleteLiveWatermarkResponse() (response *DeleteLiveWatermarkResponse) { + response = &DeleteLiveWatermarkResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveWatermark +// 删除水印。 +// +// 可能返回的错误码: +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETWATERMARKERROR = "InternalError.GetWatermarkError" +// INTERNALERROR_WATERMARKNOTEXIST = "InternalError.WatermarkNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_WATERMARKNOTEXIST = "ResourceNotFound.WatermarkNotExist" +func (c *Client) DeleteLiveWatermark(request *DeleteLiveWatermarkRequest) (response *DeleteLiveWatermarkResponse, err error) { + return c.DeleteLiveWatermarkWithContext(context.Background(), request) +} + +// DeleteLiveWatermark +// 删除水印。 +// +// 可能返回的错误码: +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETWATERMARKERROR = "InternalError.GetWatermarkError" +// INTERNALERROR_WATERMARKNOTEXIST = "InternalError.WatermarkNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_WATERMARKNOTEXIST = "ResourceNotFound.WatermarkNotExist" +func (c *Client) DeleteLiveWatermarkWithContext(ctx context.Context, request *DeleteLiveWatermarkRequest) (response *DeleteLiveWatermarkResponse, err error) { + if request == nil { + request = NewDeleteLiveWatermarkRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveWatermark require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveWatermarkResponse() + err = c.Send(request, response) + return +} + +func NewDeleteLiveWatermarkRuleRequest() (request *DeleteLiveWatermarkRuleRequest) { + request = &DeleteLiveWatermarkRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteLiveWatermarkRule") + + + return +} + +func NewDeleteLiveWatermarkRuleResponse() (response *DeleteLiveWatermarkRuleResponse) { + response = &DeleteLiveWatermarkRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteLiveWatermarkRule +// 删除水印规则 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveWatermarkRule(request *DeleteLiveWatermarkRuleRequest) (response *DeleteLiveWatermarkRuleResponse, err error) { + return c.DeleteLiveWatermarkRuleWithContext(context.Background(), request) +} + +// DeleteLiveWatermarkRule +// 删除水印规则 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DeleteLiveWatermarkRuleWithContext(ctx context.Context, request *DeleteLiveWatermarkRuleRequest) (response *DeleteLiveWatermarkRuleResponse, err error) { + if request == nil { + request = NewDeleteLiveWatermarkRuleRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteLiveWatermarkRule require credential") + } + + request.SetContext(ctx) + + response = NewDeleteLiveWatermarkRuleResponse() + err = c.Send(request, response) + return +} + +func NewDeletePullStreamConfigRequest() (request *DeletePullStreamConfigRequest) { + request = &DeletePullStreamConfigRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeletePullStreamConfig") + + + return +} + +func NewDeletePullStreamConfigResponse() (response *DeletePullStreamConfigResponse) { + response = &DeletePullStreamConfigResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeletePullStreamConfig +// 删除直播拉流配置。该接口已下线,请使用新接口 DeleteLivePullStreamTask。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DeletePullStreamConfig(request *DeletePullStreamConfigRequest) (response *DeletePullStreamConfigResponse, err error) { + return c.DeletePullStreamConfigWithContext(context.Background(), request) +} + +// DeletePullStreamConfig +// 删除直播拉流配置。该接口已下线,请使用新接口 DeleteLivePullStreamTask。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DeletePullStreamConfigWithContext(ctx context.Context, request *DeletePullStreamConfigRequest) (response *DeletePullStreamConfigResponse, err error) { + if request == nil { + request = NewDeletePullStreamConfigRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeletePullStreamConfig require credential") + } + + request.SetContext(ctx) + + response = NewDeletePullStreamConfigResponse() + err = c.Send(request, response) + return +} + +func NewDeleteRecordTaskRequest() (request *DeleteRecordTaskRequest) { + request = &DeleteRecordTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteRecordTask") + + + return +} + +func NewDeleteRecordTaskResponse() (response *DeleteRecordTaskResponse) { + response = &DeleteRecordTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteRecordTask +// 删除录制任务配置。删除操作不影响正在运行当中的任务,仅对删除之后新的推流有效。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCEUNAVAILABLE_INVALIDVODSTATUS = "ResourceUnavailable.InvalidVodStatus" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteRecordTask(request *DeleteRecordTaskRequest) (response *DeleteRecordTaskResponse, err error) { + return c.DeleteRecordTaskWithContext(context.Background(), request) +} + +// DeleteRecordTask +// 删除录制任务配置。删除操作不影响正在运行当中的任务,仅对删除之后新的推流有效。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCEUNAVAILABLE_INVALIDVODSTATUS = "ResourceUnavailable.InvalidVodStatus" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteRecordTaskWithContext(ctx context.Context, request *DeleteRecordTaskRequest) (response *DeleteRecordTaskResponse, err error) { + if request == nil { + request = NewDeleteRecordTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteRecordTask require credential") + } + + request.SetContext(ctx) + + response = NewDeleteRecordTaskResponse() + err = c.Send(request, response) + return +} + +func NewDeleteScreenshotTaskRequest() (request *DeleteScreenshotTaskRequest) { + request = &DeleteScreenshotTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DeleteScreenshotTask") + + + return +} + +func NewDeleteScreenshotTaskResponse() (response *DeleteScreenshotTaskResponse) { + response = &DeleteScreenshotTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DeleteScreenshotTask +// 删除截图任务配置。删除操作不影响正在运行当中的任务,仅对删除之后新的推流有效。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteScreenshotTask(request *DeleteScreenshotTaskRequest) (response *DeleteScreenshotTaskResponse, err error) { + return c.DeleteScreenshotTaskWithContext(context.Background(), request) +} + +// DeleteScreenshotTask +// 删除截图任务配置。删除操作不影响正在运行当中的任务,仅对删除之后新的推流有效。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteScreenshotTaskWithContext(ctx context.Context, request *DeleteScreenshotTaskRequest) (response *DeleteScreenshotTaskResponse, err error) { + if request == nil { + request = NewDeleteScreenshotTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteScreenshotTask require credential") + } + + request.SetContext(ctx) + + response = NewDeleteScreenshotTaskResponse() + err = c.Send(request, response) + return +} + +func NewDescribeAllStreamPlayInfoListRequest() (request *DescribeAllStreamPlayInfoListRequest) { + request = &DescribeAllStreamPlayInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeAllStreamPlayInfoList") + + + return +} + +func NewDescribeAllStreamPlayInfoListResponse() (response *DescribeAllStreamPlayInfoListResponse) { + response = &DescribeAllStreamPlayInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeAllStreamPlayInfoList +// 输入某个时间点(1分钟维度),查询该时间点所有流的下行信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeAllStreamPlayInfoList(request *DescribeAllStreamPlayInfoListRequest) (response *DescribeAllStreamPlayInfoListResponse, err error) { + return c.DescribeAllStreamPlayInfoListWithContext(context.Background(), request) +} + +// DescribeAllStreamPlayInfoList +// 输入某个时间点(1分钟维度),查询该时间点所有流的下行信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeAllStreamPlayInfoListWithContext(ctx context.Context, request *DescribeAllStreamPlayInfoListRequest) (response *DescribeAllStreamPlayInfoListResponse, err error) { + if request == nil { + request = NewDescribeAllStreamPlayInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeAllStreamPlayInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeAllStreamPlayInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeAreaBillBandwidthAndFluxListRequest() (request *DescribeAreaBillBandwidthAndFluxListRequest) { + request = &DescribeAreaBillBandwidthAndFluxListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeAreaBillBandwidthAndFluxList") + + + return +} + +func NewDescribeAreaBillBandwidthAndFluxListResponse() (response *DescribeAreaBillBandwidthAndFluxListResponse) { + response = &DescribeAreaBillBandwidthAndFluxListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeAreaBillBandwidthAndFluxList +// 海外分区直播播放带宽和流量数据查询。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeAreaBillBandwidthAndFluxList(request *DescribeAreaBillBandwidthAndFluxListRequest) (response *DescribeAreaBillBandwidthAndFluxListResponse, err error) { + return c.DescribeAreaBillBandwidthAndFluxListWithContext(context.Background(), request) +} + +// DescribeAreaBillBandwidthAndFluxList +// 海外分区直播播放带宽和流量数据查询。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeAreaBillBandwidthAndFluxListWithContext(ctx context.Context, request *DescribeAreaBillBandwidthAndFluxListRequest) (response *DescribeAreaBillBandwidthAndFluxListResponse, err error) { + if request == nil { + request = NewDescribeAreaBillBandwidthAndFluxListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeAreaBillBandwidthAndFluxList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeAreaBillBandwidthAndFluxListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeBillBandwidthAndFluxListRequest() (request *DescribeBillBandwidthAndFluxListRequest) { + request = &DescribeBillBandwidthAndFluxListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeBillBandwidthAndFluxList") + + + return +} + +func NewDescribeBillBandwidthAndFluxListResponse() (response *DescribeBillBandwidthAndFluxListResponse) { + response = &DescribeBillBandwidthAndFluxListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeBillBandwidthAndFluxList +// 直播播放带宽和流量数据查询。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeBillBandwidthAndFluxList(request *DescribeBillBandwidthAndFluxListRequest) (response *DescribeBillBandwidthAndFluxListResponse, err error) { + return c.DescribeBillBandwidthAndFluxListWithContext(context.Background(), request) +} + +// DescribeBillBandwidthAndFluxList +// 直播播放带宽和流量数据查询。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeBillBandwidthAndFluxListWithContext(ctx context.Context, request *DescribeBillBandwidthAndFluxListRequest) (response *DescribeBillBandwidthAndFluxListResponse, err error) { + if request == nil { + request = NewDescribeBillBandwidthAndFluxListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeBillBandwidthAndFluxList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeBillBandwidthAndFluxListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeCallbackRecordsListRequest() (request *DescribeCallbackRecordsListRequest) { + request = &DescribeCallbackRecordsListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeCallbackRecordsList") + + + return +} + +func NewDescribeCallbackRecordsListResponse() (response *DescribeCallbackRecordsListResponse) { + response = &DescribeCallbackRecordsListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeCallbackRecordsList +// 用于查询回调事件。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeCallbackRecordsList(request *DescribeCallbackRecordsListRequest) (response *DescribeCallbackRecordsListResponse, err error) { + return c.DescribeCallbackRecordsListWithContext(context.Background(), request) +} + +// DescribeCallbackRecordsList +// 用于查询回调事件。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeCallbackRecordsListWithContext(ctx context.Context, request *DescribeCallbackRecordsListRequest) (response *DescribeCallbackRecordsListResponse, err error) { + if request == nil { + request = NewDescribeCallbackRecordsListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeCallbackRecordsList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeCallbackRecordsListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeConcurrentRecordStreamNumRequest() (request *DescribeConcurrentRecordStreamNumRequest) { + request = &DescribeConcurrentRecordStreamNumRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeConcurrentRecordStreamNum") + + + return +} + +func NewDescribeConcurrentRecordStreamNumResponse() (response *DescribeConcurrentRecordStreamNumResponse) { + response = &DescribeConcurrentRecordStreamNumResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeConcurrentRecordStreamNum +// 查询并发录制路数,对慢直播和普通直播适用。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeConcurrentRecordStreamNum(request *DescribeConcurrentRecordStreamNumRequest) (response *DescribeConcurrentRecordStreamNumResponse, err error) { + return c.DescribeConcurrentRecordStreamNumWithContext(context.Background(), request) +} + +// DescribeConcurrentRecordStreamNum +// 查询并发录制路数,对慢直播和普通直播适用。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeConcurrentRecordStreamNumWithContext(ctx context.Context, request *DescribeConcurrentRecordStreamNumRequest) (response *DescribeConcurrentRecordStreamNumResponse, err error) { + if request == nil { + request = NewDescribeConcurrentRecordStreamNumRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeConcurrentRecordStreamNum require credential") + } + + request.SetContext(ctx) + + response = NewDescribeConcurrentRecordStreamNumResponse() + err = c.Send(request, response) + return +} + +func NewDescribeDeliverBandwidthListRequest() (request *DescribeDeliverBandwidthListRequest) { + request = &DescribeDeliverBandwidthListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeDeliverBandwidthList") + + + return +} + +func NewDescribeDeliverBandwidthListResponse() (response *DescribeDeliverBandwidthListResponse) { + response = &DescribeDeliverBandwidthListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeDeliverBandwidthList +// 查询直播转推计费带宽,查询时间范围最大支持3个月内的数据,时间跨度最长31天。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeDeliverBandwidthList(request *DescribeDeliverBandwidthListRequest) (response *DescribeDeliverBandwidthListResponse, err error) { + return c.DescribeDeliverBandwidthListWithContext(context.Background(), request) +} + +// DescribeDeliverBandwidthList +// 查询直播转推计费带宽,查询时间范围最大支持3个月内的数据,时间跨度最长31天。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeDeliverBandwidthListWithContext(ctx context.Context, request *DescribeDeliverBandwidthListRequest) (response *DescribeDeliverBandwidthListResponse, err error) { + if request == nil { + request = NewDescribeDeliverBandwidthListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeDeliverBandwidthList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeDeliverBandwidthListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeGroupProIspPlayInfoListRequest() (request *DescribeGroupProIspPlayInfoListRequest) { + request = &DescribeGroupProIspPlayInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeGroupProIspPlayInfoList") + + + return +} + +func NewDescribeGroupProIspPlayInfoListResponse() (response *DescribeGroupProIspPlayInfoListResponse) { + response = &DescribeGroupProIspPlayInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeGroupProIspPlayInfoList +// 查询按省份和运营商分组的下行播放数据。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeGroupProIspPlayInfoList(request *DescribeGroupProIspPlayInfoListRequest) (response *DescribeGroupProIspPlayInfoListResponse, err error) { + return c.DescribeGroupProIspPlayInfoListWithContext(context.Background(), request) +} + +// DescribeGroupProIspPlayInfoList +// 查询按省份和运营商分组的下行播放数据。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeGroupProIspPlayInfoListWithContext(ctx context.Context, request *DescribeGroupProIspPlayInfoListRequest) (response *DescribeGroupProIspPlayInfoListResponse, err error) { + if request == nil { + request = NewDescribeGroupProIspPlayInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeGroupProIspPlayInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeGroupProIspPlayInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeHttpStatusInfoListRequest() (request *DescribeHttpStatusInfoListRequest) { + request = &DescribeHttpStatusInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeHttpStatusInfoList") + + + return +} + +func NewDescribeHttpStatusInfoListResponse() (response *DescribeHttpStatusInfoListResponse) { + response = &DescribeHttpStatusInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeHttpStatusInfoList +// 查询某段时间内5分钟粒度的各播放http状态码的个数。 +// +// 备注:数据延迟1小时,如10:00-10:59点的数据12点才能查到。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeHttpStatusInfoList(request *DescribeHttpStatusInfoListRequest) (response *DescribeHttpStatusInfoListResponse, err error) { + return c.DescribeHttpStatusInfoListWithContext(context.Background(), request) +} + +// DescribeHttpStatusInfoList +// 查询某段时间内5分钟粒度的各播放http状态码的个数。 +// +// 备注:数据延迟1小时,如10:00-10:59点的数据12点才能查到。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeHttpStatusInfoListWithContext(ctx context.Context, request *DescribeHttpStatusInfoListRequest) (response *DescribeHttpStatusInfoListResponse, err error) { + if request == nil { + request = NewDescribeHttpStatusInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeHttpStatusInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeHttpStatusInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveCallbackRulesRequest() (request *DescribeLiveCallbackRulesRequest) { + request = &DescribeLiveCallbackRulesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveCallbackRules") + + + return +} + +func NewDescribeLiveCallbackRulesResponse() (response *DescribeLiveCallbackRulesResponse) { + response = &DescribeLiveCallbackRulesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveCallbackRules +// 获取回调规则列表 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveCallbackRules(request *DescribeLiveCallbackRulesRequest) (response *DescribeLiveCallbackRulesResponse, err error) { + return c.DescribeLiveCallbackRulesWithContext(context.Background(), request) +} + +// DescribeLiveCallbackRules +// 获取回调规则列表 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveCallbackRulesWithContext(ctx context.Context, request *DescribeLiveCallbackRulesRequest) (response *DescribeLiveCallbackRulesResponse, err error) { + if request == nil { + request = NewDescribeLiveCallbackRulesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveCallbackRules require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveCallbackRulesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveCallbackTemplateRequest() (request *DescribeLiveCallbackTemplateRequest) { + request = &DescribeLiveCallbackTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveCallbackTemplate") + + + return +} + +func NewDescribeLiveCallbackTemplateResponse() (response *DescribeLiveCallbackTemplateResponse) { + response = &DescribeLiveCallbackTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveCallbackTemplate +// 获取单个回调模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INTERNALERROR_RULEOUTLIMIT = "InternalError.RuleOutLimit" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveCallbackTemplate(request *DescribeLiveCallbackTemplateRequest) (response *DescribeLiveCallbackTemplateResponse, err error) { + return c.DescribeLiveCallbackTemplateWithContext(context.Background(), request) +} + +// DescribeLiveCallbackTemplate +// 获取单个回调模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INTERNALERROR_RULEOUTLIMIT = "InternalError.RuleOutLimit" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveCallbackTemplateWithContext(ctx context.Context, request *DescribeLiveCallbackTemplateRequest) (response *DescribeLiveCallbackTemplateResponse, err error) { + if request == nil { + request = NewDescribeLiveCallbackTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveCallbackTemplate require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveCallbackTemplateResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveCallbackTemplatesRequest() (request *DescribeLiveCallbackTemplatesRequest) { + request = &DescribeLiveCallbackTemplatesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveCallbackTemplates") + + + return +} + +func NewDescribeLiveCallbackTemplatesResponse() (response *DescribeLiveCallbackTemplatesResponse) { + response = &DescribeLiveCallbackTemplatesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveCallbackTemplates +// 获取回调模板列表 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveCallbackTemplates(request *DescribeLiveCallbackTemplatesRequest) (response *DescribeLiveCallbackTemplatesResponse, err error) { + return c.DescribeLiveCallbackTemplatesWithContext(context.Background(), request) +} + +// DescribeLiveCallbackTemplates +// 获取回调模板列表 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveCallbackTemplatesWithContext(ctx context.Context, request *DescribeLiveCallbackTemplatesRequest) (response *DescribeLiveCallbackTemplatesResponse, err error) { + if request == nil { + request = NewDescribeLiveCallbackTemplatesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveCallbackTemplates require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveCallbackTemplatesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveCertRequest() (request *DescribeLiveCertRequest) { + request = &DescribeLiveCertRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveCert") + + + return +} + +func NewDescribeLiveCertResponse() (response *DescribeLiveCertResponse) { + response = &DescribeLiveCertResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveCert +// 获取证书信息 +// +// 可能返回的错误码: +// FAILEDOPERATION_INVOKEVIDEOAPIFAIL = "FailedOperation.InvokeVideoApiFail" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CRTDOMAINNOTFOUND = "InternalError.CrtDomainNotFound" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// RESOURCENOTFOUND_CRTDOMAINNOTFOUND = "ResourceNotFound.CrtDomainNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveCert(request *DescribeLiveCertRequest) (response *DescribeLiveCertResponse, err error) { + return c.DescribeLiveCertWithContext(context.Background(), request) +} + +// DescribeLiveCert +// 获取证书信息 +// +// 可能返回的错误码: +// FAILEDOPERATION_INVOKEVIDEOAPIFAIL = "FailedOperation.InvokeVideoApiFail" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CRTDOMAINNOTFOUND = "InternalError.CrtDomainNotFound" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// RESOURCENOTFOUND_CRTDOMAINNOTFOUND = "ResourceNotFound.CrtDomainNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveCertWithContext(ctx context.Context, request *DescribeLiveCertRequest) (response *DescribeLiveCertResponse, err error) { + if request == nil { + request = NewDescribeLiveCertRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveCert require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveCertResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveCertsRequest() (request *DescribeLiveCertsRequest) { + request = &DescribeLiveCertsRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveCerts") + + + return +} + +func NewDescribeLiveCertsResponse() (response *DescribeLiveCertsResponse) { + response = &DescribeLiveCertsResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveCerts +// 获取证书信息列表 +// +// 可能返回的错误码: +// FAILEDOPERATION_INVOKEVIDEOAPIFAIL = "FailedOperation.InvokeVideoApiFail" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_CRTDOMAINNOTFOUND = "ResourceNotFound.CrtDomainNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveCerts(request *DescribeLiveCertsRequest) (response *DescribeLiveCertsResponse, err error) { + return c.DescribeLiveCertsWithContext(context.Background(), request) +} + +// DescribeLiveCerts +// 获取证书信息列表 +// +// 可能返回的错误码: +// FAILEDOPERATION_INVOKEVIDEOAPIFAIL = "FailedOperation.InvokeVideoApiFail" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_CRTDOMAINNOTFOUND = "ResourceNotFound.CrtDomainNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveCertsWithContext(ctx context.Context, request *DescribeLiveCertsRequest) (response *DescribeLiveCertsResponse, err error) { + if request == nil { + request = NewDescribeLiveCertsRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveCerts require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveCertsResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveDelayInfoListRequest() (request *DescribeLiveDelayInfoListRequest) { + request = &DescribeLiveDelayInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveDelayInfoList") + + + return +} + +func NewDescribeLiveDelayInfoListResponse() (response *DescribeLiveDelayInfoListResponse) { + response = &DescribeLiveDelayInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveDelayInfoList +// 获取直播延播列表。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveDelayInfoList(request *DescribeLiveDelayInfoListRequest) (response *DescribeLiveDelayInfoListResponse, err error) { + return c.DescribeLiveDelayInfoListWithContext(context.Background(), request) +} + +// DescribeLiveDelayInfoList +// 获取直播延播列表。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveDelayInfoListWithContext(ctx context.Context, request *DescribeLiveDelayInfoListRequest) (response *DescribeLiveDelayInfoListResponse, err error) { + if request == nil { + request = NewDescribeLiveDelayInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveDelayInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveDelayInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveDomainRequest() (request *DescribeLiveDomainRequest) { + request = &DescribeLiveDomainRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveDomain") + + + return +} + +func NewDescribeLiveDomainResponse() (response *DescribeLiveDomainResponse) { + response = &DescribeLiveDomainResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveDomain +// 查询直播域名信息。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_DOMAINNOTEXIST = "InternalError.DomainNotExist" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomain(request *DescribeLiveDomainRequest) (response *DescribeLiveDomainResponse, err error) { + return c.DescribeLiveDomainWithContext(context.Background(), request) +} + +// DescribeLiveDomain +// 查询直播域名信息。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_DOMAINNOTEXIST = "InternalError.DomainNotExist" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomainWithContext(ctx context.Context, request *DescribeLiveDomainRequest) (response *DescribeLiveDomainResponse, err error) { + if request == nil { + request = NewDescribeLiveDomainRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveDomain require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveDomainResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveDomainCertRequest() (request *DescribeLiveDomainCertRequest) { + request = &DescribeLiveDomainCertRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveDomainCert") + + + return +} + +func NewDescribeLiveDomainCertResponse() (response *DescribeLiveDomainCertResponse) { + response = &DescribeLiveDomainCertResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveDomainCert +// 获取域名证书信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION_INVOKEVIDEOAPIFAIL = "FailedOperation.InvokeVideoApiFail" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_CRTDOMAINNOTFOUND = "ResourceNotFound.CrtDomainNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomainCert(request *DescribeLiveDomainCertRequest) (response *DescribeLiveDomainCertResponse, err error) { + return c.DescribeLiveDomainCertWithContext(context.Background(), request) +} + +// DescribeLiveDomainCert +// 获取域名证书信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION_INVOKEVIDEOAPIFAIL = "FailedOperation.InvokeVideoApiFail" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_CRTDOMAINNOTFOUND = "ResourceNotFound.CrtDomainNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomainCertWithContext(ctx context.Context, request *DescribeLiveDomainCertRequest) (response *DescribeLiveDomainCertResponse, err error) { + if request == nil { + request = NewDescribeLiveDomainCertRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveDomainCert require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveDomainCertResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveDomainCertBindingsRequest() (request *DescribeLiveDomainCertBindingsRequest) { + request = &DescribeLiveDomainCertBindingsRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveDomainCertBindings") + + + return +} + +func NewDescribeLiveDomainCertBindingsResponse() (response *DescribeLiveDomainCertBindingsResponse) { + response = &DescribeLiveDomainCertBindingsResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveDomainCertBindings +// 查询绑定证书的域名列表。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomainCertBindings(request *DescribeLiveDomainCertBindingsRequest) (response *DescribeLiveDomainCertBindingsResponse, err error) { + return c.DescribeLiveDomainCertBindingsWithContext(context.Background(), request) +} + +// DescribeLiveDomainCertBindings +// 查询绑定证书的域名列表。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomainCertBindingsWithContext(ctx context.Context, request *DescribeLiveDomainCertBindingsRequest) (response *DescribeLiveDomainCertBindingsResponse, err error) { + if request == nil { + request = NewDescribeLiveDomainCertBindingsRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveDomainCertBindings require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveDomainCertBindingsResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveDomainPlayInfoListRequest() (request *DescribeLiveDomainPlayInfoListRequest) { + request = &DescribeLiveDomainPlayInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveDomainPlayInfoList") + + + return +} + +func NewDescribeLiveDomainPlayInfoListResponse() (response *DescribeLiveDomainPlayInfoListResponse) { + response = &DescribeLiveDomainPlayInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveDomainPlayInfoList +// 查询实时的域名维度下行播放数据,由于数据处理有耗时,接口默认查询4分钟前的准实时数据。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeLiveDomainPlayInfoList(request *DescribeLiveDomainPlayInfoListRequest) (response *DescribeLiveDomainPlayInfoListResponse, err error) { + return c.DescribeLiveDomainPlayInfoListWithContext(context.Background(), request) +} + +// DescribeLiveDomainPlayInfoList +// 查询实时的域名维度下行播放数据,由于数据处理有耗时,接口默认查询4分钟前的准实时数据。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeLiveDomainPlayInfoListWithContext(ctx context.Context, request *DescribeLiveDomainPlayInfoListRequest) (response *DescribeLiveDomainPlayInfoListResponse, err error) { + if request == nil { + request = NewDescribeLiveDomainPlayInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveDomainPlayInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveDomainPlayInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveDomainRefererRequest() (request *DescribeLiveDomainRefererRequest) { + request = &DescribeLiveDomainRefererRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveDomainReferer") + + + return +} + +func NewDescribeLiveDomainRefererResponse() (response *DescribeLiveDomainRefererResponse) { + response = &DescribeLiveDomainRefererResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveDomainReferer +// 查询直播域名 Referer 黑白名单配置。 +// +// 由于 Referer 信息包含在 http 协议中,在开启配置后,播放协议为 rtmp 或 WebRTC 不会校验 Referer 配置,仍可正常播放。如需配置 Referer 鉴权建议使用 http-flv 或 http-hls 协议播放。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_DOMAINNOTEXIST = "InternalError.DomainNotExist" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomainReferer(request *DescribeLiveDomainRefererRequest) (response *DescribeLiveDomainRefererResponse, err error) { + return c.DescribeLiveDomainRefererWithContext(context.Background(), request) +} + +// DescribeLiveDomainReferer +// 查询直播域名 Referer 黑白名单配置。 +// +// 由于 Referer 信息包含在 http 协议中,在开启配置后,播放协议为 rtmp 或 WebRTC 不会校验 Referer 配置,仍可正常播放。如需配置 Referer 鉴权建议使用 http-flv 或 http-hls 协议播放。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_DOMAINNOTEXIST = "InternalError.DomainNotExist" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomainRefererWithContext(ctx context.Context, request *DescribeLiveDomainRefererRequest) (response *DescribeLiveDomainRefererResponse, err error) { + if request == nil { + request = NewDescribeLiveDomainRefererRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveDomainReferer require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveDomainRefererResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveDomainsRequest() (request *DescribeLiveDomainsRequest) { + request = &DescribeLiveDomainsRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveDomains") + + + return +} + +func NewDescribeLiveDomainsResponse() (response *DescribeLiveDomainsResponse) { + response = &DescribeLiveDomainsResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveDomains +// 根据域名状态、类型等信息查询用户的域名信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_INVALIDUSER = "ResourceNotFound.InvalidUser" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomains(request *DescribeLiveDomainsRequest) (response *DescribeLiveDomainsResponse, err error) { + return c.DescribeLiveDomainsWithContext(context.Background(), request) +} + +// DescribeLiveDomains +// 根据域名状态、类型等信息查询用户的域名信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_INVALIDUSER = "ResourceNotFound.InvalidUser" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveDomainsWithContext(ctx context.Context, request *DescribeLiveDomainsRequest) (response *DescribeLiveDomainsResponse, err error) { + if request == nil { + request = NewDescribeLiveDomainsRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveDomains require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveDomainsResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveForbidStreamListRequest() (request *DescribeLiveForbidStreamListRequest) { + request = &DescribeLiveForbidStreamListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveForbidStreamList") + + + return +} + +func NewDescribeLiveForbidStreamListResponse() (response *DescribeLiveForbidStreamListResponse) { + response = &DescribeLiveForbidStreamListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveForbidStreamList +// 获取禁推流列表。 +// +// +// +// 注意:该接口仅作为直播辅助查询接口,重要业务场景不可强依赖该接口。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveForbidStreamList(request *DescribeLiveForbidStreamListRequest) (response *DescribeLiveForbidStreamListResponse, err error) { + return c.DescribeLiveForbidStreamListWithContext(context.Background(), request) +} + +// DescribeLiveForbidStreamList +// 获取禁推流列表。 +// +// +// +// 注意:该接口仅作为直播辅助查询接口,重要业务场景不可强依赖该接口。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveForbidStreamListWithContext(ctx context.Context, request *DescribeLiveForbidStreamListRequest) (response *DescribeLiveForbidStreamListResponse, err error) { + if request == nil { + request = NewDescribeLiveForbidStreamListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveForbidStreamList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveForbidStreamListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLivePackageInfoRequest() (request *DescribeLivePackageInfoRequest) { + request = &DescribeLivePackageInfoRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLivePackageInfo") + + + return +} + +func NewDescribeLivePackageInfoResponse() (response *DescribeLivePackageInfoResponse) { + response = &DescribeLivePackageInfoResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLivePackageInfo +// 查询用户套餐包总量、使用量、剩余量、包状态、购买时间和过期时间等。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLivePackageInfo(request *DescribeLivePackageInfoRequest) (response *DescribeLivePackageInfoResponse, err error) { + return c.DescribeLivePackageInfoWithContext(context.Background(), request) +} + +// DescribeLivePackageInfo +// 查询用户套餐包总量、使用量、剩余量、包状态、购买时间和过期时间等。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLivePackageInfoWithContext(ctx context.Context, request *DescribeLivePackageInfoRequest) (response *DescribeLivePackageInfoResponse, err error) { + if request == nil { + request = NewDescribeLivePackageInfoRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLivePackageInfo require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLivePackageInfoResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLivePlayAuthKeyRequest() (request *DescribeLivePlayAuthKeyRequest) { + request = &DescribeLivePlayAuthKeyRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLivePlayAuthKey") + + + return +} + +func NewDescribeLivePlayAuthKeyResponse() (response *DescribeLivePlayAuthKeyResponse) { + response = &DescribeLivePlayAuthKeyResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLivePlayAuthKey +// 查询播放鉴权key。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_PLAYDOMAINNORECORD = "InternalError.PlayDomainNoRecord" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_PLAYDOMAINNORECORD = "ResourceNotFound.PlayDomainNoRecord" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLivePlayAuthKey(request *DescribeLivePlayAuthKeyRequest) (response *DescribeLivePlayAuthKeyResponse, err error) { + return c.DescribeLivePlayAuthKeyWithContext(context.Background(), request) +} + +// DescribeLivePlayAuthKey +// 查询播放鉴权key。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_PLAYDOMAINNORECORD = "InternalError.PlayDomainNoRecord" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_PLAYDOMAINNORECORD = "ResourceNotFound.PlayDomainNoRecord" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLivePlayAuthKeyWithContext(ctx context.Context, request *DescribeLivePlayAuthKeyRequest) (response *DescribeLivePlayAuthKeyResponse, err error) { + if request == nil { + request = NewDescribeLivePlayAuthKeyRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLivePlayAuthKey require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLivePlayAuthKeyResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLivePullStreamTasksRequest() (request *DescribeLivePullStreamTasksRequest) { + request = &DescribeLivePullStreamTasksRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLivePullStreamTasks") + + + return +} + +func NewDescribeLivePullStreamTasksResponse() (response *DescribeLivePullStreamTasksResponse) { + response = &DescribeLivePullStreamTasksResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLivePullStreamTasks +// 查询使用 CreateLivePullStreamTask 接口创建的直播拉流任务。 +// +// 排序方式:默认按更新时间 倒序排列。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLivePullStreamTasks(request *DescribeLivePullStreamTasksRequest) (response *DescribeLivePullStreamTasksResponse, err error) { + return c.DescribeLivePullStreamTasksWithContext(context.Background(), request) +} + +// DescribeLivePullStreamTasks +// 查询使用 CreateLivePullStreamTask 接口创建的直播拉流任务。 +// +// 排序方式:默认按更新时间 倒序排列。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLivePullStreamTasksWithContext(ctx context.Context, request *DescribeLivePullStreamTasksRequest) (response *DescribeLivePullStreamTasksResponse, err error) { + if request == nil { + request = NewDescribeLivePullStreamTasksRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLivePullStreamTasks require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLivePullStreamTasksResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLivePushAuthKeyRequest() (request *DescribeLivePushAuthKeyRequest) { + request = &DescribeLivePushAuthKeyRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLivePushAuthKey") + + + return +} + +func NewDescribeLivePushAuthKeyResponse() (response *DescribeLivePushAuthKeyResponse) { + response = &DescribeLivePushAuthKeyResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLivePushAuthKey +// 查询直播推流鉴权key +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_PUSHDOMAINNORECORD = "InternalError.PushDomainNoRecord" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_PUSHDOMAINNORECORD = "ResourceNotFound.PushDomainNoRecord" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLivePushAuthKey(request *DescribeLivePushAuthKeyRequest) (response *DescribeLivePushAuthKeyResponse, err error) { + return c.DescribeLivePushAuthKeyWithContext(context.Background(), request) +} + +// DescribeLivePushAuthKey +// 查询直播推流鉴权key +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_PUSHDOMAINNORECORD = "InternalError.PushDomainNoRecord" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_PUSHDOMAINNORECORD = "ResourceNotFound.PushDomainNoRecord" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLivePushAuthKeyWithContext(ctx context.Context, request *DescribeLivePushAuthKeyRequest) (response *DescribeLivePushAuthKeyResponse, err error) { + if request == nil { + request = NewDescribeLivePushAuthKeyRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLivePushAuthKey require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLivePushAuthKeyResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveRecordRulesRequest() (request *DescribeLiveRecordRulesRequest) { + request = &DescribeLiveRecordRulesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveRecordRules") + + + return +} + +func NewDescribeLiveRecordRulesResponse() (response *DescribeLiveRecordRulesResponse) { + response = &DescribeLiveRecordRulesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveRecordRules +// 获取录制规则列表 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveRecordRules(request *DescribeLiveRecordRulesRequest) (response *DescribeLiveRecordRulesResponse, err error) { + return c.DescribeLiveRecordRulesWithContext(context.Background(), request) +} + +// DescribeLiveRecordRules +// 获取录制规则列表 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveRecordRulesWithContext(ctx context.Context, request *DescribeLiveRecordRulesRequest) (response *DescribeLiveRecordRulesResponse, err error) { + if request == nil { + request = NewDescribeLiveRecordRulesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveRecordRules require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveRecordRulesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveRecordTemplateRequest() (request *DescribeLiveRecordTemplateRequest) { + request = &DescribeLiveRecordTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveRecordTemplate") + + + return +} + +func NewDescribeLiveRecordTemplateResponse() (response *DescribeLiveRecordTemplateResponse) { + response = &DescribeLiveRecordTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveRecordTemplate +// 获取单个录制模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveRecordTemplate(request *DescribeLiveRecordTemplateRequest) (response *DescribeLiveRecordTemplateResponse, err error) { + return c.DescribeLiveRecordTemplateWithContext(context.Background(), request) +} + +// DescribeLiveRecordTemplate +// 获取单个录制模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveRecordTemplateWithContext(ctx context.Context, request *DescribeLiveRecordTemplateRequest) (response *DescribeLiveRecordTemplateResponse, err error) { + if request == nil { + request = NewDescribeLiveRecordTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveRecordTemplate require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveRecordTemplateResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveRecordTemplatesRequest() (request *DescribeLiveRecordTemplatesRequest) { + request = &DescribeLiveRecordTemplatesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveRecordTemplates") + + + return +} + +func NewDescribeLiveRecordTemplatesResponse() (response *DescribeLiveRecordTemplatesResponse) { + response = &DescribeLiveRecordTemplatesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveRecordTemplates +// 获取录制模板列表。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveRecordTemplates(request *DescribeLiveRecordTemplatesRequest) (response *DescribeLiveRecordTemplatesResponse, err error) { + return c.DescribeLiveRecordTemplatesWithContext(context.Background(), request) +} + +// DescribeLiveRecordTemplates +// 获取录制模板列表。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveRecordTemplatesWithContext(ctx context.Context, request *DescribeLiveRecordTemplatesRequest) (response *DescribeLiveRecordTemplatesResponse, err error) { + if request == nil { + request = NewDescribeLiveRecordTemplatesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveRecordTemplates require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveRecordTemplatesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveSnapshotRulesRequest() (request *DescribeLiveSnapshotRulesRequest) { + request = &DescribeLiveSnapshotRulesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveSnapshotRules") + + + return +} + +func NewDescribeLiveSnapshotRulesResponse() (response *DescribeLiveSnapshotRulesResponse) { + response = &DescribeLiveSnapshotRulesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveSnapshotRules +// 获取截图规则列表 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveSnapshotRules(request *DescribeLiveSnapshotRulesRequest) (response *DescribeLiveSnapshotRulesResponse, err error) { + return c.DescribeLiveSnapshotRulesWithContext(context.Background(), request) +} + +// DescribeLiveSnapshotRules +// 获取截图规则列表 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveSnapshotRulesWithContext(ctx context.Context, request *DescribeLiveSnapshotRulesRequest) (response *DescribeLiveSnapshotRulesResponse, err error) { + if request == nil { + request = NewDescribeLiveSnapshotRulesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveSnapshotRules require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveSnapshotRulesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveSnapshotTemplateRequest() (request *DescribeLiveSnapshotTemplateRequest) { + request = &DescribeLiveSnapshotTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveSnapshotTemplate") + + + return +} + +func NewDescribeLiveSnapshotTemplateResponse() (response *DescribeLiveSnapshotTemplateResponse) { + response = &DescribeLiveSnapshotTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveSnapshotTemplate +// 获取单个截图模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INTERNALERROR_RULEOUTLIMIT = "InternalError.RuleOutLimit" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveSnapshotTemplate(request *DescribeLiveSnapshotTemplateRequest) (response *DescribeLiveSnapshotTemplateResponse, err error) { + return c.DescribeLiveSnapshotTemplateWithContext(context.Background(), request) +} + +// DescribeLiveSnapshotTemplate +// 获取单个截图模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INTERNALERROR_RULEOUTLIMIT = "InternalError.RuleOutLimit" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveSnapshotTemplateWithContext(ctx context.Context, request *DescribeLiveSnapshotTemplateRequest) (response *DescribeLiveSnapshotTemplateResponse, err error) { + if request == nil { + request = NewDescribeLiveSnapshotTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveSnapshotTemplate require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveSnapshotTemplateResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveSnapshotTemplatesRequest() (request *DescribeLiveSnapshotTemplatesRequest) { + request = &DescribeLiveSnapshotTemplatesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveSnapshotTemplates") + + + return +} + +func NewDescribeLiveSnapshotTemplatesResponse() (response *DescribeLiveSnapshotTemplatesResponse) { + response = &DescribeLiveSnapshotTemplatesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveSnapshotTemplates +// 获取截图模板列表。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveSnapshotTemplates(request *DescribeLiveSnapshotTemplatesRequest) (response *DescribeLiveSnapshotTemplatesResponse, err error) { + return c.DescribeLiveSnapshotTemplatesWithContext(context.Background(), request) +} + +// DescribeLiveSnapshotTemplates +// 获取截图模板列表。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveSnapshotTemplatesWithContext(ctx context.Context, request *DescribeLiveSnapshotTemplatesRequest) (response *DescribeLiveSnapshotTemplatesResponse, err error) { + if request == nil { + request = NewDescribeLiveSnapshotTemplatesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveSnapshotTemplates require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveSnapshotTemplatesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveStreamEventListRequest() (request *DescribeLiveStreamEventListRequest) { + request = &DescribeLiveStreamEventListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveStreamEventList") + + + return +} + +func NewDescribeLiveStreamEventListResponse() (response *DescribeLiveStreamEventListResponse) { + response = &DescribeLiveStreamEventListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveStreamEventList +// 用于查询推断流事件。
+// +// +// +// 注意: +// +// 1. 该接口提供离线推断流记录查询功能,不可作为重要业务场景强依赖接口。 +// +// 2. 该接口可通过使用IsFilter进行过滤,返回推流历史记录。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveStreamEventList(request *DescribeLiveStreamEventListRequest) (response *DescribeLiveStreamEventListResponse, err error) { + return c.DescribeLiveStreamEventListWithContext(context.Background(), request) +} + +// DescribeLiveStreamEventList +// 用于查询推断流事件。
+// +// +// +// 注意: +// +// 1. 该接口提供离线推断流记录查询功能,不可作为重要业务场景强依赖接口。 +// +// 2. 该接口可通过使用IsFilter进行过滤,返回推流历史记录。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveStreamEventListWithContext(ctx context.Context, request *DescribeLiveStreamEventListRequest) (response *DescribeLiveStreamEventListResponse, err error) { + if request == nil { + request = NewDescribeLiveStreamEventListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveStreamEventList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveStreamEventListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveStreamOnlineListRequest() (request *DescribeLiveStreamOnlineListRequest) { + request = &DescribeLiveStreamOnlineListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveStreamOnlineList") + + + return +} + +func NewDescribeLiveStreamOnlineListResponse() (response *DescribeLiveStreamOnlineListResponse) { + response = &DescribeLiveStreamOnlineListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveStreamOnlineList +// 返回正在直播中的流列表。适用于推流成功后查询在线流信息。 +// +// +// +// 注意: +// +// 1. 该接口仅提供辅助查询在线流列表功能,业务重要场景不可强依赖该接口。 +// +// 2. 该接口仅适用于流数少于2万路的情况,对于流数较大用户请联系售后。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveStreamOnlineList(request *DescribeLiveStreamOnlineListRequest) (response *DescribeLiveStreamOnlineListResponse, err error) { + return c.DescribeLiveStreamOnlineListWithContext(context.Background(), request) +} + +// DescribeLiveStreamOnlineList +// 返回正在直播中的流列表。适用于推流成功后查询在线流信息。 +// +// +// +// 注意: +// +// 1. 该接口仅提供辅助查询在线流列表功能,业务重要场景不可强依赖该接口。 +// +// 2. 该接口仅适用于流数少于2万路的情况,对于流数较大用户请联系售后。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveStreamOnlineListWithContext(ctx context.Context, request *DescribeLiveStreamOnlineListRequest) (response *DescribeLiveStreamOnlineListResponse, err error) { + if request == nil { + request = NewDescribeLiveStreamOnlineListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveStreamOnlineList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveStreamOnlineListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveStreamPublishedListRequest() (request *DescribeLiveStreamPublishedListRequest) { + request = &DescribeLiveStreamPublishedListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveStreamPublishedList") + + + return +} + +func NewDescribeLiveStreamPublishedListResponse() (response *DescribeLiveStreamPublishedListResponse) { + response = &DescribeLiveStreamPublishedListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveStreamPublishedList +// 返回已经推过流的流列表。
+// +// 注意:分页最多支持查询1万条记录,可通过调整查询时间范围来获取更多数据。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveStreamPublishedList(request *DescribeLiveStreamPublishedListRequest) (response *DescribeLiveStreamPublishedListResponse, err error) { + return c.DescribeLiveStreamPublishedListWithContext(context.Background(), request) +} + +// DescribeLiveStreamPublishedList +// 返回已经推过流的流列表。
+// +// 注意:分页最多支持查询1万条记录,可通过调整查询时间范围来获取更多数据。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveStreamPublishedListWithContext(ctx context.Context, request *DescribeLiveStreamPublishedListRequest) (response *DescribeLiveStreamPublishedListResponse, err error) { + if request == nil { + request = NewDescribeLiveStreamPublishedListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveStreamPublishedList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveStreamPublishedListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveStreamPushInfoListRequest() (request *DescribeLiveStreamPushInfoListRequest) { + request = &DescribeLiveStreamPushInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveStreamPushInfoList") + + + return +} + +func NewDescribeLiveStreamPushInfoListResponse() (response *DescribeLiveStreamPushInfoListResponse) { + response = &DescribeLiveStreamPushInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveStreamPushInfoList +// 查询所有实时流的推流信息,包括客户端IP,服务端IP,帧率,码率,域名,开始推流时间。 +// +// 可能返回的错误码: +// FAILEDOPERATION_HASNOTLIVINGSTREAM = "FailedOperation.HasNotLivingStream" +// FAILEDOPERATION_QUERYUPLOADINFOFAILED = "FailedOperation.QueryUploadInfoFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_INVALIDREQUEST = "InternalError.InvalidRequest" +// INTERNALERROR_QUERYPROISPPLAYINFOERROR = "InternalError.QueryProIspPlayInfoError" +// INTERNALERROR_QUERYUPLOADINFOFAILED = "InternalError.QueryUploadInfoFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveStreamPushInfoList(request *DescribeLiveStreamPushInfoListRequest) (response *DescribeLiveStreamPushInfoListResponse, err error) { + return c.DescribeLiveStreamPushInfoListWithContext(context.Background(), request) +} + +// DescribeLiveStreamPushInfoList +// 查询所有实时流的推流信息,包括客户端IP,服务端IP,帧率,码率,域名,开始推流时间。 +// +// 可能返回的错误码: +// FAILEDOPERATION_HASNOTLIVINGSTREAM = "FailedOperation.HasNotLivingStream" +// FAILEDOPERATION_QUERYUPLOADINFOFAILED = "FailedOperation.QueryUploadInfoFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_INVALIDREQUEST = "InternalError.InvalidRequest" +// INTERNALERROR_QUERYPROISPPLAYINFOERROR = "InternalError.QueryProIspPlayInfoError" +// INTERNALERROR_QUERYUPLOADINFOFAILED = "InternalError.QueryUploadInfoFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveStreamPushInfoListWithContext(ctx context.Context, request *DescribeLiveStreamPushInfoListRequest) (response *DescribeLiveStreamPushInfoListResponse, err error) { + if request == nil { + request = NewDescribeLiveStreamPushInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveStreamPushInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveStreamPushInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveStreamStateRequest() (request *DescribeLiveStreamStateRequest) { + request = &DescribeLiveStreamStateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveStreamState") + + + return +} + +func NewDescribeLiveStreamStateResponse() (response *DescribeLiveStreamStateResponse) { + response = &DescribeLiveStreamStateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveStreamState +// 返回直播中、无推流或者禁播等状态。 +// +// +// +// 使用建议: +// +// 该接口提供实时流状态查询功能,鉴于网络抖动等一些不可抗因素,使用该接口作为判断主播是否开播等重要业务场景时,请参考以下使用建议。 +// +// 1. 优先使用业务自身的房间开关播逻辑,判断主播是否在线,譬如客户端开播信令和主播在线心跳等。 +// +// 2. 对于没有房间管理的直播场景,可以结合以下方案综合判断。 +// +// 2.1 根据[推断流事件通知](/document/product/267/20388) 判断主播在线状态。 +// +// 2.2 通过定时(间隔>1min)查询[直播中的流接口](/document/api/267/20472),判断主播是否在线。 +// +// 2.3 通过 本接口 查询直播流状态,判断主播是否在线。 +// +// 2.4 以上任一方式判断为在线,都认为主播开播中,并且接口查询超时或解析异常时,也默认为在线,减少对业务的影响。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveStreamState(request *DescribeLiveStreamStateRequest) (response *DescribeLiveStreamStateResponse, err error) { + return c.DescribeLiveStreamStateWithContext(context.Background(), request) +} + +// DescribeLiveStreamState +// 返回直播中、无推流或者禁播等状态。 +// +// +// +// 使用建议: +// +// 该接口提供实时流状态查询功能,鉴于网络抖动等一些不可抗因素,使用该接口作为判断主播是否开播等重要业务场景时,请参考以下使用建议。 +// +// 1. 优先使用业务自身的房间开关播逻辑,判断主播是否在线,譬如客户端开播信令和主播在线心跳等。 +// +// 2. 对于没有房间管理的直播场景,可以结合以下方案综合判断。 +// +// 2.1 根据[推断流事件通知](/document/product/267/20388) 判断主播在线状态。 +// +// 2.2 通过定时(间隔>1min)查询[直播中的流接口](/document/api/267/20472),判断主播是否在线。 +// +// 2.3 通过 本接口 查询直播流状态,判断主播是否在线。 +// +// 2.4 以上任一方式判断为在线,都认为主播开播中,并且接口查询超时或解析异常时,也默认为在线,减少对业务的影响。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribeLiveStreamStateWithContext(ctx context.Context, request *DescribeLiveStreamStateRequest) (response *DescribeLiveStreamStateResponse, err error) { + if request == nil { + request = NewDescribeLiveStreamStateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveStreamState require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveStreamStateResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveTimeShiftBillInfoListRequest() (request *DescribeLiveTimeShiftBillInfoListRequest) { + request = &DescribeLiveTimeShiftBillInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveTimeShiftBillInfoList") + + + return +} + +func NewDescribeLiveTimeShiftBillInfoListResponse() (response *DescribeLiveTimeShiftBillInfoListResponse) { + response = &DescribeLiveTimeShiftBillInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveTimeShiftBillInfoList +// 提供给客户对账,按天统计,维度:推流域名、时移文件时长(累加)、配置天数(不累加)、时移总时长(累加)。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveTimeShiftBillInfoList(request *DescribeLiveTimeShiftBillInfoListRequest) (response *DescribeLiveTimeShiftBillInfoListResponse, err error) { + return c.DescribeLiveTimeShiftBillInfoListWithContext(context.Background(), request) +} + +// DescribeLiveTimeShiftBillInfoList +// 提供给客户对账,按天统计,维度:推流域名、时移文件时长(累加)、配置天数(不累加)、时移总时长(累加)。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveTimeShiftBillInfoListWithContext(ctx context.Context, request *DescribeLiveTimeShiftBillInfoListRequest) (response *DescribeLiveTimeShiftBillInfoListResponse, err error) { + if request == nil { + request = NewDescribeLiveTimeShiftBillInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveTimeShiftBillInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveTimeShiftBillInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveTranscodeDetailInfoRequest() (request *DescribeLiveTranscodeDetailInfoRequest) { + request = &DescribeLiveTranscodeDetailInfoRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveTranscodeDetailInfo") + + + return +} + +func NewDescribeLiveTranscodeDetailInfoResponse() (response *DescribeLiveTranscodeDetailInfoResponse) { + response = &DescribeLiveTranscodeDetailInfoResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveTranscodeDetailInfo +// 支持查询某天或某段时间的转码详细信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveTranscodeDetailInfo(request *DescribeLiveTranscodeDetailInfoRequest) (response *DescribeLiveTranscodeDetailInfoResponse, err error) { + return c.DescribeLiveTranscodeDetailInfoWithContext(context.Background(), request) +} + +// DescribeLiveTranscodeDetailInfo +// 支持查询某天或某段时间的转码详细信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveTranscodeDetailInfoWithContext(ctx context.Context, request *DescribeLiveTranscodeDetailInfoRequest) (response *DescribeLiveTranscodeDetailInfoResponse, err error) { + if request == nil { + request = NewDescribeLiveTranscodeDetailInfoRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveTranscodeDetailInfo require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveTranscodeDetailInfoResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveTranscodeRulesRequest() (request *DescribeLiveTranscodeRulesRequest) { + request = &DescribeLiveTranscodeRulesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveTranscodeRules") + + + return +} + +func NewDescribeLiveTranscodeRulesResponse() (response *DescribeLiveTranscodeRulesResponse) { + response = &DescribeLiveTranscodeRulesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveTranscodeRules +// 获取转码规则列表 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveTranscodeRules(request *DescribeLiveTranscodeRulesRequest) (response *DescribeLiveTranscodeRulesResponse, err error) { + return c.DescribeLiveTranscodeRulesWithContext(context.Background(), request) +} + +// DescribeLiveTranscodeRules +// 获取转码规则列表 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveTranscodeRulesWithContext(ctx context.Context, request *DescribeLiveTranscodeRulesRequest) (response *DescribeLiveTranscodeRulesResponse, err error) { + if request == nil { + request = NewDescribeLiveTranscodeRulesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveTranscodeRules require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveTranscodeRulesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveTranscodeTemplateRequest() (request *DescribeLiveTranscodeTemplateRequest) { + request = &DescribeLiveTranscodeTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveTranscodeTemplate") + + + return +} + +func NewDescribeLiveTranscodeTemplateResponse() (response *DescribeLiveTranscodeTemplateResponse) { + response = &DescribeLiveTranscodeTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveTranscodeTemplate +// 获取单个转码模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveTranscodeTemplate(request *DescribeLiveTranscodeTemplateRequest) (response *DescribeLiveTranscodeTemplateResponse, err error) { + return c.DescribeLiveTranscodeTemplateWithContext(context.Background(), request) +} + +// DescribeLiveTranscodeTemplate +// 获取单个转码模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveTranscodeTemplateWithContext(ctx context.Context, request *DescribeLiveTranscodeTemplateRequest) (response *DescribeLiveTranscodeTemplateResponse, err error) { + if request == nil { + request = NewDescribeLiveTranscodeTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveTranscodeTemplate require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveTranscodeTemplateResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveTranscodeTemplatesRequest() (request *DescribeLiveTranscodeTemplatesRequest) { + request = &DescribeLiveTranscodeTemplatesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveTranscodeTemplates") + + + return +} + +func NewDescribeLiveTranscodeTemplatesResponse() (response *DescribeLiveTranscodeTemplatesResponse) { + response = &DescribeLiveTranscodeTemplatesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveTranscodeTemplates +// 获取转码模板列表。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveTranscodeTemplates(request *DescribeLiveTranscodeTemplatesRequest) (response *DescribeLiveTranscodeTemplatesResponse, err error) { + return c.DescribeLiveTranscodeTemplatesWithContext(context.Background(), request) +} + +// DescribeLiveTranscodeTemplates +// 获取转码模板列表。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) DescribeLiveTranscodeTemplatesWithContext(ctx context.Context, request *DescribeLiveTranscodeTemplatesRequest) (response *DescribeLiveTranscodeTemplatesResponse, err error) { + if request == nil { + request = NewDescribeLiveTranscodeTemplatesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveTranscodeTemplates require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveTranscodeTemplatesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveTranscodeTotalInfoRequest() (request *DescribeLiveTranscodeTotalInfoRequest) { + request = &DescribeLiveTranscodeTotalInfoRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveTranscodeTotalInfo") + + + return +} + +func NewDescribeLiveTranscodeTotalInfoResponse() (response *DescribeLiveTranscodeTotalInfoResponse) { + response = &DescribeLiveTranscodeTotalInfoResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveTranscodeTotalInfo +// 查询转码总量数据,可查询近三个月内的数据。 +// +// 注意: +// +// 如果是查询某一天内,则返回5分钟粒度数据; +// +// 如果是查询跨天或指定域名, 则返回1小时粒度数据。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeLiveTranscodeTotalInfo(request *DescribeLiveTranscodeTotalInfoRequest) (response *DescribeLiveTranscodeTotalInfoResponse, err error) { + return c.DescribeLiveTranscodeTotalInfoWithContext(context.Background(), request) +} + +// DescribeLiveTranscodeTotalInfo +// 查询转码总量数据,可查询近三个月内的数据。 +// +// 注意: +// +// 如果是查询某一天内,则返回5分钟粒度数据; +// +// 如果是查询跨天或指定域名, 则返回1小时粒度数据。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeLiveTranscodeTotalInfoWithContext(ctx context.Context, request *DescribeLiveTranscodeTotalInfoRequest) (response *DescribeLiveTranscodeTotalInfoResponse, err error) { + if request == nil { + request = NewDescribeLiveTranscodeTotalInfoRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveTranscodeTotalInfo require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveTranscodeTotalInfoResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveWatermarkRequest() (request *DescribeLiveWatermarkRequest) { + request = &DescribeLiveWatermarkRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveWatermark") + + + return +} + +func NewDescribeLiveWatermarkResponse() (response *DescribeLiveWatermarkResponse) { + response = &DescribeLiveWatermarkResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveWatermark +// 获取单个水印信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveWatermark(request *DescribeLiveWatermarkRequest) (response *DescribeLiveWatermarkResponse, err error) { + return c.DescribeLiveWatermarkWithContext(context.Background(), request) +} + +// DescribeLiveWatermark +// 获取单个水印信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveWatermarkWithContext(ctx context.Context, request *DescribeLiveWatermarkRequest) (response *DescribeLiveWatermarkResponse, err error) { + if request == nil { + request = NewDescribeLiveWatermarkRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveWatermark require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveWatermarkResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveWatermarkRulesRequest() (request *DescribeLiveWatermarkRulesRequest) { + request = &DescribeLiveWatermarkRulesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveWatermarkRules") + + + return +} + +func NewDescribeLiveWatermarkRulesResponse() (response *DescribeLiveWatermarkRulesResponse) { + response = &DescribeLiveWatermarkRulesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveWatermarkRules +// 获取水印规则列表。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveWatermarkRules(request *DescribeLiveWatermarkRulesRequest) (response *DescribeLiveWatermarkRulesResponse, err error) { + return c.DescribeLiveWatermarkRulesWithContext(context.Background(), request) +} + +// DescribeLiveWatermarkRules +// 获取水印规则列表。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveWatermarkRulesWithContext(ctx context.Context, request *DescribeLiveWatermarkRulesRequest) (response *DescribeLiveWatermarkRulesResponse, err error) { + if request == nil { + request = NewDescribeLiveWatermarkRulesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveWatermarkRules require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveWatermarkRulesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLiveWatermarksRequest() (request *DescribeLiveWatermarksRequest) { + request = &DescribeLiveWatermarksRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLiveWatermarks") + + + return +} + +func NewDescribeLiveWatermarksResponse() (response *DescribeLiveWatermarksResponse) { + response = &DescribeLiveWatermarksResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLiveWatermarks +// 查询水印列表。 +// +// 可能返回的错误码: +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveWatermarks(request *DescribeLiveWatermarksRequest) (response *DescribeLiveWatermarksResponse, err error) { + return c.DescribeLiveWatermarksWithContext(context.Background(), request) +} + +// DescribeLiveWatermarks +// 查询水印列表。 +// +// 可能返回的错误码: +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLiveWatermarksWithContext(ctx context.Context, request *DescribeLiveWatermarksRequest) (response *DescribeLiveWatermarksResponse, err error) { + if request == nil { + request = NewDescribeLiveWatermarksRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLiveWatermarks require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLiveWatermarksResponse() + err = c.Send(request, response) + return +} + +func NewDescribeLogDownloadListRequest() (request *DescribeLogDownloadListRequest) { + request = &DescribeLogDownloadListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeLogDownloadList") + + + return +} + +func NewDescribeLogDownloadListResponse() (response *DescribeLogDownloadListResponse) { + response = &DescribeLogDownloadListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeLogDownloadList +// 批量获取日志URL。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_INVOKECDNAPIFAIL = "FailedOperation.InvokeCdnApiFail" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_CDNLOGEMPTY = "ResourceNotFound.CdnLogEmpty" +// RESOURCENOTFOUND_CDNTHEMEEMPTY = "ResourceNotFound.CdnThemeEmpty" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLogDownloadList(request *DescribeLogDownloadListRequest) (response *DescribeLogDownloadListResponse, err error) { + return c.DescribeLogDownloadListWithContext(context.Background(), request) +} + +// DescribeLogDownloadList +// 批量获取日志URL。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_INVOKECDNAPIFAIL = "FailedOperation.InvokeCdnApiFail" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_CDNLOGEMPTY = "ResourceNotFound.CdnLogEmpty" +// RESOURCENOTFOUND_CDNTHEMEEMPTY = "ResourceNotFound.CdnThemeEmpty" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeLogDownloadListWithContext(ctx context.Context, request *DescribeLogDownloadListRequest) (response *DescribeLogDownloadListResponse, err error) { + if request == nil { + request = NewDescribeLogDownloadListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLogDownloadList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLogDownloadListResponse() + err = c.Send(request, response) + return +} + +func NewDescribePlayErrorCodeDetailInfoListRequest() (request *DescribePlayErrorCodeDetailInfoListRequest) { + request = &DescribePlayErrorCodeDetailInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribePlayErrorCodeDetailInfoList") + + + return +} + +func NewDescribePlayErrorCodeDetailInfoListResponse() (response *DescribePlayErrorCodeDetailInfoListResponse) { + response = &DescribePlayErrorCodeDetailInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribePlayErrorCodeDetailInfoList +// 查询下行播放错误码信息,某段时间内1分钟粒度的各http错误码出现的次数,包括4xx,5xx。 +// +// +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribePlayErrorCodeDetailInfoList(request *DescribePlayErrorCodeDetailInfoListRequest) (response *DescribePlayErrorCodeDetailInfoListResponse, err error) { + return c.DescribePlayErrorCodeDetailInfoListWithContext(context.Background(), request) +} + +// DescribePlayErrorCodeDetailInfoList +// 查询下行播放错误码信息,某段时间内1分钟粒度的各http错误码出现的次数,包括4xx,5xx。 +// +// +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribePlayErrorCodeDetailInfoListWithContext(ctx context.Context, request *DescribePlayErrorCodeDetailInfoListRequest) (response *DescribePlayErrorCodeDetailInfoListResponse, err error) { + if request == nil { + request = NewDescribePlayErrorCodeDetailInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribePlayErrorCodeDetailInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribePlayErrorCodeDetailInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribePlayErrorCodeSumInfoListRequest() (request *DescribePlayErrorCodeSumInfoListRequest) { + request = &DescribePlayErrorCodeSumInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribePlayErrorCodeSumInfoList") + + + return +} + +func NewDescribePlayErrorCodeSumInfoListResponse() (response *DescribePlayErrorCodeSumInfoListResponse) { + response = &DescribePlayErrorCodeSumInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribePlayErrorCodeSumInfoList +// 查询下行播放错误码信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribePlayErrorCodeSumInfoList(request *DescribePlayErrorCodeSumInfoListRequest) (response *DescribePlayErrorCodeSumInfoListResponse, err error) { + return c.DescribePlayErrorCodeSumInfoListWithContext(context.Background(), request) +} + +// DescribePlayErrorCodeSumInfoList +// 查询下行播放错误码信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribePlayErrorCodeSumInfoListWithContext(ctx context.Context, request *DescribePlayErrorCodeSumInfoListRequest) (response *DescribePlayErrorCodeSumInfoListResponse, err error) { + if request == nil { + request = NewDescribePlayErrorCodeSumInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribePlayErrorCodeSumInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribePlayErrorCodeSumInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeProIspPlaySumInfoListRequest() (request *DescribeProIspPlaySumInfoListRequest) { + request = &DescribeProIspPlaySumInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeProIspPlaySumInfoList") + + + return +} + +func NewDescribeProIspPlaySumInfoListResponse() (response *DescribeProIspPlaySumInfoListResponse) { + response = &DescribeProIspPlaySumInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeProIspPlaySumInfoList +// 查询某段时间内每个国家地区每个省份每个运营商的平均每秒流量,总流量,总请求数信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeProIspPlaySumInfoList(request *DescribeProIspPlaySumInfoListRequest) (response *DescribeProIspPlaySumInfoListResponse, err error) { + return c.DescribeProIspPlaySumInfoListWithContext(context.Background(), request) +} + +// DescribeProIspPlaySumInfoList +// 查询某段时间内每个国家地区每个省份每个运营商的平均每秒流量,总流量,总请求数信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeProIspPlaySumInfoListWithContext(ctx context.Context, request *DescribeProIspPlaySumInfoListRequest) (response *DescribeProIspPlaySumInfoListResponse, err error) { + if request == nil { + request = NewDescribeProIspPlaySumInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeProIspPlaySumInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeProIspPlaySumInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeProvinceIspPlayInfoListRequest() (request *DescribeProvinceIspPlayInfoListRequest) { + request = &DescribeProvinceIspPlayInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeProvinceIspPlayInfoList") + + + return +} + +func NewDescribeProvinceIspPlayInfoListResponse() (response *DescribeProvinceIspPlayInfoListResponse) { + response = &DescribeProvinceIspPlayInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeProvinceIspPlayInfoList +// 查询某省份某运营商下行播放数据,包括带宽,流量,请求数,并发连接数信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_HASNOTLIVINGSTREAM = "InternalError.HasNotLivingStream" +// INTERNALERROR_INVALIDREQUEST = "InternalError.InvalidRequest" +// INTERNALERROR_QUERYPROISPPLAYINFOERROR = "InternalError.QueryProIspPlayInfoError" +// INTERNALERROR_QUERYUPLOADINFOFAILED = "InternalError.QueryUploadInfoFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeProvinceIspPlayInfoList(request *DescribeProvinceIspPlayInfoListRequest) (response *DescribeProvinceIspPlayInfoListResponse, err error) { + return c.DescribeProvinceIspPlayInfoListWithContext(context.Background(), request) +} + +// DescribeProvinceIspPlayInfoList +// 查询某省份某运营商下行播放数据,包括带宽,流量,请求数,并发连接数信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_HASNOTLIVINGSTREAM = "InternalError.HasNotLivingStream" +// INTERNALERROR_INVALIDREQUEST = "InternalError.InvalidRequest" +// INTERNALERROR_QUERYPROISPPLAYINFOERROR = "InternalError.QueryProIspPlayInfoError" +// INTERNALERROR_QUERYUPLOADINFOFAILED = "InternalError.QueryUploadInfoFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeProvinceIspPlayInfoListWithContext(ctx context.Context, request *DescribeProvinceIspPlayInfoListRequest) (response *DescribeProvinceIspPlayInfoListResponse, err error) { + if request == nil { + request = NewDescribeProvinceIspPlayInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeProvinceIspPlayInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeProvinceIspPlayInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribePullStreamConfigsRequest() (request *DescribePullStreamConfigsRequest) { + request = &DescribePullStreamConfigsRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribePullStreamConfigs") + + + return +} + +func NewDescribePullStreamConfigsResponse() (response *DescribePullStreamConfigsResponse) { + response = &DescribePullStreamConfigsResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribePullStreamConfigs +// 查询直播拉流配置。该接口已下线,请使用新接口 DescribeLivePullStreamTasks。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_INVALIDUSER = "InternalError.InvalidUser" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribePullStreamConfigs(request *DescribePullStreamConfigsRequest) (response *DescribePullStreamConfigsResponse, err error) { + return c.DescribePullStreamConfigsWithContext(context.Background(), request) +} + +// DescribePullStreamConfigs +// 查询直播拉流配置。该接口已下线,请使用新接口 DescribeLivePullStreamTasks。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_INVALIDUSER = "InternalError.InvalidUser" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DescribePullStreamConfigsWithContext(ctx context.Context, request *DescribePullStreamConfigsRequest) (response *DescribePullStreamConfigsResponse, err error) { + if request == nil { + request = NewDescribePullStreamConfigsRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribePullStreamConfigs require credential") + } + + request.SetContext(ctx) + + response = NewDescribePullStreamConfigsResponse() + err = c.Send(request, response) + return +} + +func NewDescribePushBandwidthAndFluxListRequest() (request *DescribePushBandwidthAndFluxListRequest) { + request = &DescribePushBandwidthAndFluxListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribePushBandwidthAndFluxList") + + + return +} + +func NewDescribePushBandwidthAndFluxListResponse() (response *DescribePushBandwidthAndFluxListResponse) { + response = &DescribePushBandwidthAndFluxListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribePushBandwidthAndFluxList +// 直播推流带宽和流量数据查询。 +// +// 推流计费会先取全球推流用量和全球播放用量进行比较,满足计费条件后再按各地区用量出账。详情参见[计费文档](https://cloud.tencent.com/document/product/267/34175)。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribePushBandwidthAndFluxList(request *DescribePushBandwidthAndFluxListRequest) (response *DescribePushBandwidthAndFluxListResponse, err error) { + return c.DescribePushBandwidthAndFluxListWithContext(context.Background(), request) +} + +// DescribePushBandwidthAndFluxList +// 直播推流带宽和流量数据查询。 +// +// 推流计费会先取全球推流用量和全球播放用量进行比较,满足计费条件后再按各地区用量出账。详情参见[计费文档](https://cloud.tencent.com/document/product/267/34175)。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribePushBandwidthAndFluxListWithContext(ctx context.Context, request *DescribePushBandwidthAndFluxListRequest) (response *DescribePushBandwidthAndFluxListResponse, err error) { + if request == nil { + request = NewDescribePushBandwidthAndFluxListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribePushBandwidthAndFluxList require credential") + } + + request.SetContext(ctx) + + response = NewDescribePushBandwidthAndFluxListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeRecordTaskRequest() (request *DescribeRecordTaskRequest) { + request = &DescribeRecordTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeRecordTask") + + + return +} + +func NewDescribeRecordTaskResponse() (response *DescribeRecordTaskResponse) { + response = &DescribeRecordTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeRecordTask +// 查询指定时间段范围内启动和结束的录制任务列表。 +// +// - 使用前提 +// +// 1. 仅用于查询由 CreateRecordTask 接口创建的录制任务。 +// +// 2. 不能查询被 DeleteRecordTask 接口删除以及已过期(平台侧保留3个月)的录制任务。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeRecordTask(request *DescribeRecordTaskRequest) (response *DescribeRecordTaskResponse, err error) { + return c.DescribeRecordTaskWithContext(context.Background(), request) +} + +// DescribeRecordTask +// 查询指定时间段范围内启动和结束的录制任务列表。 +// +// - 使用前提 +// +// 1. 仅用于查询由 CreateRecordTask 接口创建的录制任务。 +// +// 2. 不能查询被 DeleteRecordTask 接口删除以及已过期(平台侧保留3个月)的录制任务。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeRecordTaskWithContext(ctx context.Context, request *DescribeRecordTaskRequest) (response *DescribeRecordTaskResponse, err error) { + if request == nil { + request = NewDescribeRecordTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeRecordTask require credential") + } + + request.SetContext(ctx) + + response = NewDescribeRecordTaskResponse() + err = c.Send(request, response) + return +} + +func NewDescribeScreenShotSheetNumListRequest() (request *DescribeScreenShotSheetNumListRequest) { + request = &DescribeScreenShotSheetNumListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeScreenShotSheetNumList") + + + return +} + +func NewDescribeScreenShotSheetNumListResponse() (response *DescribeScreenShotSheetNumListResponse) { + response = &DescribeScreenShotSheetNumListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeScreenShotSheetNumList +// 接口用来查询直播增值业务--截图的张数 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeScreenShotSheetNumList(request *DescribeScreenShotSheetNumListRequest) (response *DescribeScreenShotSheetNumListResponse, err error) { + return c.DescribeScreenShotSheetNumListWithContext(context.Background(), request) +} + +// DescribeScreenShotSheetNumList +// 接口用来查询直播增值业务--截图的张数 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeScreenShotSheetNumListWithContext(ctx context.Context, request *DescribeScreenShotSheetNumListRequest) (response *DescribeScreenShotSheetNumListResponse, err error) { + if request == nil { + request = NewDescribeScreenShotSheetNumListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeScreenShotSheetNumList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeScreenShotSheetNumListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeScreenshotTaskRequest() (request *DescribeScreenshotTaskRequest) { + request = &DescribeScreenshotTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeScreenshotTask") + + + return +} + +func NewDescribeScreenshotTaskResponse() (response *DescribeScreenshotTaskResponse) { + response = &DescribeScreenshotTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeScreenshotTask +// 查询指定时间段范围内启动和结束的截图任务列表。 +// +// - 使用前提 +// +// 1. 仅用于查询由 CreateScreenshotTask接口创建的截图任务。 +// +// 2. 不能查询被 DeleteScreenshotTask接口删除以及已过期(平台侧保留3个月)的截图任务。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeScreenshotTask(request *DescribeScreenshotTaskRequest) (response *DescribeScreenshotTaskResponse, err error) { + return c.DescribeScreenshotTaskWithContext(context.Background(), request) +} + +// DescribeScreenshotTask +// 查询指定时间段范围内启动和结束的截图任务列表。 +// +// - 使用前提 +// +// 1. 仅用于查询由 CreateScreenshotTask接口创建的截图任务。 +// +// 2. 不能查询被 DeleteScreenshotTask接口删除以及已过期(平台侧保留3个月)的截图任务。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeScreenshotTaskWithContext(ctx context.Context, request *DescribeScreenshotTaskRequest) (response *DescribeScreenshotTaskResponse, err error) { + if request == nil { + request = NewDescribeScreenshotTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeScreenshotTask require credential") + } + + request.SetContext(ctx) + + response = NewDescribeScreenshotTaskResponse() + err = c.Send(request, response) + return +} + +func NewDescribeStreamDayPlayInfoListRequest() (request *DescribeStreamDayPlayInfoListRequest) { + request = &DescribeStreamDayPlayInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeStreamDayPlayInfoList") + + + return +} + +func NewDescribeStreamDayPlayInfoListResponse() (response *DescribeStreamDayPlayInfoListResponse) { + response = &DescribeStreamDayPlayInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeStreamDayPlayInfoList +// 查询天维度每条流的播放数据,包括总流量等。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeStreamDayPlayInfoList(request *DescribeStreamDayPlayInfoListRequest) (response *DescribeStreamDayPlayInfoListResponse, err error) { + return c.DescribeStreamDayPlayInfoListWithContext(context.Background(), request) +} + +// DescribeStreamDayPlayInfoList +// 查询天维度每条流的播放数据,包括总流量等。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeStreamDayPlayInfoListWithContext(ctx context.Context, request *DescribeStreamDayPlayInfoListRequest) (response *DescribeStreamDayPlayInfoListResponse, err error) { + if request == nil { + request = NewDescribeStreamDayPlayInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeStreamDayPlayInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeStreamDayPlayInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeStreamPlayInfoListRequest() (request *DescribeStreamPlayInfoListRequest) { + request = &DescribeStreamPlayInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeStreamPlayInfoList") + + + return +} + +func NewDescribeStreamPlayInfoListResponse() (response *DescribeStreamPlayInfoListResponse) { + response = &DescribeStreamPlayInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeStreamPlayInfoList +// 查询播放数据,支持按流名称查询详细播放数据,也可按播放域名查询详细总数据,数据延迟4分钟左右。 +// +// 注意:按AppName查询请先联系工单申请,开通后配置生效预计需要5个工作日左右,具体时间以最终回复为准。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeStreamPlayInfoList(request *DescribeStreamPlayInfoListRequest) (response *DescribeStreamPlayInfoListResponse, err error) { + return c.DescribeStreamPlayInfoListWithContext(context.Background(), request) +} + +// DescribeStreamPlayInfoList +// 查询播放数据,支持按流名称查询详细播放数据,也可按播放域名查询详细总数据,数据延迟4分钟左右。 +// +// 注意:按AppName查询请先联系工单申请,开通后配置生效预计需要5个工作日左右,具体时间以最终回复为准。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeStreamPlayInfoListWithContext(ctx context.Context, request *DescribeStreamPlayInfoListRequest) (response *DescribeStreamPlayInfoListResponse, err error) { + if request == nil { + request = NewDescribeStreamPlayInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeStreamPlayInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeStreamPlayInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeStreamPushInfoListRequest() (request *DescribeStreamPushInfoListRequest) { + request = &DescribeStreamPushInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeStreamPushInfoList") + + + return +} + +func NewDescribeStreamPushInfoListResponse() (response *DescribeStreamPushInfoListResponse) { + response = &DescribeStreamPushInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeStreamPushInfoList +// 查询流id的上行推流质量数据,包括音视频的帧率,码率,流逝时间,编码格式等。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeStreamPushInfoList(request *DescribeStreamPushInfoListRequest) (response *DescribeStreamPushInfoListResponse, err error) { + return c.DescribeStreamPushInfoListWithContext(context.Background(), request) +} + +// DescribeStreamPushInfoList +// 查询流id的上行推流质量数据,包括音视频的帧率,码率,流逝时间,编码格式等。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeStreamPushInfoListWithContext(ctx context.Context, request *DescribeStreamPushInfoListRequest) (response *DescribeStreamPushInfoListResponse, err error) { + if request == nil { + request = NewDescribeStreamPushInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeStreamPushInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeStreamPushInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeTopClientIpSumInfoListRequest() (request *DescribeTopClientIpSumInfoListRequest) { + request = &DescribeTopClientIpSumInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeTopClientIpSumInfoList") + + + return +} + +func NewDescribeTopClientIpSumInfoListResponse() (response *DescribeTopClientIpSumInfoListResponse) { + response = &DescribeTopClientIpSumInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeTopClientIpSumInfoList +// 查询某段时间top n客户端ip汇总信息(暂支持top 1000) +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeTopClientIpSumInfoList(request *DescribeTopClientIpSumInfoListRequest) (response *DescribeTopClientIpSumInfoListResponse, err error) { + return c.DescribeTopClientIpSumInfoListWithContext(context.Background(), request) +} + +// DescribeTopClientIpSumInfoList +// 查询某段时间top n客户端ip汇总信息(暂支持top 1000) +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeTopClientIpSumInfoListWithContext(ctx context.Context, request *DescribeTopClientIpSumInfoListRequest) (response *DescribeTopClientIpSumInfoListResponse, err error) { + if request == nil { + request = NewDescribeTopClientIpSumInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeTopClientIpSumInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeTopClientIpSumInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDescribeTranscodeTaskNumRequest() (request *DescribeTranscodeTaskNumRequest) { + request = &DescribeTranscodeTaskNumRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeTranscodeTaskNum") + + + return +} + +func NewDescribeTranscodeTaskNumResponse() (response *DescribeTranscodeTaskNumResponse) { + response = &DescribeTranscodeTaskNumResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeTranscodeTaskNum +// 查询转码任务数。 +// +// 可能返回的错误码: +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeTranscodeTaskNum(request *DescribeTranscodeTaskNumRequest) (response *DescribeTranscodeTaskNumResponse, err error) { + return c.DescribeTranscodeTaskNumWithContext(context.Background(), request) +} + +// DescribeTranscodeTaskNum +// 查询转码任务数。 +// +// 可能返回的错误码: +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeTranscodeTaskNumWithContext(ctx context.Context, request *DescribeTranscodeTaskNumRequest) (response *DescribeTranscodeTaskNumResponse, err error) { + if request == nil { + request = NewDescribeTranscodeTaskNumRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeTranscodeTaskNum require credential") + } + + request.SetContext(ctx) + + response = NewDescribeTranscodeTaskNumResponse() + err = c.Send(request, response) + return +} + +func NewDescribeUploadStreamNumsRequest() (request *DescribeUploadStreamNumsRequest) { + request = &DescribeUploadStreamNumsRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeUploadStreamNums") + + + return +} + +func NewDescribeUploadStreamNumsResponse() (response *DescribeUploadStreamNumsResponse) { + response = &DescribeUploadStreamNumsResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeUploadStreamNums +// 直播上行路数查询 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeUploadStreamNums(request *DescribeUploadStreamNumsRequest) (response *DescribeUploadStreamNumsResponse, err error) { + return c.DescribeUploadStreamNumsWithContext(context.Background(), request) +} + +// DescribeUploadStreamNums +// 直播上行路数查询 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeUploadStreamNumsWithContext(ctx context.Context, request *DescribeUploadStreamNumsRequest) (response *DescribeUploadStreamNumsResponse, err error) { + if request == nil { + request = NewDescribeUploadStreamNumsRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeUploadStreamNums require credential") + } + + request.SetContext(ctx) + + response = NewDescribeUploadStreamNumsResponse() + err = c.Send(request, response) + return +} + +func NewDescribeVisitTopSumInfoListRequest() (request *DescribeVisitTopSumInfoListRequest) { + request = &DescribeVisitTopSumInfoListRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DescribeVisitTopSumInfoList") + + + return +} + +func NewDescribeVisitTopSumInfoListResponse() (response *DescribeVisitTopSumInfoListResponse) { + response = &DescribeVisitTopSumInfoListResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DescribeVisitTopSumInfoList +// 查询某时间段top n的域名或流id信息(暂支持top 1000)。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeVisitTopSumInfoList(request *DescribeVisitTopSumInfoListRequest) (response *DescribeVisitTopSumInfoListResponse, err error) { + return c.DescribeVisitTopSumInfoListWithContext(context.Background(), request) +} + +// DescribeVisitTopSumInfoList +// 查询某时间段top n的域名或流id信息(暂支持top 1000)。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) DescribeVisitTopSumInfoListWithContext(ctx context.Context, request *DescribeVisitTopSumInfoListRequest) (response *DescribeVisitTopSumInfoListResponse, err error) { + if request == nil { + request = NewDescribeVisitTopSumInfoListRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeVisitTopSumInfoList require credential") + } + + request.SetContext(ctx) + + response = NewDescribeVisitTopSumInfoListResponse() + err = c.Send(request, response) + return +} + +func NewDropLiveStreamRequest() (request *DropLiveStreamRequest) { + request = &DropLiveStreamRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "DropLiveStream") + + + return +} + +func NewDropLiveStreamResponse() (response *DropLiveStreamResponse) { + response = &DropLiveStreamResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// DropLiveStream +// 断开推流连接,但可以重新推流。 +// +// 注:对已经不活跃的流,调用该断流接口时,接口返回成功。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DropLiveStream(request *DropLiveStreamRequest) (response *DropLiveStreamResponse, err error) { + return c.DropLiveStreamWithContext(context.Background(), request) +} + +// DropLiveStream +// 断开推流连接,但可以重新推流。 +// +// 注:对已经不活跃的流,调用该断流接口时,接口返回成功。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) DropLiveStreamWithContext(ctx context.Context, request *DropLiveStreamRequest) (response *DropLiveStreamResponse, err error) { + if request == nil { + request = NewDropLiveStreamRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DropLiveStream require credential") + } + + request.SetContext(ctx) + + response = NewDropLiveStreamResponse() + err = c.Send(request, response) + return +} + +func NewEnableLiveDomainRequest() (request *EnableLiveDomainRequest) { + request = &EnableLiveDomainRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "EnableLiveDomain") + + + return +} + +func NewEnableLiveDomainResponse() (response *EnableLiveDomainResponse) { + response = &EnableLiveDomainResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// EnableLiveDomain +// 启用状态为停用的直播域名。 +// +// 可能返回的错误码: +// FAILEDOPERATION_SDKNOPACKAGE = "FailedOperation.SdkNoPackage" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER_CLOUDDOMAINISSTOP = "InvalidParameter.CloudDomainIsStop" +// INVALIDPARAMETER_DOMAINHITBLACKLIST = "InvalidParameter.DomainHitBlackList" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_DOMAINNORECORD = "ResourceNotFound.DomainNoRecord" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_INVALIDUSER = "ResourceNotFound.InvalidUser" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) EnableLiveDomain(request *EnableLiveDomainRequest) (response *EnableLiveDomainResponse, err error) { + return c.EnableLiveDomainWithContext(context.Background(), request) +} + +// EnableLiveDomain +// 启用状态为停用的直播域名。 +// +// 可能返回的错误码: +// FAILEDOPERATION_SDKNOPACKAGE = "FailedOperation.SdkNoPackage" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INVALIDPARAMETER_CLOUDDOMAINISSTOP = "InvalidParameter.CloudDomainIsStop" +// INVALIDPARAMETER_DOMAINHITBLACKLIST = "InvalidParameter.DomainHitBlackList" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_DOMAINNORECORD = "ResourceNotFound.DomainNoRecord" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_INVALIDUSER = "ResourceNotFound.InvalidUser" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) EnableLiveDomainWithContext(ctx context.Context, request *EnableLiveDomainRequest) (response *EnableLiveDomainResponse, err error) { + if request == nil { + request = NewEnableLiveDomainRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("EnableLiveDomain require credential") + } + + request.SetContext(ctx) + + response = NewEnableLiveDomainResponse() + err = c.Send(request, response) + return +} + +func NewForbidLiveDomainRequest() (request *ForbidLiveDomainRequest) { + request = &ForbidLiveDomainRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ForbidLiveDomain") + + + return +} + +func NewForbidLiveDomainResponse() (response *ForbidLiveDomainResponse) { + response = &ForbidLiveDomainResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ForbidLiveDomain +// 停止使用某个直播域名。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ForbidLiveDomain(request *ForbidLiveDomainRequest) (response *ForbidLiveDomainResponse, err error) { + return c.ForbidLiveDomainWithContext(context.Background(), request) +} + +// ForbidLiveDomain +// 停止使用某个直播域名。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ForbidLiveDomainWithContext(ctx context.Context, request *ForbidLiveDomainRequest) (response *ForbidLiveDomainResponse, err error) { + if request == nil { + request = NewForbidLiveDomainRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ForbidLiveDomain require credential") + } + + request.SetContext(ctx) + + response = NewForbidLiveDomainResponse() + err = c.Send(request, response) + return +} + +func NewForbidLiveStreamRequest() (request *ForbidLiveStreamRequest) { + request = &ForbidLiveStreamRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ForbidLiveStream") + + + return +} + +func NewForbidLiveStreamResponse() (response *ForbidLiveStreamResponse) { + response = &ForbidLiveStreamResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ForbidLiveStream +// 禁止某条流的推送,可以预设某个时刻将流恢复。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ForbidLiveStream(request *ForbidLiveStreamRequest) (response *ForbidLiveStreamResponse, err error) { + return c.ForbidLiveStreamWithContext(context.Background(), request) +} + +// ForbidLiveStream +// 禁止某条流的推送,可以预设某个时刻将流恢复。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ForbidLiveStreamWithContext(ctx context.Context, request *ForbidLiveStreamRequest) (response *ForbidLiveStreamResponse, err error) { + if request == nil { + request = NewForbidLiveStreamRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ForbidLiveStream require credential") + } + + request.SetContext(ctx) + + response = NewForbidLiveStreamResponse() + err = c.Send(request, response) + return +} + +func NewModifyLiveCallbackTemplateRequest() (request *ModifyLiveCallbackTemplateRequest) { + request = &ModifyLiveCallbackTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLiveCallbackTemplate") + + + return +} + +func NewModifyLiveCallbackTemplateResponse() (response *ModifyLiveCallbackTemplateResponse) { + response = &ModifyLiveCallbackTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLiveCallbackTemplate +// 修改回调模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_ARGSNOTMATCH = "InvalidParameter.ArgsNotMatch" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETER_URLNOTSAFE = "InvalidParameter.UrlNotSafe" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) ModifyLiveCallbackTemplate(request *ModifyLiveCallbackTemplateRequest) (response *ModifyLiveCallbackTemplateResponse, err error) { + return c.ModifyLiveCallbackTemplateWithContext(context.Background(), request) +} + +// ModifyLiveCallbackTemplate +// 修改回调模板。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_ARGSNOTMATCH = "InvalidParameter.ArgsNotMatch" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETER_URLNOTSAFE = "InvalidParameter.UrlNotSafe" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) ModifyLiveCallbackTemplateWithContext(ctx context.Context, request *ModifyLiveCallbackTemplateRequest) (response *ModifyLiveCallbackTemplateResponse, err error) { + if request == nil { + request = NewModifyLiveCallbackTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLiveCallbackTemplate require credential") + } + + request.SetContext(ctx) + + response = NewModifyLiveCallbackTemplateResponse() + err = c.Send(request, response) + return +} + +func NewModifyLiveDomainCertBindingsRequest() (request *ModifyLiveDomainCertBindingsRequest) { + request = &ModifyLiveDomainCertBindingsRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLiveDomainCertBindings") + + + return +} + +func NewModifyLiveDomainCertBindingsResponse() (response *ModifyLiveDomainCertBindingsResponse) { + response = &ModifyLiveDomainCertBindingsResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLiveDomainCertBindings +// 批量绑定证书对应的播放域名,并更新启用状态。 +// +// 新建自有证书将自动上传至腾讯云ssl。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_AUTHERROR = "FailedOperation.AuthError" +// FAILEDOPERATION_CANNOTBEDELETEDISSUED = "FailedOperation.CannotBeDeletedIssued" +// FAILEDOPERATION_CANNOTBEDELETEDWITHINHOUR = "FailedOperation.CannotBeDeletedWithinHour" +// FAILEDOPERATION_CERTIFICATEEXISTS = "FailedOperation.CertificateExists" +// FAILEDOPERATION_CERTIFICATEINVALID = "FailedOperation.CertificateInvalid" +// FAILEDOPERATION_CERTIFICATEMISMATCH = "FailedOperation.CertificateMismatch" +// FAILEDOPERATION_CERTIFICATENOTFOUND = "FailedOperation.CertificateNotFound" +// FAILEDOPERATION_CONFIGCDNFAILED = "FailedOperation.ConfigCDNFailed" +// FAILEDOPERATION_EXCEEDSFREELIMIT = "FailedOperation.ExceedsFreeLimit" +// FAILEDOPERATION_INVALIDCERTIFICATESTATUSCODE = "FailedOperation.InvalidCertificateStatusCode" +// FAILEDOPERATION_INVALIDPARAM = "FailedOperation.InvalidParam" +// FAILEDOPERATION_NETWORKERROR = "FailedOperation.NetworkError" +// FAILEDOPERATION_NOPROJECTPERMISSION = "FailedOperation.NoProjectPermission" +// FAILEDOPERATION_NOREALNAMEAUTH = "FailedOperation.NoRealNameAuth" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_CRTDATEINUSING = "InternalError.CrtDateInUsing" +// INTERNALERROR_CRTDATENOTFOUND = "InternalError.CrtDateNotFound" +// INTERNALERROR_CRTDATENOTLEGAL = "InternalError.CrtDateNotLegal" +// INTERNALERROR_CRTDATEOVERDUE = "InternalError.CrtDateOverdue" +// INTERNALERROR_CRTDOMAINNOTFOUND = "InternalError.CrtDomainNotFound" +// INTERNALERROR_CRTKEYNOTMATCH = "InternalError.CrtKeyNotMatch" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_CLOUDCRTIDERROR = "InvalidParameter.CloudCrtIdError" +// INVALIDPARAMETER_CRTDATEINUSING = "InvalidParameter.CrtDateInUsing" +// INVALIDPARAMETER_CRTDATENOTFOUND = "InvalidParameter.CrtDateNotFound" +// INVALIDPARAMETER_CRTDATENOTLEGAL = "InvalidParameter.CrtDateNotLegal" +// INVALIDPARAMETER_CRTDATEOVERDUE = "InvalidParameter.CrtDateOverdue" +// INVALIDPARAMETER_CRTDOMAINNOTFOUND = "InvalidParameter.CrtDomainNotFound" +// INVALIDPARAMETER_CRTKEYNOTMATCH = "InvalidParameter.CrtKeyNotMatch" +// INVALIDPARAMETER_CRTORKEYNOTEXIST = "InvalidParameter.CrtOrKeyNotExist" +// LIMITEXCEEDED_RATELIMITEXCEEDED = "LimitExceeded.RateLimitExceeded" +// RESOURCENOTFOUND_CRTDATENOTFOUND = "ResourceNotFound.CrtDateNotFound" +// RESOURCENOTFOUND_CRTDOMAINNOTFOUND = "ResourceNotFound.CrtDomainNotFound" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLiveDomainCertBindings(request *ModifyLiveDomainCertBindingsRequest) (response *ModifyLiveDomainCertBindingsResponse, err error) { + return c.ModifyLiveDomainCertBindingsWithContext(context.Background(), request) +} + +// ModifyLiveDomainCertBindings +// 批量绑定证书对应的播放域名,并更新启用状态。 +// +// 新建自有证书将自动上传至腾讯云ssl。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_AUTHERROR = "FailedOperation.AuthError" +// FAILEDOPERATION_CANNOTBEDELETEDISSUED = "FailedOperation.CannotBeDeletedIssued" +// FAILEDOPERATION_CANNOTBEDELETEDWITHINHOUR = "FailedOperation.CannotBeDeletedWithinHour" +// FAILEDOPERATION_CERTIFICATEEXISTS = "FailedOperation.CertificateExists" +// FAILEDOPERATION_CERTIFICATEINVALID = "FailedOperation.CertificateInvalid" +// FAILEDOPERATION_CERTIFICATEMISMATCH = "FailedOperation.CertificateMismatch" +// FAILEDOPERATION_CERTIFICATENOTFOUND = "FailedOperation.CertificateNotFound" +// FAILEDOPERATION_CONFIGCDNFAILED = "FailedOperation.ConfigCDNFailed" +// FAILEDOPERATION_EXCEEDSFREELIMIT = "FailedOperation.ExceedsFreeLimit" +// FAILEDOPERATION_INVALIDCERTIFICATESTATUSCODE = "FailedOperation.InvalidCertificateStatusCode" +// FAILEDOPERATION_INVALIDPARAM = "FailedOperation.InvalidParam" +// FAILEDOPERATION_NETWORKERROR = "FailedOperation.NetworkError" +// FAILEDOPERATION_NOPROJECTPERMISSION = "FailedOperation.NoProjectPermission" +// FAILEDOPERATION_NOREALNAMEAUTH = "FailedOperation.NoRealNameAuth" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_CRTDATEINUSING = "InternalError.CrtDateInUsing" +// INTERNALERROR_CRTDATENOTFOUND = "InternalError.CrtDateNotFound" +// INTERNALERROR_CRTDATENOTLEGAL = "InternalError.CrtDateNotLegal" +// INTERNALERROR_CRTDATEOVERDUE = "InternalError.CrtDateOverdue" +// INTERNALERROR_CRTDOMAINNOTFOUND = "InternalError.CrtDomainNotFound" +// INTERNALERROR_CRTKEYNOTMATCH = "InternalError.CrtKeyNotMatch" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_CLOUDCRTIDERROR = "InvalidParameter.CloudCrtIdError" +// INVALIDPARAMETER_CRTDATEINUSING = "InvalidParameter.CrtDateInUsing" +// INVALIDPARAMETER_CRTDATENOTFOUND = "InvalidParameter.CrtDateNotFound" +// INVALIDPARAMETER_CRTDATENOTLEGAL = "InvalidParameter.CrtDateNotLegal" +// INVALIDPARAMETER_CRTDATEOVERDUE = "InvalidParameter.CrtDateOverdue" +// INVALIDPARAMETER_CRTDOMAINNOTFOUND = "InvalidParameter.CrtDomainNotFound" +// INVALIDPARAMETER_CRTKEYNOTMATCH = "InvalidParameter.CrtKeyNotMatch" +// INVALIDPARAMETER_CRTORKEYNOTEXIST = "InvalidParameter.CrtOrKeyNotExist" +// LIMITEXCEEDED_RATELIMITEXCEEDED = "LimitExceeded.RateLimitExceeded" +// RESOURCENOTFOUND_CRTDATENOTFOUND = "ResourceNotFound.CrtDateNotFound" +// RESOURCENOTFOUND_CRTDOMAINNOTFOUND = "ResourceNotFound.CrtDomainNotFound" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLiveDomainCertBindingsWithContext(ctx context.Context, request *ModifyLiveDomainCertBindingsRequest) (response *ModifyLiveDomainCertBindingsResponse, err error) { + if request == nil { + request = NewModifyLiveDomainCertBindingsRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLiveDomainCertBindings require credential") + } + + request.SetContext(ctx) + + response = NewModifyLiveDomainCertBindingsResponse() + err = c.Send(request, response) + return +} + +func NewModifyLiveDomainRefererRequest() (request *ModifyLiveDomainRefererRequest) { + request = &ModifyLiveDomainRefererRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLiveDomainReferer") + + + return +} + +func NewModifyLiveDomainRefererResponse() (response *ModifyLiveDomainRefererResponse) { + response = &ModifyLiveDomainRefererResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLiveDomainReferer +// 设置直播域名 Referer 黑白名单。 +// +// 由于 Referer 信息包含在 http 协议中,在开启配置后,播放协议为 rtmp 或 WebRTC 不会校验 Referer 配置,仍可正常播放。如需配置 Referer 鉴权建议使用 http-flv 或 http-hls 协议播放。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_DOMAINNOTEXIST = "InternalError.DomainNotExist" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLiveDomainReferer(request *ModifyLiveDomainRefererRequest) (response *ModifyLiveDomainRefererResponse, err error) { + return c.ModifyLiveDomainRefererWithContext(context.Background(), request) +} + +// ModifyLiveDomainReferer +// 设置直播域名 Referer 黑白名单。 +// +// 由于 Referer 信息包含在 http 协议中,在开启配置后,播放协议为 rtmp 或 WebRTC 不会校验 Referer 配置,仍可正常播放。如需配置 Referer 鉴权建议使用 http-flv 或 http-hls 协议播放。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_DOMAINNOTEXIST = "InternalError.DomainNotExist" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLiveDomainRefererWithContext(ctx context.Context, request *ModifyLiveDomainRefererRequest) (response *ModifyLiveDomainRefererResponse, err error) { + if request == nil { + request = NewModifyLiveDomainRefererRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLiveDomainReferer require credential") + } + + request.SetContext(ctx) + + response = NewModifyLiveDomainRefererResponse() + err = c.Send(request, response) + return +} + +func NewModifyLivePlayAuthKeyRequest() (request *ModifyLivePlayAuthKeyRequest) { + request = &ModifyLivePlayAuthKeyRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLivePlayAuthKey") + + + return +} + +func NewModifyLivePlayAuthKeyResponse() (response *ModifyLivePlayAuthKeyResponse) { + response = &ModifyLivePlayAuthKeyResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLivePlayAuthKey +// 修改播放鉴权key +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_PLAYDOMAINNORECORD = "InternalError.PlayDomainNoRecord" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_PLAYDOMAINNORECORD = "ResourceNotFound.PlayDomainNoRecord" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLivePlayAuthKey(request *ModifyLivePlayAuthKeyRequest) (response *ModifyLivePlayAuthKeyResponse, err error) { + return c.ModifyLivePlayAuthKeyWithContext(context.Background(), request) +} + +// ModifyLivePlayAuthKey +// 修改播放鉴权key +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_PLAYDOMAINNORECORD = "InternalError.PlayDomainNoRecord" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_PLAYDOMAINNORECORD = "ResourceNotFound.PlayDomainNoRecord" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLivePlayAuthKeyWithContext(ctx context.Context, request *ModifyLivePlayAuthKeyRequest) (response *ModifyLivePlayAuthKeyResponse, err error) { + if request == nil { + request = NewModifyLivePlayAuthKeyRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLivePlayAuthKey require credential") + } + + request.SetContext(ctx) + + response = NewModifyLivePlayAuthKeyResponse() + err = c.Send(request, response) + return +} + +func NewModifyLivePlayDomainRequest() (request *ModifyLivePlayDomainRequest) { + request = &ModifyLivePlayDomainRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLivePlayDomain") + + + return +} + +func NewModifyLivePlayDomainResponse() (response *ModifyLivePlayDomainResponse) { + response = &ModifyLivePlayDomainResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLivePlayDomain +// 修改播放域名信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION_DOMAINGSLBFAIL = "FailedOperation.DomainGslbFail" +// INTERNALERROR = "InternalError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER_DOMAINHITBLACKLIST = "InvalidParameter.DomainHitBlackList" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_DOMAINNORECORD = "ResourceNotFound.DomainNoRecord" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_INVALIDUSER = "ResourceNotFound.InvalidUser" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLivePlayDomain(request *ModifyLivePlayDomainRequest) (response *ModifyLivePlayDomainResponse, err error) { + return c.ModifyLivePlayDomainWithContext(context.Background(), request) +} + +// ModifyLivePlayDomain +// 修改播放域名信息。 +// +// 可能返回的错误码: +// FAILEDOPERATION_DOMAINGSLBFAIL = "FailedOperation.DomainGslbFail" +// INTERNALERROR = "InternalError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER_DOMAINHITBLACKLIST = "InvalidParameter.DomainHitBlackList" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_DOMAINNORECORD = "ResourceNotFound.DomainNoRecord" +// RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_INVALIDUSER = "ResourceNotFound.InvalidUser" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLivePlayDomainWithContext(ctx context.Context, request *ModifyLivePlayDomainRequest) (response *ModifyLivePlayDomainResponse, err error) { + if request == nil { + request = NewModifyLivePlayDomainRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLivePlayDomain require credential") + } + + request.SetContext(ctx) + + response = NewModifyLivePlayDomainResponse() + err = c.Send(request, response) + return +} + +func NewModifyLivePullStreamTaskRequest() (request *ModifyLivePullStreamTaskRequest) { + request = &ModifyLivePullStreamTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLivePullStreamTask") + + + return +} + +func NewModifyLivePullStreamTaskResponse() (response *ModifyLivePullStreamTaskResponse) { + response = &ModifyLivePullStreamTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLivePullStreamTask +// 更新直播拉流任务。 +// +// 1. 不支持修改目标地址,如需推到新地址,请创建新任务。 +// +// 2. 不支持修改拉流源类型,如需更换,请创建新任务。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCALLBACKURL = "InvalidParameter.InvalidCallbackUrl" +// INVALIDPARAMETER_INVALIDSOURCEURL = "InvalidParameter.InvalidSourceUrl" +// INVALIDPARAMETER_INVALIDTASKTIME = "InvalidParameter.InvalidTaskTime" +// INVALIDPARAMETER_INVALIDTOURL = "InvalidParameter.InvalidToUrl" +// INVALIDPARAMETER_INVALIDWATERMARK = "InvalidParameter.InvalidWatermark" +// INVALIDPARAMETER_TASKNOTEXIST = "InvalidParameter.TaskNotExist" +// INVALIDPARAMETER_TOURLNOPERMISSION = "InvalidParameter.ToUrlNoPermission" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ModifyLivePullStreamTask(request *ModifyLivePullStreamTaskRequest) (response *ModifyLivePullStreamTaskResponse, err error) { + return c.ModifyLivePullStreamTaskWithContext(context.Background(), request) +} + +// ModifyLivePullStreamTask +// 更新直播拉流任务。 +// +// 1. 不支持修改目标地址,如需推到新地址,请创建新任务。 +// +// 2. 不支持修改拉流源类型,如需更换,请创建新任务。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCALLBACKURL = "InvalidParameter.InvalidCallbackUrl" +// INVALIDPARAMETER_INVALIDSOURCEURL = "InvalidParameter.InvalidSourceUrl" +// INVALIDPARAMETER_INVALIDTASKTIME = "InvalidParameter.InvalidTaskTime" +// INVALIDPARAMETER_INVALIDTOURL = "InvalidParameter.InvalidToUrl" +// INVALIDPARAMETER_INVALIDWATERMARK = "InvalidParameter.InvalidWatermark" +// INVALIDPARAMETER_TASKNOTEXIST = "InvalidParameter.TaskNotExist" +// INVALIDPARAMETER_TOURLNOPERMISSION = "InvalidParameter.ToUrlNoPermission" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ModifyLivePullStreamTaskWithContext(ctx context.Context, request *ModifyLivePullStreamTaskRequest) (response *ModifyLivePullStreamTaskResponse, err error) { + if request == nil { + request = NewModifyLivePullStreamTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLivePullStreamTask require credential") + } + + request.SetContext(ctx) + + response = NewModifyLivePullStreamTaskResponse() + err = c.Send(request, response) + return +} + +func NewModifyLivePushAuthKeyRequest() (request *ModifyLivePushAuthKeyRequest) { + request = &ModifyLivePushAuthKeyRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLivePushAuthKey") + + + return +} + +func NewModifyLivePushAuthKeyResponse() (response *ModifyLivePushAuthKeyResponse) { + response = &ModifyLivePushAuthKeyResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLivePushAuthKey +// 修改直播推流鉴权key +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_PUSHDOMAINNORECORD = "InternalError.PushDomainNoRecord" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_PUSHDOMAINNORECORD = "ResourceNotFound.PushDomainNoRecord" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLivePushAuthKey(request *ModifyLivePushAuthKeyRequest) (response *ModifyLivePushAuthKeyResponse, err error) { + return c.ModifyLivePushAuthKeyWithContext(context.Background(), request) +} + +// ModifyLivePushAuthKey +// 修改直播推流鉴权key +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_PUSHDOMAINNORECORD = "InternalError.PushDomainNoRecord" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_PUSHDOMAINNORECORD = "ResourceNotFound.PushDomainNoRecord" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLivePushAuthKeyWithContext(ctx context.Context, request *ModifyLivePushAuthKeyRequest) (response *ModifyLivePushAuthKeyResponse, err error) { + if request == nil { + request = NewModifyLivePushAuthKeyRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLivePushAuthKey require credential") + } + + request.SetContext(ctx) + + response = NewModifyLivePushAuthKeyResponse() + err = c.Send(request, response) + return +} + +func NewModifyLiveRecordTemplateRequest() (request *ModifyLiveRecordTemplateRequest) { + request = &ModifyLiveRecordTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLiveRecordTemplate") + + + return +} + +func NewModifyLiveRecordTemplateResponse() (response *ModifyLiveRecordTemplateResponse) { + response = &ModifyLiveRecordTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLiveRecordTemplate +// 修改录制模板配置。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLiveRecordTemplate(request *ModifyLiveRecordTemplateRequest) (response *ModifyLiveRecordTemplateResponse, err error) { + return c.ModifyLiveRecordTemplateWithContext(context.Background(), request) +} + +// ModifyLiveRecordTemplate +// 修改录制模板配置。 +// +// 可能返回的错误码: +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLiveRecordTemplateWithContext(ctx context.Context, request *ModifyLiveRecordTemplateRequest) (response *ModifyLiveRecordTemplateResponse, err error) { + if request == nil { + request = NewModifyLiveRecordTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLiveRecordTemplate require credential") + } + + request.SetContext(ctx) + + response = NewModifyLiveRecordTemplateResponse() + err = c.Send(request, response) + return +} + +func NewModifyLiveSnapshotTemplateRequest() (request *ModifyLiveSnapshotTemplateRequest) { + request = &ModifyLiveSnapshotTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLiveSnapshotTemplate") + + + return +} + +func NewModifyLiveSnapshotTemplateResponse() (response *ModifyLiveSnapshotTemplateResponse) { + response = &ModifyLiveSnapshotTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLiveSnapshotTemplate +// 修改截图模板配置。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_COSBUCKETNOTEXIST = "FailedOperation.CosBucketNotExist" +// FAILEDOPERATION_COSBUCKETNOTPERMISSION = "FailedOperation.CosBucketNotPermission" +// FAILEDOPERATION_COSROLENOTEXISTS = "FailedOperation.CosRoleNotExists" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) ModifyLiveSnapshotTemplate(request *ModifyLiveSnapshotTemplateRequest) (response *ModifyLiveSnapshotTemplateResponse, err error) { + return c.ModifyLiveSnapshotTemplateWithContext(context.Background(), request) +} + +// ModifyLiveSnapshotTemplate +// 修改截图模板配置。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// FAILEDOPERATION_COSBUCKETNOTEXIST = "FailedOperation.CosBucketNotExist" +// FAILEDOPERATION_COSBUCKETNOTPERMISSION = "FailedOperation.CosBucketNotPermission" +// FAILEDOPERATION_COSROLENOTEXISTS = "FailedOperation.CosRoleNotExists" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +func (c *Client) ModifyLiveSnapshotTemplateWithContext(ctx context.Context, request *ModifyLiveSnapshotTemplateRequest) (response *ModifyLiveSnapshotTemplateResponse, err error) { + if request == nil { + request = NewModifyLiveSnapshotTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLiveSnapshotTemplate require credential") + } + + request.SetContext(ctx) + + response = NewModifyLiveSnapshotTemplateResponse() + err = c.Send(request, response) + return +} + +func NewModifyLiveTranscodeTemplateRequest() (request *ModifyLiveTranscodeTemplateRequest) { + request = &ModifyLiveTranscodeTemplateRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyLiveTranscodeTemplate") + + + return +} + +func NewModifyLiveTranscodeTemplateResponse() (response *ModifyLiveTranscodeTemplateResponse) { + response = &ModifyLiveTranscodeTemplateResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyLiveTranscodeTemplate +// 修改转码模板配置。 +// +// 可能返回的错误码: +// FAILEDOPERATION_AITRANSCODEOPTIONFAIL = "FailedOperation.AiTranscodeOptionFail" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_PROCESSORALREADYEXIST = "InternalError.ProcessorAlreadyExist" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_ARGSNOTMATCH = "InvalidParameter.ArgsNotMatch" +// INVALIDPARAMETER_GOPMUSTEQUALANDEXISTS = "InvalidParameter.GopMustEqualAndExists" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLiveTranscodeTemplate(request *ModifyLiveTranscodeTemplateRequest) (response *ModifyLiveTranscodeTemplateResponse, err error) { + return c.ModifyLiveTranscodeTemplateWithContext(context.Background(), request) +} + +// ModifyLiveTranscodeTemplate +// 修改转码模板配置。 +// +// 可能返回的错误码: +// FAILEDOPERATION_AITRANSCODEOPTIONFAIL = "FailedOperation.AiTranscodeOptionFail" +// FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" +// INTERNALERROR = "InternalError" +// INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" +// INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" +// INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" +// INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" +// INTERNALERROR_NOTFOUND = "InternalError.NotFound" +// INTERNALERROR_PROCESSORALREADYEXIST = "InternalError.ProcessorAlreadyExist" +// INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" +// INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" +// INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_ARGSNOTMATCH = "InvalidParameter.ArgsNotMatch" +// INVALIDPARAMETER_GOPMUSTEQUALANDEXISTS = "InvalidParameter.GopMustEqualAndExists" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) ModifyLiveTranscodeTemplateWithContext(ctx context.Context, request *ModifyLiveTranscodeTemplateRequest) (response *ModifyLiveTranscodeTemplateResponse, err error) { + if request == nil { + request = NewModifyLiveTranscodeTemplateRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyLiveTranscodeTemplate require credential") + } + + request.SetContext(ctx) + + response = NewModifyLiveTranscodeTemplateResponse() + err = c.Send(request, response) + return +} + +func NewModifyPullStreamConfigRequest() (request *ModifyPullStreamConfigRequest) { + request = &ModifyPullStreamConfigRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyPullStreamConfig") + + + return +} + +func NewModifyPullStreamConfigResponse() (response *ModifyPullStreamConfigResponse) { + response = &ModifyPullStreamConfigResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyPullStreamConfig +// 更新拉流配置。该接口为已下线接口,请使用新接口 ModifyLivePullStreamTask。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_INVALIDUSER = "InternalError.InvalidUser" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ModifyPullStreamConfig(request *ModifyPullStreamConfigRequest) (response *ModifyPullStreamConfigResponse, err error) { + return c.ModifyPullStreamConfigWithContext(context.Background(), request) +} + +// ModifyPullStreamConfig +// 更新拉流配置。该接口为已下线接口,请使用新接口 ModifyLivePullStreamTask。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_INVALIDUSER = "InternalError.InvalidUser" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ModifyPullStreamConfigWithContext(ctx context.Context, request *ModifyPullStreamConfigRequest) (response *ModifyPullStreamConfigResponse, err error) { + if request == nil { + request = NewModifyPullStreamConfigRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyPullStreamConfig require credential") + } + + request.SetContext(ctx) + + response = NewModifyPullStreamConfigResponse() + err = c.Send(request, response) + return +} + +func NewModifyPullStreamStatusRequest() (request *ModifyPullStreamStatusRequest) { + request = &ModifyPullStreamStatusRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ModifyPullStreamStatus") + + + return +} + +func NewModifyPullStreamStatusResponse() (response *ModifyPullStreamStatusResponse) { + response = &ModifyPullStreamStatusResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ModifyPullStreamStatus +// 修改直播拉流配置的状态。该接口已下线,请使用新接口 ModifyLivePullStreamTask。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_INVALIDUSER = "InternalError.InvalidUser" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ModifyPullStreamStatus(request *ModifyPullStreamStatusRequest) (response *ModifyPullStreamStatusResponse, err error) { + return c.ModifyPullStreamStatusWithContext(context.Background(), request) +} + +// ModifyPullStreamStatus +// 修改直播拉流配置的状态。该接口已下线,请使用新接口 ModifyLivePullStreamTask。 +// +// 可能返回的错误码: +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_INVALIDUSER = "InternalError.InvalidUser" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ModifyPullStreamStatusWithContext(ctx context.Context, request *ModifyPullStreamStatusRequest) (response *ModifyPullStreamStatusResponse, err error) { + if request == nil { + request = NewModifyPullStreamStatusRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyPullStreamStatus require credential") + } + + request.SetContext(ctx) + + response = NewModifyPullStreamStatusResponse() + err = c.Send(request, response) + return +} + +func NewResumeDelayLiveStreamRequest() (request *ResumeDelayLiveStreamRequest) { + request = &ResumeDelayLiveStreamRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ResumeDelayLiveStream") + + + return +} + +func NewResumeDelayLiveStreamResponse() (response *ResumeDelayLiveStreamResponse) { + response = &ResumeDelayLiveStreamResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ResumeDelayLiveStream +// 取消直播流设置的延时配置,恢复实时直播画面。 +// +// 可能返回的错误码: +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) ResumeDelayLiveStream(request *ResumeDelayLiveStreamRequest) (response *ResumeDelayLiveStreamResponse, err error) { + return c.ResumeDelayLiveStreamWithContext(context.Background(), request) +} + +// ResumeDelayLiveStream +// 取消直播流设置的延时配置,恢复实时直播画面。 +// +// 可能返回的错误码: +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) ResumeDelayLiveStreamWithContext(ctx context.Context, request *ResumeDelayLiveStreamRequest) (response *ResumeDelayLiveStreamResponse, err error) { + if request == nil { + request = NewResumeDelayLiveStreamRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ResumeDelayLiveStream require credential") + } + + request.SetContext(ctx) + + response = NewResumeDelayLiveStreamResponse() + err = c.Send(request, response) + return +} + +func NewResumeLiveStreamRequest() (request *ResumeLiveStreamRequest) { + request = &ResumeLiveStreamRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "ResumeLiveStream") + + + return +} + +func NewResumeLiveStreamResponse() (response *ResumeLiveStreamResponse) { + response = &ResumeLiveStreamResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// ResumeLiveStream +// 恢复某条流的推流。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ResumeLiveStream(request *ResumeLiveStreamRequest) (response *ResumeLiveStreamResponse, err error) { + return c.ResumeLiveStreamWithContext(context.Background(), request) +} + +// ResumeLiveStream +// 恢复某条流的推流。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" +// INTERNALERROR = "InternalError" +// INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" +// INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" +// INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" +// INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" +// INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" +// INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" +func (c *Client) ResumeLiveStreamWithContext(ctx context.Context, request *ResumeLiveStreamRequest) (response *ResumeLiveStreamResponse, err error) { + if request == nil { + request = NewResumeLiveStreamRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ResumeLiveStream require credential") + } + + request.SetContext(ctx) + + response = NewResumeLiveStreamResponse() + err = c.Send(request, response) + return +} + +func NewStopLiveRecordRequest() (request *StopLiveRecordRequest) { + request = &StopLiveRecordRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "StopLiveRecord") + + + return +} + +func NewStopLiveRecordResponse() (response *StopLiveRecordResponse) { + response = &StopLiveRecordResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// StopLiveRecord +// 说明:录制后的文件存放于点播平台。用户如需使用录制功能,需首先自行开通点播账号并确保账号可用。录制文件存放后,相关费用(含存储以及下行播放流量)按照点播平台计费方式收取,请参考对应文档。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_CHANNELNOTEXIST = "ResourceNotFound.ChannelNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_TASKID = "ResourceNotFound.TaskId" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) StopLiveRecord(request *StopLiveRecordRequest) (response *StopLiveRecordResponse, err error) { + return c.StopLiveRecordWithContext(context.Background(), request) +} + +// StopLiveRecord +// 说明:录制后的文件存放于点播平台。用户如需使用录制功能,需首先自行开通点播账号并确保账号可用。录制文件存放后,相关费用(含存储以及下行播放流量)按照点播平台计费方式收取,请参考对应文档。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_CHANNELNOTEXIST = "ResourceNotFound.ChannelNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_TASKID = "ResourceNotFound.TaskId" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) StopLiveRecordWithContext(ctx context.Context, request *StopLiveRecordRequest) (response *StopLiveRecordResponse, err error) { + if request == nil { + request = NewStopLiveRecordRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("StopLiveRecord require credential") + } + + request.SetContext(ctx) + + response = NewStopLiveRecordResponse() + err = c.Send(request, response) + return +} + +func NewStopRecordTaskRequest() (request *StopRecordTaskRequest) { + request = &StopRecordTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "StopRecordTask") + + + return +} + +func NewStopRecordTaskResponse() (response *StopRecordTaskResponse) { + response = &StopRecordTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// StopRecordTask +// 提前结束录制,中止运行中的录制任务并生成录制文件。任务被成功终止后,本次任务将不再启动。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INTERNALERROR_SYSTEMERROR = "InternalError.SystemError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCEUNAVAILABLE_INVALIDVODSTATUS = "ResourceUnavailable.InvalidVodStatus" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) StopRecordTask(request *StopRecordTaskRequest) (response *StopRecordTaskResponse, err error) { + return c.StopRecordTaskWithContext(context.Background(), request) +} + +// StopRecordTask +// 提前结束录制,中止运行中的录制任务并生成录制文件。任务被成功终止后,本次任务将不再启动。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INTERNALERROR_SYSTEMERROR = "InternalError.SystemError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCEUNAVAILABLE_INVALIDVODSTATUS = "ResourceUnavailable.InvalidVodStatus" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) StopRecordTaskWithContext(ctx context.Context, request *StopRecordTaskRequest) (response *StopRecordTaskResponse, err error) { + if request == nil { + request = NewStopRecordTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("StopRecordTask require credential") + } + + request.SetContext(ctx) + + response = NewStopRecordTaskResponse() + err = c.Send(request, response) + return +} + +func NewStopScreenshotTaskRequest() (request *StopScreenshotTaskRequest) { + request = &StopScreenshotTaskRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "StopScreenshotTask") + + + return +} + +func NewStopScreenshotTaskResponse() (response *StopScreenshotTaskResponse) { + response = &StopScreenshotTaskResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// StopScreenshotTask +// 提前结束截图,中止运行中的截图任务。任务被成功终止后,本次任务将不再启动。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INTERNALERROR_SYSTEMERROR = "InternalError.SystemError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) StopScreenshotTask(request *StopScreenshotTaskRequest) (response *StopScreenshotTaskResponse, err error) { + return c.StopScreenshotTaskWithContext(context.Background(), request) +} + +// StopScreenshotTask +// 提前结束截图,中止运行中的截图任务。任务被成功终止后,本次任务将不再启动。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" +// INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" +// INTERNALERROR_SYSTEMERROR = "InternalError.SystemError" +// INVALIDPARAMETER = "InvalidParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) StopScreenshotTaskWithContext(ctx context.Context, request *StopScreenshotTaskRequest) (response *StopScreenshotTaskResponse, err error) { + if request == nil { + request = NewStopScreenshotTaskRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("StopScreenshotTask require credential") + } + + request.SetContext(ctx) + + response = NewStopScreenshotTaskResponse() + err = c.Send(request, response) + return +} + +func NewUnBindLiveDomainCertRequest() (request *UnBindLiveDomainCertRequest) { + request = &UnBindLiveDomainCertRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "UnBindLiveDomainCert") + + + return +} + +func NewUnBindLiveDomainCertResponse() (response *UnBindLiveDomainCertResponse) { + response = &UnBindLiveDomainCertResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// UnBindLiveDomainCert +// 解绑域名证书 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) UnBindLiveDomainCert(request *UnBindLiveDomainCertRequest) (response *UnBindLiveDomainCertResponse, err error) { + return c.UnBindLiveDomainCertWithContext(context.Background(), request) +} + +// UnBindLiveDomainCert +// 解绑域名证书 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +func (c *Client) UnBindLiveDomainCertWithContext(ctx context.Context, request *UnBindLiveDomainCertRequest) (response *UnBindLiveDomainCertResponse, err error) { + if request == nil { + request = NewUnBindLiveDomainCertRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("UnBindLiveDomainCert require credential") + } + + request.SetContext(ctx) + + response = NewUnBindLiveDomainCertResponse() + err = c.Send(request, response) + return +} + +func NewUpdateLiveWatermarkRequest() (request *UpdateLiveWatermarkRequest) { + request = &UpdateLiveWatermarkRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("live", APIVersion, "UpdateLiveWatermark") + + + return +} + +func NewUpdateLiveWatermarkResponse() (response *UpdateLiveWatermarkResponse) { + response = &UpdateLiveWatermarkResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return +} + +// UpdateLiveWatermark +// 更新水印。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_WATERMARKEDITERROR = "InternalError.WatermarkEditError" +// INTERNALERROR_WATERMARKNOTEXIST = "InternalError.WatermarkNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_WATERMARKNOTEXIST = "ResourceNotFound.WatermarkNotExist" +func (c *Client) UpdateLiveWatermark(request *UpdateLiveWatermarkRequest) (response *UpdateLiveWatermarkResponse, err error) { + return c.UpdateLiveWatermarkWithContext(context.Background(), request) +} + +// UpdateLiveWatermark +// 更新水印。 +// +// 可能返回的错误码: +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERROR = "InternalError.DBError" +// INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" +// INTERNALERROR_WATERMARKEDITERROR = "InternalError.WatermarkEditError" +// INTERNALERROR_WATERMARKNOTEXIST = "InternalError.WatermarkNotExist" +// RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" +// RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" +// RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" +// RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" +// RESOURCENOTFOUND_WATERMARKNOTEXIST = "ResourceNotFound.WatermarkNotExist" +func (c *Client) UpdateLiveWatermarkWithContext(ctx context.Context, request *UpdateLiveWatermarkRequest) (response *UpdateLiveWatermarkResponse, err error) { + if request == nil { + request = NewUpdateLiveWatermarkRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("UpdateLiveWatermark require credential") + } + + request.SetContext(ctx) + + response = NewUpdateLiveWatermarkResponse() + err = c.Send(request, response) + return +} diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/errors.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/errors.go new file mode 100644 index 0000000000..9fe36c6578 --- /dev/null +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/errors.go @@ -0,0 +1,547 @@ +// Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package v20180801 + +const ( + // 此产品的特有错误码 + + // DryRun 操作,代表请求将会是成功的,只是多传了 DryRun 参数。 + DRYRUNOPERATION = "DryRunOperation" + + // 操作失败。 + FAILEDOPERATION = "FailedOperation" + + // 操作 AI 接口失败。 + FAILEDOPERATION_AITRANSCODEOPTIONFAIL = "FailedOperation.AiTranscodeOptionFail" + + // 改变任务状态失败。 + FAILEDOPERATION_ALTERTASKSTATE = "FailedOperation.AlterTaskState" + + // 请检查是否有权限。 + FAILEDOPERATION_AUTHERROR = "FailedOperation.AuthError" + + // 调用第三方服务失败。 + FAILEDOPERATION_CALLOTHERSVRERROR = "FailedOperation.CallOtherSvrError" + + // 调用内部服务失败。 + FAILEDOPERATION_CALLOTHERSVRFAILED = "FailedOperation.CallOtherSvrFailed" + + // 取消的混流 session 不存在。 + FAILEDOPERATION_CANCELSESSIONNOTEXIST = "FailedOperation.CancelSessionNotExist" + + // 该证书已颁发,不能删除。 + FAILEDOPERATION_CANNOTBEDELETEDISSUED = "FailedOperation.CannotBeDeletedIssued" + + // 免费证书申请1小时内不允许删除。 + FAILEDOPERATION_CANNOTBEDELETEDWITHINHOUR = "FailedOperation.CannotBeDeletedWithinHour" + + // 证书已存在。 + FAILEDOPERATION_CERTIFICATEEXISTS = "FailedOperation.CertificateExists" + + // 证书不符合标准。 + FAILEDOPERATION_CERTIFICATEINVALID = "FailedOperation.CertificateInvalid" + + // 证书与私钥不对应。 + FAILEDOPERATION_CERTIFICATEMISMATCH = "FailedOperation.CertificateMismatch" + + // 证书不存在。 + FAILEDOPERATION_CERTIFICATENOTFOUND = "FailedOperation.CertificateNotFound" + + // 模版使用中。 + FAILEDOPERATION_CONFINUSED = "FailedOperation.ConfInUsed" + + // 下发CDN平台失败。 + FAILEDOPERATION_CONFIGCDNFAILED = "FailedOperation.ConfigCDNFailed" + + // Cos bucket 不存在。 + FAILEDOPERATION_COSBUCKETNOTEXIST = "FailedOperation.CosBucketNotExist" + + // 无权限访问 Cos bucket。 + FAILEDOPERATION_COSBUCKETNOTPERMISSION = "FailedOperation.CosBucketNotPermission" + + // Cos 角色不存在。 + FAILEDOPERATION_COSROLENOTEXISTS = "FailedOperation.CosRoleNotExists" + + // 2天内有产生流量,域名处于锁定期间,2天内无流量产生才允许删除域名。 + FAILEDOPERATION_DELETEDOMAININLOCKEDTIME = "FailedOperation.DeleteDomainInLockedTime" + + // 域名已添加。 + FAILEDOPERATION_DOMAINADDED = "FailedOperation.DomainAdded" + + // 配置域名规则失败。 + FAILEDOPERATION_DOMAINGSLBFAIL = "FailedOperation.DomainGslbFail" + + // 域名需要实名认证。 + FAILEDOPERATION_DOMAINNEEDREALNAME = "FailedOperation.DomainNeedRealName" + + // 域名归属待验证。 + FAILEDOPERATION_DOMAINNEEDVERIFYOWNER = "FailedOperation.DomainNeedVerifyOwner" + + // 免费证书数量超出限制。 + FAILEDOPERATION_EXCEEDSFREELIMIT = "FailedOperation.ExceedsFreeLimit" + + // 无法获取水印 url。 + FAILEDOPERATION_GETPICTUREURLERROR = "FailedOperation.GetPictureUrlError" + + // 获取输入流长宽失败。 + FAILEDOPERATION_GETSTREAMRESOLUTIONERROR = "FailedOperation.GetStreamResolutionError" + + // 无在线流。 + FAILEDOPERATION_HASNOTLIVINGSTREAM = "FailedOperation.HasNotLivingStream" + + // 域名数量超过限制(100个)。 + FAILEDOPERATION_HOSTOUTLIMIT = "FailedOperation.HostOutLimit" + + // 证书状态不正确。 + FAILEDOPERATION_INVALIDCERTIFICATESTATUSCODE = "FailedOperation.InvalidCertificateStatusCode" + + // 参数有误。 + FAILEDOPERATION_INVALIDPARAM = "FailedOperation.InvalidParam" + + // 操作 CDN 接口失败。 + FAILEDOPERATION_INVOKECDNAPIFAIL = "FailedOperation.InvokeCdnApiFail" + + // 操作点播接口异常。 + FAILEDOPERATION_INVOKEVIDEOAPIFAIL = "FailedOperation.InvokeVideoApiFail" + + // 计费平台返回余额不足。 + FAILEDOPERATION_JIFEINOENOUGHFUND = "FailedOperation.JiFeiNoEnoughFund" + + // 当前 CA 机构访问繁忙,请稍后重试。 + FAILEDOPERATION_NETWORKERROR = "FailedOperation.NetworkError" + + // 您没有该项目的操作权限。 + FAILEDOPERATION_NOPROJECTPERMISSION = "FailedOperation.NoProjectPermission" + + // 尚未通过实名认证。 + FAILEDOPERATION_NOREALNAMEAUTH = "FailedOperation.NoRealNameAuth" + + // 找不到记录。 + FAILEDOPERATION_NOTFOUND = "FailedOperation.NotFound" + + // 父域名已添加。 + FAILEDOPERATION_PARENTDOMAINADDED = "FailedOperation.ParentDomainAdded" + + // 启动混流失败。 + FAILEDOPERATION_PROCESSMIXERROR = "FailedOperation.ProcessMixError" + + // 查询 upload 信息失败。 + FAILEDOPERATION_QUERYUPLOADINFOFAILED = "FailedOperation.QueryUploadInfoFailed" + + // 规则已经存在。 + FAILEDOPERATION_RULEALREADYEXIST = "FailedOperation.RuleAlreadyExist" + + // 用户没有有效的流量套餐包。 + FAILEDOPERATION_SDKNOPACKAGE = "FailedOperation.SdkNoPackage" + + // 流不存在。 + FAILEDOPERATION_STREAMNOTEXIST = "FailedOperation.StreamNotExist" + + // 子域名已添加。 + FAILEDOPERATION_SUBDOMAINADDED = "FailedOperation.SubDomainAdded" + + // 解绑Tag失败,请尝试手动解绑。 + FAILEDOPERATION_TAGUNBINDERROR = "FailedOperation.TagUnbindError" + + // 内部错误。 + INTERNALERROR = "InternalError" + + // 针对添加转码模版的接口。 + INTERNALERROR_ARGSNOTMATCH = "InternalError.ArgsNotMatch" + + // 调用内部服务错误。 + INTERNALERROR_CALLOTHERSVRERROR = "InternalError.CallOtherSvrError" + + // 暂不支持添加中文域名,请核对域名格式。 + INTERNALERROR_CHINESECHARACTERDETECTED = "InternalError.ChineseCharacterDetected" + + // 模版使用中。 + INTERNALERROR_CONFINUSED = "InternalError.ConfInUsed" + + // 模版不存在。 + INTERNALERROR_CONFNOTFOUND = "InternalError.ConfNotFound" + + // 模版数量超过限制。 + INTERNALERROR_CONFOUTLIMIT = "InternalError.ConfOutLimit" + + // 配置不存在。 + INTERNALERROR_CONFIGNOTEXIST = "InternalError.ConfigNotExist" + + // DB 连接错误。 + INTERNALERROR_CONNECTDBERROR = "InternalError.ConnectDbError" + + // 证书使用中。 + INTERNALERROR_CRTDATEINUSING = "InternalError.CrtDateInUsing" + + // 证书不存在。 + INTERNALERROR_CRTDATENOTFOUND = "InternalError.CrtDateNotFound" + + // 证书不合法。 + INTERNALERROR_CRTDATENOTLEGAL = "InternalError.CrtDateNotLegal" + + // 证书过期。 + INTERNALERROR_CRTDATEOVERDUE = "InternalError.CrtDateOverdue" + + // 没有相关域名。 + INTERNALERROR_CRTDOMAINNOTFOUND = "InternalError.CrtDomainNotFound" + + // 证书 Key 不匹配。 + INTERNALERROR_CRTKEYNOTMATCH = "InternalError.CrtKeyNotMatch" + + // DB执行错误。 + INTERNALERROR_DBERROR = "InternalError.DBError" + + // 该域名已在其他处接入,请检查域名是否输入正确。 如域名正确,您可通过验证后重新添加域名。 + INTERNALERROR_DOMAINALREADYEXIST = "InternalError.DomainAlreadyExist" + + // 域名格式错误,请输入合法格式域名。 + INTERNALERROR_DOMAINFORMATERROR = "InternalError.DomainFormatError" + + // 添加 GSLB 规则失败。 + INTERNALERROR_DOMAINGSLBFAIL = "InternalError.DomainGslbFail" + + // 该域名已在其他处接入,请检查域名是否输入正确。 如域名正确,您可通过验证后重新添加域名。 + INTERNALERROR_DOMAINISFAMOUS = "InternalError.DomainIsFamous" + + // 您的域名不可用,请输入正确的域名。 + INTERNALERROR_DOMAINISLIMITED = "InternalError.DomainIsLimited" + + // 域名没有备案。 + INTERNALERROR_DOMAINNORECORD = "InternalError.DomainNoRecord" + + // 域名不存在。 + INTERNALERROR_DOMAINNOTEXIST = "InternalError.DomainNotExist" + + // 域名长度超过限制。 + INTERNALERROR_DOMAINTOOLONG = "InternalError.DomainTooLong" + + // 获取用户账号错误。 + INTERNALERROR_GETBIZIDERROR = "InternalError.GetBizidError" + + // 获取配置错误。 + INTERNALERROR_GETCONFIGERROR = "InternalError.GetConfigError" + + // 获取流信息失败。 + INTERNALERROR_GETSTREAMINFOERROR = "InternalError.GetStreamInfoError" + + // 获取直播源信息错误。 + INTERNALERROR_GETUPSTREAMINFOERROR = "InternalError.GetUpstreamInfoError" + + // 获取水印错误。 + INTERNALERROR_GETWATERMARKERROR = "InternalError.GetWatermarkError" + + // 无在线流。 + INTERNALERROR_HASNOTLIVINGSTREAM = "InternalError.HasNotLivingStream" + + // 参数检校不通过。 + INTERNALERROR_INVALIDINPUT = "InternalError.InvalidInput" + + // 无效的请求。 + INTERNALERROR_INVALIDREQUEST = "InternalError.InvalidRequest" + + // 账号信息错误。 + INTERNALERROR_INVALIDUSER = "InternalError.InvalidUser" + + // 计费平台返回其他错误。 + INTERNALERROR_JIFEIOTHERERROR = "InternalError.JiFeiOtherError" + + // 内部网络错误。 + INTERNALERROR_NETWORKERROR = "InternalError.NetworkError" + + // 记录不存在。 + INTERNALERROR_NOTFOUND = "InternalError.NotFound" + + // 无权限操作。 + INTERNALERROR_NOTPERMMITOPERAT = "InternalError.NotPermmitOperat" + + // 播放域名不存在。 + INTERNALERROR_PLAYDOMAINNORECORD = "InternalError.PlayDomainNoRecord" + + // 转码模板名称已经存在。 + INTERNALERROR_PROCESSORALREADYEXIST = "InternalError.ProcessorAlreadyExist" + + // 推流域名不存在。 + INTERNALERROR_PUSHDOMAINNORECORD = "InternalError.PushDomainNoRecord" + + // 按省份运营商查询播放信息失败。 + INTERNALERROR_QUERYPROISPPLAYINFOERROR = "InternalError.QueryProIspPlayInfoError" + + // 查询 upload 信息失败。 + INTERNALERROR_QUERYUPLOADINFOFAILED = "InternalError.QueryUploadInfoFailed" + + // 规则已经配置。 + INTERNALERROR_RULEALREADYEXIST = "InternalError.RuleAlreadyExist" + + // 规则使用中。 + INTERNALERROR_RULEINUSING = "InternalError.RuleInUsing" + + // 规则不存在。 + INTERNALERROR_RULENOTFOUND = "InternalError.RuleNotFound" + + // 规则超过限制。 + INTERNALERROR_RULEOUTLIMIT = "InternalError.RuleOutLimit" + + // 流状态异常。 + INTERNALERROR_STREAMSTATUSERROR = "InternalError.StreamStatusError" + + // 系统内部错误。 + INTERNALERROR_SYSTEMERROR = "InternalError.SystemError" + + // 更新数据失败。 + INTERNALERROR_UPDATEDATAERROR = "InternalError.UpdateDataError" + + // 添加直播水印失败。 + INTERNALERROR_WATERMARKADDERROR = "InternalError.WatermarkAddError" + + // 水印修改内部错误。 + INTERNALERROR_WATERMARKEDITERROR = "InternalError.WatermarkEditError" + + // 水印不存在。 + INTERNALERROR_WATERMARKNOTEXIST = "InternalError.WatermarkNotExist" + + // 参数错误。 + INVALIDPARAMETER = "InvalidParameter" + + // 错误的模板名。 + INVALIDPARAMETER_ARGSNOTMATCH = "InvalidParameter.ArgsNotMatch" + + // Cos自定义文件名错误。 + INVALIDPARAMETER_COSCUSTOMFILENAMEERROR = "InvalidParameter.COSCustomFileNameError" + + // 取消不存在的会话。 + INVALIDPARAMETER_CANCELSESSIONNOTEXIST = "InvalidParameter.CancelSessionNotExist" + + // 腾讯云证书托管 ID 错误。 + INVALIDPARAMETER_CLOUDCRTIDERROR = "InvalidParameter.CloudCrtIdError" + + // 赠送的腾讯云域名已过期。 + INVALIDPARAMETER_CLOUDDOMAINISSTOP = "InvalidParameter.CloudDomainIsStop" + + // 证书使用中。 + INVALIDPARAMETER_CRTDATEINUSING = "InvalidParameter.CrtDateInUsing" + + // 证书不存在。 + INVALIDPARAMETER_CRTDATENOTFOUND = "InvalidParameter.CrtDateNotFound" + + // 证书内容不合法。 + INVALIDPARAMETER_CRTDATENOTLEGAL = "InvalidParameter.CrtDateNotLegal" + + // 证书过期。 + INVALIDPARAMETER_CRTDATEOVERDUE = "InvalidParameter.CrtDateOverdue" + + // 证书没有相关域名。 + INVALIDPARAMETER_CRTDOMAINNOTFOUND = "InvalidParameter.CrtDomainNotFound" + + // 证书 Key 不匹配。 + INVALIDPARAMETER_CRTKEYNOTMATCH = "InvalidParameter.CrtKeyNotMatch" + + // 证书内容或者私钥未提供。 + INVALIDPARAMETER_CRTORKEYNOTEXIST = "InvalidParameter.CrtOrKeyNotExist" + + // 域名已经存在。 + INVALIDPARAMETER_DOMAINALREADYEXIST = "InvalidParameter.DomainAlreadyExist" + + // 域名格式错误,请输入合法格式域名。 + INVALIDPARAMETER_DOMAINFORMATERROR = "InvalidParameter.DomainFormatError" + + // 当前域名在黑名单中。 + INVALIDPARAMETER_DOMAINHITBLACKLIST = "InvalidParameter.DomainHitBlackList" + + // 使用黑名单域名。 + INVALIDPARAMETER_DOMAINISFAMOUS = "InvalidParameter.DomainIsFamous" + + // 域名受限,请提交工单,申请解除限制。 + INVALIDPARAMETER_DOMAINISLIMITED = "InvalidParameter.DomainIsLimited" + + // 域名长度超过限制。 + INVALIDPARAMETER_DOMAINTOOLONG = "InvalidParameter.DomainTooLong" + + // 自适应码率子模板gop值必须存在且相等。 + INVALIDPARAMETER_GOPMUSTEQUALANDEXISTS = "InvalidParameter.GopMustEqualAndExists" + + // 输入数目超出限制。 + INVALIDPARAMETER_INPUTNUMLIMITEXCEEDED = "InvalidParameter.InputNumLimitExceeded" + + // 非法的背景长宽。 + INVALIDPARAMETER_INVALIDBACKGROUDRESOLUTION = "InvalidParameter.InvalidBackgroudResolution" + + // 非法的输出码率。 + INVALIDPARAMETER_INVALIDBITRATE = "InvalidParameter.InvalidBitrate" + + // 回调地址不规范。 + INVALIDPARAMETER_INVALIDCALLBACKURL = "InvalidParameter.InvalidCallbackUrl" + + // 裁剪区域溢出原始图片。 + INVALIDPARAMETER_INVALIDCROPPARAM = "InvalidParameter.InvalidCropParam" + + // 图层参数错误。 + INVALIDPARAMETER_INVALIDLAYERPARAM = "InvalidParameter.InvalidLayerParam" + + // 输出流 ID 被占用。 + INVALIDPARAMETER_INVALIDOUTPUTSTREAMID = "InvalidParameter.InvalidOutputStreamID" + + // 非法输出类型,检查 OutputPram-StreamId 与 OutputType 是否匹配。 + INVALIDPARAMETER_INVALIDOUTPUTTYPE = "InvalidParameter.InvalidOutputType" + + // 水印 ID 未设置。 + INVALIDPARAMETER_INVALIDPICTUREID = "InvalidParameter.InvalidPictureID" + + // 非法的圆角矩形圆角半径。 + INVALIDPARAMETER_INVALIDROUNDRECTRADIUS = "InvalidParameter.InvalidRoundRectRadius" + + // 源地址不规范。 + INVALIDPARAMETER_INVALIDSOURCEURL = "InvalidParameter.InvalidSourceUrl" + + // 任务时间超出限制。 + INVALIDPARAMETER_INVALIDTASKTIME = "InvalidParameter.InvalidTaskTime" + + // 目标地址不规范。 + INVALIDPARAMETER_INVALIDTOURL = "InvalidParameter.InvalidToUrl" + + // 错误的VodFileName。 + INVALIDPARAMETER_INVALIDVODFILENAME = "InvalidParameter.InvalidVodFileName" + + // 水印参数有误。 + INVALIDPARAMETER_INVALIDWATERMARK = "InvalidParameter.InvalidWatermark" + + // 当月不允许添加已删除的小程序域名。 + INVALIDPARAMETER_MPHOSTDELETE = "InvalidParameter.MpHostDelete" + + // 小程序插件没有授权。 + INVALIDPARAMETER_MPPLUGINNOUSE = "InvalidParameter.MpPluginNoUse" + + // 其他错误。 + INVALIDPARAMETER_OTHERERROR = "InvalidParameter.OtherError" + + // 同一会话输出流发生变化。 + INVALIDPARAMETER_SESSIONOUTPUTSTREAMCHANGED = "InvalidParameter.SessionOutputStreamChanged" + + // 任务不存在。 + INVALIDPARAMETER_TASKNOTEXIST = "InvalidParameter.TaskNotExist" + + // 任务数超过限制。 + INVALIDPARAMETER_TASKNUMMORETHANLIMIT = "InvalidParameter.TaskNumMoreThanLimit" + + // 模板与输入流条数不匹配。 + INVALIDPARAMETER_TEMPLATENOTMATCHINPUTNUM = "InvalidParameter.TemplateNotMatchInputNum" + + // 外部地址无权限。 + INVALIDPARAMETER_TOURLNOPERMISSION = "InvalidParameter.ToUrlNoPermission" + + // 域名解析不正确。 + INVALIDPARAMETER_URLNOTSAFE = "InvalidParameter.UrlNotSafe" + + // 参数取值错误。 + INVALIDPARAMETERVALUE = "InvalidParameterValue" + + // 超过配额限制。 + LIMITEXCEEDED = "LimitExceeded" + + // 当前并发任务数超限制。 + LIMITEXCEEDED_MAXIMUMRUNNINGTASK = "LimitExceeded.MaximumRunningTask" + + // 当天已创建任务数超限制。 + LIMITEXCEEDED_MAXIMUMTASK = "LimitExceeded.MaximumTask" + + // 单位时间内接口请求频率达到限制。 + LIMITEXCEEDED_RATELIMITEXCEEDED = "LimitExceeded.RateLimitExceeded" + + // 缺少参数错误。 + MISSINGPARAMETER = "MissingParameter" + + // 资源被占用。 + RESOURCEINUSE = "ResourceInUse" + + // 资源不足。 + RESOURCEINSUFFICIENT = "ResourceInsufficient" + + // 资源不存在。 + RESOURCENOTFOUND = "ResourceNotFound" + + // 日志下载 URL 不存在。 + RESOURCENOTFOUND_CDNLOGEMPTY = "ResourceNotFound.CdnLogEmpty" + + // 日志主题不存在。 + RESOURCENOTFOUND_CDNTHEMEEMPTY = "ResourceNotFound.CdnThemeEmpty" + + // 频道不存在。 + RESOURCENOTFOUND_CHANNELNOTEXIST = "ResourceNotFound.ChannelNotExist" + + // 证书不存在。 + RESOURCENOTFOUND_CRTDATENOTFOUND = "ResourceNotFound.CrtDateNotFound" + + // 未找到证书信息。 + RESOURCENOTFOUND_CRTDOMAINNOTFOUND = "ResourceNotFound.CrtDomainNotFound" + + // 域名没有备案。 + RESOURCENOTFOUND_DOMAINNORECORD = "ResourceNotFound.DomainNoRecord" + + // 域名不存在或不匹配。 + RESOURCENOTFOUND_DOMAINNOTEXIST = "ResourceNotFound.DomainNotExist" + + // 用户被禁用。 + RESOURCENOTFOUND_FORBIDSERVICE = "ResourceNotFound.ForbidService" + + // 用户服务被冻结。 + RESOURCENOTFOUND_FREEZESERVICE = "ResourceNotFound.FreezeService" + + // 用户不支持此接口。 + RESOURCENOTFOUND_INVALIDUSER = "ResourceNotFound.InvalidUser" + + // 播放域名不存在。 + RESOURCENOTFOUND_PLAYDOMAINNORECORD = "ResourceNotFound.PlayDomainNoRecord" + + // 推流域名不存在。 + RESOURCENOTFOUND_PUSHDOMAINNORECORD = "ResourceNotFound.PushDomainNoRecord" + + // 账号停服,请先冲正开通服务后再操作。 + RESOURCENOTFOUND_STOPSERVICE = "ResourceNotFound.StopService" + + // TaskId 不存在。 + RESOURCENOTFOUND_TASKID = "ResourceNotFound.TaskId" + + // 用户主动停服。 + RESOURCENOTFOUND_USERDISABLESERVICE = "ResourceNotFound.UserDisableService" + + // 用户未注册直播。 + RESOURCENOTFOUND_USERNOTEXIST = "ResourceNotFound.UserNotExist" + + // 用户不存在。 + RESOURCENOTFOUND_USERNOTFOUNT = "ResourceNotFound.UserNotFount" + + // 水印不存在。 + RESOURCENOTFOUND_WATERMARKNOTEXIST = "ResourceNotFound.WatermarkNotExist" + + // 资源不可用。 + RESOURCEUNAVAILABLE = "ResourceUnavailable" + + // 点播未开服。 + RESOURCEUNAVAILABLE_INVALIDVODSTATUS = "ResourceUnavailable.InvalidVodStatus" + + // 推流不存在。 + RESOURCEUNAVAILABLE_STREAMNOTEXIST = "ResourceUnavailable.StreamNotExist" + + // 未授权操作。 + UNAUTHORIZEDOPERATION = "UnauthorizedOperation" + + // 未知参数错误。 + UNKNOWNPARAMETER = "UnknownParameter" + + // 操作不支持。 + UNSUPPORTEDOPERATION = "UnsupportedOperation" + + // 非直播码/新版控制台模式。 + UNSUPPORTEDOPERATION_NOTLVBCODEMODE = "UnsupportedOperation.NotLVBCodeMode" +) diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/models.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/models.go new file mode 100644 index 0000000000..aac35764c5 --- /dev/null +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/models.go @@ -0,0 +1,12656 @@ +// Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package v20180801 + +import ( + "encoding/json" + tcerr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + tchttp "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http" +) + +// Predefined struct for user +type AddDelayLiveStreamRequestParams struct { + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 延播时间,单位:秒,上限:600秒。 + DelayTime *uint64 `json:"DelayTime,omitempty" name:"DelayTime"` + + // 延播设置的过期时间。UTC 格式,例如:2018-11-29T19:00:00Z。 + // 注意: + // 1. 默认7天后过期,且最长支持7天内生效。 + // 2. 北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + ExpireTime *string `json:"ExpireTime,omitempty" name:"ExpireTime"` +} + +type AddDelayLiveStreamRequest struct { + *tchttp.BaseRequest + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 延播时间,单位:秒,上限:600秒。 + DelayTime *uint64 `json:"DelayTime,omitempty" name:"DelayTime"` + + // 延播设置的过期时间。UTC 格式,例如:2018-11-29T19:00:00Z。 + // 注意: + // 1. 默认7天后过期,且最长支持7天内生效。 + // 2. 北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + ExpireTime *string `json:"ExpireTime,omitempty" name:"ExpireTime"` +} + +func (r *AddDelayLiveStreamRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *AddDelayLiveStreamRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "AppName") + delete(f, "DomainName") + delete(f, "StreamName") + delete(f, "DelayTime") + delete(f, "ExpireTime") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AddDelayLiveStreamRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type AddDelayLiveStreamResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type AddDelayLiveStreamResponse struct { + *tchttp.BaseResponse + Response *AddDelayLiveStreamResponseParams `json:"Response"` +} + +func (r *AddDelayLiveStreamResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *AddDelayLiveStreamResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type AddLiveDomainRequestParams struct { + // 域名名称。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 域名类型, + // 0:推流域名, + // 1:播放域名。 + DomainType *uint64 `json:"DomainType,omitempty" name:"DomainType"` + + // 拉流域名类型: + // 1:国内, + // 2:全球, + // 3:境外。 + // 默认值:1。 + PlayType *uint64 `json:"PlayType,omitempty" name:"PlayType"` + + // 是否是慢直播: + // 0: 普通直播, + // 1 :慢直播 。 + // 默认值: 0。 + IsDelayLive *int64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` + + // 是否是小程序直播: + // 0: 标准直播, + // 1 :小程序直播 。 + // 默认值: 0。 + IsMiniProgramLive *int64 `json:"IsMiniProgramLive,omitempty" name:"IsMiniProgramLive"` + + // 域名归属校验类型。 + // 可取值(与 AuthenticateDomainOwner 接口的 VerifyType 参数一致。): + // dnsCheck :立即验证配置 dns 的解析记录是否与待验证内容一致,成功则保存记录。 + // fileCheck :立即验证 web 文件是否与待验证内容一致,成功则保存记录。 + // dbCheck : 检查是否已经验证成功过。 + // 若不传默认为 dbCheck 。 + VerifyOwnerType *string `json:"VerifyOwnerType,omitempty" name:"VerifyOwnerType"` +} + +type AddLiveDomainRequest struct { + *tchttp.BaseRequest + + // 域名名称。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 域名类型, + // 0:推流域名, + // 1:播放域名。 + DomainType *uint64 `json:"DomainType,omitempty" name:"DomainType"` + + // 拉流域名类型: + // 1:国内, + // 2:全球, + // 3:境外。 + // 默认值:1。 + PlayType *uint64 `json:"PlayType,omitempty" name:"PlayType"` + + // 是否是慢直播: + // 0: 普通直播, + // 1 :慢直播 。 + // 默认值: 0。 + IsDelayLive *int64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` + + // 是否是小程序直播: + // 0: 标准直播, + // 1 :小程序直播 。 + // 默认值: 0。 + IsMiniProgramLive *int64 `json:"IsMiniProgramLive,omitempty" name:"IsMiniProgramLive"` + + // 域名归属校验类型。 + // 可取值(与 AuthenticateDomainOwner 接口的 VerifyType 参数一致。): + // dnsCheck :立即验证配置 dns 的解析记录是否与待验证内容一致,成功则保存记录。 + // fileCheck :立即验证 web 文件是否与待验证内容一致,成功则保存记录。 + // dbCheck : 检查是否已经验证成功过。 + // 若不传默认为 dbCheck 。 + VerifyOwnerType *string `json:"VerifyOwnerType,omitempty" name:"VerifyOwnerType"` +} + +func (r *AddLiveDomainRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *AddLiveDomainRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "DomainType") + delete(f, "PlayType") + delete(f, "IsDelayLive") + delete(f, "IsMiniProgramLive") + delete(f, "VerifyOwnerType") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AddLiveDomainRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type AddLiveDomainResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type AddLiveDomainResponse struct { + *tchttp.BaseResponse + Response *AddLiveDomainResponseParams `json:"Response"` +} + +func (r *AddLiveDomainResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *AddLiveDomainResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type AddLiveWatermarkRequestParams struct { + // 水印图片 URL。 + // URL中禁止包含的字符: + // ;(){}$>`#"\'| + PictureUrl *string `json:"PictureUrl,omitempty" name:"PictureUrl"` + + // 水印名称。 + // 最长16字节。 + WatermarkName *string `json:"WatermarkName,omitempty" name:"WatermarkName"` + + // 显示位置,X轴偏移,单位是百分比,默认 0。 + XPosition *int64 `json:"XPosition,omitempty" name:"XPosition"` + + // 显示位置,Y轴偏移,单位是百分比,默认 0。 + YPosition *int64 `json:"YPosition,omitempty" name:"YPosition"` + + // 水印宽度,占直播原始画面宽度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始宽度。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 水印高度,占直播原始画面高度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始高度。 + Height *int64 `json:"Height,omitempty" name:"Height"` +} + +type AddLiveWatermarkRequest struct { + *tchttp.BaseRequest + + // 水印图片 URL。 + // URL中禁止包含的字符: + // ;(){}$>`#"\'| + PictureUrl *string `json:"PictureUrl,omitempty" name:"PictureUrl"` + + // 水印名称。 + // 最长16字节。 + WatermarkName *string `json:"WatermarkName,omitempty" name:"WatermarkName"` + + // 显示位置,X轴偏移,单位是百分比,默认 0。 + XPosition *int64 `json:"XPosition,omitempty" name:"XPosition"` + + // 显示位置,Y轴偏移,单位是百分比,默认 0。 + YPosition *int64 `json:"YPosition,omitempty" name:"YPosition"` + + // 水印宽度,占直播原始画面宽度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始宽度。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 水印高度,占直播原始画面高度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始高度。 + Height *int64 `json:"Height,omitempty" name:"Height"` +} + +func (r *AddLiveWatermarkRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *AddLiveWatermarkRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "PictureUrl") + delete(f, "WatermarkName") + delete(f, "XPosition") + delete(f, "YPosition") + delete(f, "Width") + delete(f, "Height") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AddLiveWatermarkRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type AddLiveWatermarkResponseParams struct { + // 水印ID。 + WatermarkId *uint64 `json:"WatermarkId,omitempty" name:"WatermarkId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type AddLiveWatermarkResponse struct { + *tchttp.BaseResponse + Response *AddLiveWatermarkResponseParams `json:"Response"` +} + +func (r *AddLiveWatermarkResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *AddLiveWatermarkResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type AuthenticateDomainOwnerRequestParams struct { + // 要验证的域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 验证类型。可取值: + // dnsCheck :立即验证配置 dns 的解析记录是否与待验证内容一致,成功则保存记录。 + // fileCheck :立即验证 web 文件是否与待验证内容一致,成功则保存记录。 + // dbCheck : 检查是否已经验证成功过。 + VerifyType *string `json:"VerifyType,omitempty" name:"VerifyType"` +} + +type AuthenticateDomainOwnerRequest struct { + *tchttp.BaseRequest + + // 要验证的域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 验证类型。可取值: + // dnsCheck :立即验证配置 dns 的解析记录是否与待验证内容一致,成功则保存记录。 + // fileCheck :立即验证 web 文件是否与待验证内容一致,成功则保存记录。 + // dbCheck : 检查是否已经验证成功过。 + VerifyType *string `json:"VerifyType,omitempty" name:"VerifyType"` +} + +func (r *AuthenticateDomainOwnerRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *AuthenticateDomainOwnerRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "VerifyType") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AuthenticateDomainOwnerRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type AuthenticateDomainOwnerResponseParams struct { + // 验证内容。 + // VerifyType 传 dnsCheck 时,为要配的 TXT 记录值。 + // VerifyType 传 fileCheck 时,为文件内容。 + Content *string `json:"Content,omitempty" name:"Content"` + + // 域名验证状态。 + // >=0 为已验证归属。 + // <0 未验证归属权。 + Status *int64 `json:"Status,omitempty" name:"Status"` + + // DomainName 对应的主域名。 + // 同一主域名下的所有域名只需成功验证一次,后续均无需再验证。 + MainDomain *string `json:"MainDomain,omitempty" name:"MainDomain"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type AuthenticateDomainOwnerResponse struct { + *tchttp.BaseResponse + Response *AuthenticateDomainOwnerResponseParams `json:"Response"` +} + +func (r *AuthenticateDomainOwnerResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *AuthenticateDomainOwnerResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type BandwidthInfo struct { + // 返回格式: + // yyyy-mm-dd HH:MM:SS + // 根据粒度会有不同程度的缩减。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 带宽。 + Bandwidth *float64 `json:"Bandwidth,omitempty" name:"Bandwidth"` +} + +type BatchDomainOperateErrors struct { + // 操作失败的域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // API3.0错误码。 + Code *string `json:"Code,omitempty" name:"Code"` + + // API3.0错误信息。 + Message *string `json:"Message,omitempty" name:"Message"` +} + +type BillAreaInfo struct { + // 大区名称。 + Name *string `json:"Name,omitempty" name:"Name"` + + // 国家或地区明细数据。 + Countrys []*BillCountryInfo `json:"Countrys,omitempty" name:"Countrys"` +} + +type BillCountryInfo struct { + // 国家名称 + Name *string `json:"Name,omitempty" name:"Name"` + + // 带宽明细数据信息。 + BandInfoList []*BillDataInfo `json:"BandInfoList,omitempty" name:"BandInfoList"` +} + +type BillDataInfo struct { + // 时间点,格式: yyyy-mm-dd HH:MM:SS。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 带宽,单位是 Mbps。 + Bandwidth *float64 `json:"Bandwidth,omitempty" name:"Bandwidth"` + + // 流量,单位是 MB。 + Flux *float64 `json:"Flux,omitempty" name:"Flux"` + + // 峰值时间点,格式: yyyy-mm-dd HH:MM:SS,原始数据为5分钟粒度,如果查询小时和天粒度数据,则返回对应粒度内的带宽峰值时间点。 + PeakTime *string `json:"PeakTime,omitempty" name:"PeakTime"` +} + +type CallBackRuleInfo struct { + // 规则创建时间。 + CreateTime *string `json:"CreateTime,omitempty" name:"CreateTime"` + + // 规则更新时间。 + UpdateTime *string `json:"UpdateTime,omitempty" name:"UpdateTime"` + + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` +} + +type CallBackTemplateInfo struct { + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 模板名称。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 开播回调 URL。 + StreamBeginNotifyUrl *string `json:"StreamBeginNotifyUrl,omitempty" name:"StreamBeginNotifyUrl"` + + // 混流回调 URL。(参数已弃用)。 + StreamMixNotifyUrl *string `json:"StreamMixNotifyUrl,omitempty" name:"StreamMixNotifyUrl"` + + // 断流回调 URL。 + StreamEndNotifyUrl *string `json:"StreamEndNotifyUrl,omitempty" name:"StreamEndNotifyUrl"` + + // 录制回调 URL。 + RecordNotifyUrl *string `json:"RecordNotifyUrl,omitempty" name:"RecordNotifyUrl"` + + // 截图回调 URL。 + SnapshotNotifyUrl *string `json:"SnapshotNotifyUrl,omitempty" name:"SnapshotNotifyUrl"` + + // 鉴黄回调 URL。 + PornCensorshipNotifyUrl *string `json:"PornCensorshipNotifyUrl,omitempty" name:"PornCensorshipNotifyUrl"` + + // 回调的鉴权 key。 + CallbackKey *string `json:"CallbackKey,omitempty" name:"CallbackKey"` +} + +type CallbackEventInfo struct { + // 事件时间 + EventTime *string `json:"EventTime,omitempty" name:"EventTime"` + + // 事件类型 + EventType *uint64 `json:"EventType,omitempty" name:"EventType"` + + // 回调请求 + Request *string `json:"Request,omitempty" name:"Request"` + + // 回调响应 + Response *string `json:"Response,omitempty" name:"Response"` + + // 客户接口响应时间 + ResponseTime *string `json:"ResponseTime,omitempty" name:"ResponseTime"` + + // 回调结果 + ResultCode *uint64 `json:"ResultCode,omitempty" name:"ResultCode"` + + // 流名称 + StreamId *string `json:"StreamId,omitempty" name:"StreamId"` +} + +// Predefined struct for user +type CancelCommonMixStreamRequestParams struct { + // 混流会话(申请混流开始到取消混流结束)标识 ID。 + // 该值与CreateCommonMixStream中的MixStreamSessionId保持一致。 + MixStreamSessionId *string `json:"MixStreamSessionId,omitempty" name:"MixStreamSessionId"` +} + +type CancelCommonMixStreamRequest struct { + *tchttp.BaseRequest + + // 混流会话(申请混流开始到取消混流结束)标识 ID。 + // 该值与CreateCommonMixStream中的MixStreamSessionId保持一致。 + MixStreamSessionId *string `json:"MixStreamSessionId,omitempty" name:"MixStreamSessionId"` +} + +func (r *CancelCommonMixStreamRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CancelCommonMixStreamRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "MixStreamSessionId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CancelCommonMixStreamRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CancelCommonMixStreamResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CancelCommonMixStreamResponse struct { + *tchttp.BaseResponse + Response *CancelCommonMixStreamResponseParams `json:"Response"` +} + +func (r *CancelCommonMixStreamResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CancelCommonMixStreamResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type CdnPlayStatData struct { + // 时间点,格式: yyyy-mm-dd HH:MM:SS。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 带宽,单位: Mbps。 + Bandwidth *float64 `json:"Bandwidth,omitempty" name:"Bandwidth"` + + // 流量,单位: MB。 + Flux *float64 `json:"Flux,omitempty" name:"Flux"` + + // 新增请求数。 + Request *uint64 `json:"Request,omitempty" name:"Request"` + + // 并发连接数。 + Online *uint64 `json:"Online,omitempty" name:"Online"` +} + +type CertInfo struct { + // 证书 ID。 + CertId *int64 `json:"CertId,omitempty" name:"CertId"` + + // 证书名称。 + CertName *string `json:"CertName,omitempty" name:"CertName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 创建时间,UTC 格式。 + CreateTime *string `json:"CreateTime,omitempty" name:"CreateTime"` + + // 证书内容。 + HttpsCrt *string `json:"HttpsCrt,omitempty" name:"HttpsCrt"` + + // 证书类型。 + // 0:用户添加证书, + // 1:腾讯云托管证书。 + CertType *int64 `json:"CertType,omitempty" name:"CertType"` + + // 证书过期时间,UTC 格式。 + CertExpireTime *string `json:"CertExpireTime,omitempty" name:"CertExpireTime"` + + // 使用此证书的域名列表。 + DomainList []*string `json:"DomainList,omitempty" name:"DomainList"` +} + +type ClientIpPlaySumInfo struct { + // 客户端 IP,点分型。 + ClientIp *string `json:"ClientIp,omitempty" name:"ClientIp"` + + // 客户端所在省份。 + Province *string `json:"Province,omitempty" name:"Province"` + + // 总流量。 + TotalFlux *float64 `json:"TotalFlux,omitempty" name:"TotalFlux"` + + // 总请求数。 + TotalRequest *uint64 `json:"TotalRequest,omitempty" name:"TotalRequest"` + + // 总失败请求数。 + TotalFailedRequest *uint64 `json:"TotalFailedRequest,omitempty" name:"TotalFailedRequest"` + + // 客户端所在国家。 + CountryArea *string `json:"CountryArea,omitempty" name:"CountryArea"` +} + +type CommonMixControlParams struct { + // 取值范围[0,1]。 + // 填1时,当参数中图层分辨率参数与视频实际分辨率不一致时,自动从视频中按图层设置的分辨率比例进行裁剪。 + UseMixCropCenter *int64 `json:"UseMixCropCenter,omitempty" name:"UseMixCropCenter"` + + // 取值范围[0,1] + // 填1时,当InputStreamList中个数为1时,且OutputParams.OutputStreamType为1时,不执行取消操作,执行拷贝流操作 + AllowCopy *int64 `json:"AllowCopy,omitempty" name:"AllowCopy"` + + // 取值范围[0,1] + // 填1时,透传原始流的sei + PassInputSei *int64 `json:"PassInputSei,omitempty" name:"PassInputSei"` +} + +type CommonMixCropParams struct { + // 裁剪的宽度。取值范围[0,2000]。 + CropWidth *float64 `json:"CropWidth,omitempty" name:"CropWidth"` + + // 裁剪的高度。取值范围[0,2000]。 + CropHeight *float64 `json:"CropHeight,omitempty" name:"CropHeight"` + + // 裁剪的起始X坐标。取值范围[0,2000]。 + CropStartLocationX *float64 `json:"CropStartLocationX,omitempty" name:"CropStartLocationX"` + + // 裁剪的起始Y坐标。取值范围[0,2000]。 + CropStartLocationY *float64 `json:"CropStartLocationY,omitempty" name:"CropStartLocationY"` +} + +type CommonMixInputParam struct { + // 输入流名称。80字节以内,仅含字母、数字以及下划线的字符串。 + // 当LayoutParams.InputType=0(音视频)/4(纯音频)/5(纯视频)时,该值为需要混流的流名称。 + // 当LayoutParams.InputType=2(图片)/3(画布)时,该值仅用作标识输入,可用类似Canvas1、Pictrue1的名称。 + InputStreamName *string `json:"InputStreamName,omitempty" name:"InputStreamName"` + + // 输入流布局参数。 + LayoutParams *CommonMixLayoutParams `json:"LayoutParams,omitempty" name:"LayoutParams"` + + // 输入流裁剪参数。 + CropParams *CommonMixCropParams `json:"CropParams,omitempty" name:"CropParams"` +} + +type CommonMixLayoutParams struct { + // 输入图层。取值范围[1,16]。 + // 1)背景流(即大主播画面或画布)的 image_layer 填1。 + // 2)纯音频混流,该参数也需填。 + // 注意:不同输入,该值不可重复 + ImageLayer *int64 `json:"ImageLayer,omitempty" name:"ImageLayer"` + + // 输入类型。取值范围[0,5]。 + // 不填默认为0。 + // 0表示输入流为音视频。 + // 2表示输入流为图片。 + // 3表示输入流为画布。 + // 4表示输入流为音频。 + // 5表示输入流为纯视频。 + InputType *int64 `json:"InputType,omitempty" name:"InputType"` + + // 输入画面在输出时的高度。取值范围: + // 像素:[0,2000] + // 百分比:[0.01,0.99] + // 不填默认为输入流的高度。 + // 使用百分比时,期望输出为(百分比 * 背景高)。 + ImageHeight *float64 `json:"ImageHeight,omitempty" name:"ImageHeight"` + + // 输入画面在输出时的宽度。取值范围: + // 像素:[0,2000] + // 百分比:[0.01,0.99] + // 不填默认为输入流的宽度。 + // 使用百分比时,期望输出为(百分比 * 背景宽)。 + ImageWidth *float64 `json:"ImageWidth,omitempty" name:"ImageWidth"` + + // 输入在输出画面的X偏移。取值范围: + // 像素:[0,2000] + // 百分比:[0.01,0.99] + // 不填默认为0。 + // 相对于大主播背景画面左上角的横向偏移。 + // 使用百分比时,期望输出为(百分比 * 背景宽)。 + LocationX *float64 `json:"LocationX,omitempty" name:"LocationX"` + + // 输入在输出画面的Y偏移。取值范围: + // 像素:[0,2000] + // 百分比:[0.01,0.99] + // 不填默认为0。 + // 相对于大主播背景画面左上角的纵向偏移。 + // 使用百分比时,期望输出为(百分比 * 背景宽) + LocationY *float64 `json:"LocationY,omitempty" name:"LocationY"` + + // 当InputType为3(画布)时,该值表示画布的颜色。 + // 常用的颜色有: + // 红色:0xcc0033。 + // 黄色:0xcc9900。 + // 绿色:0xcccc33。 + // 蓝色:0x99CCFF。 + // 黑色:0x000000。 + // 白色:0xFFFFFF。 + // 灰色:0x999999。 + Color *string `json:"Color,omitempty" name:"Color"` + + // 当InputType为2(图片)时,该值是水印ID。 + WatermarkId *int64 `json:"WatermarkId,omitempty" name:"WatermarkId"` +} + +type CommonMixOutputParams struct { + // 输出流名称。 + OutputStreamName *string `json:"OutputStreamName,omitempty" name:"OutputStreamName"` + + // 输出流类型,取值范围[0,1]。 + // 不填默认为0。 + // 当输出流为输入流 list 中的一条时,填写0。 + // 当期望生成的混流结果成为一条新流时,该值填为1。 + // 该值为1时,output_stream_id 不能出现在 input_stram_list 中,且直播后台中,不能存在相同 ID 的流。 + OutputStreamType *int64 `json:"OutputStreamType,omitempty" name:"OutputStreamType"` + + // 输出流比特率。取值范围[1,50000]。 + // 不填的情况下,系统会自动判断。 + OutputStreamBitRate *int64 `json:"OutputStreamBitRate,omitempty" name:"OutputStreamBitRate"` + + // 输出流GOP大小。取值范围[1,10]。 + // 不填的情况下,系统会自动判断。 + OutputStreamGop *int64 `json:"OutputStreamGop,omitempty" name:"OutputStreamGop"` + + // 输出流帧率大小。取值范围[1,60]。 + // 不填的情况下,系统会自动判断。 + OutputStreamFrameRate *int64 `json:"OutputStreamFrameRate,omitempty" name:"OutputStreamFrameRate"` + + // 输出流音频比特率。取值范围[1,500] + // 不填的情况下,系统会自动判断。 + OutputAudioBitRate *int64 `json:"OutputAudioBitRate,omitempty" name:"OutputAudioBitRate"` + + // 输出流音频采样率。取值范围[96000, 88200, 64000, 48000, 44100, 32000,24000, 22050, 16000, 12000, 11025, 8000]。 + // 不填的情况下,系统会自动判断。 + OutputAudioSampleRate *int64 `json:"OutputAudioSampleRate,omitempty" name:"OutputAudioSampleRate"` + + // 输出流音频声道数。取值范围[1,2]。 + // 不填的情况下,系统会自动判断。 + OutputAudioChannels *int64 `json:"OutputAudioChannels,omitempty" name:"OutputAudioChannels"` + + // 输出流中的sei信息。如果无特殊需要,不填。 + MixSei *string `json:"MixSei,omitempty" name:"MixSei"` +} + +type ConcurrentRecordStreamNum struct { + // 时间点。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 路数。 + Num *uint64 `json:"Num,omitempty" name:"Num"` +} + +// Predefined struct for user +type CreateCommonMixStreamRequestParams struct { + // 混流会话(申请混流开始到取消混流结束)标识 ID。80字节以内,仅含字母、数字以及下划线的字符串。 + MixStreamSessionId *string `json:"MixStreamSessionId,omitempty" name:"MixStreamSessionId"` + + // 混流输入流列表。 + InputStreamList []*CommonMixInputParam `json:"InputStreamList,omitempty" name:"InputStreamList"` + + // 混流输出流参数。 + OutputParams *CommonMixOutputParams `json:"OutputParams,omitempty" name:"OutputParams"` + + // 输入模板 ID,若设置该参数,将按默认模板布局输出,无需填入自定义位置参数。 + // 不填默认为0。 + // 两输入源支持10,20,30,40,50。 + // 三输入源支持310,390,391。 + // 四输入源支持410。 + // 五输入源支持510,590。 + // 六输入源支持610。 + MixStreamTemplateId *int64 `json:"MixStreamTemplateId,omitempty" name:"MixStreamTemplateId"` + + // 混流的特殊控制参数。如无特殊需求,无需填写。 + ControlParams *CommonMixControlParams `json:"ControlParams,omitempty" name:"ControlParams"` +} + +type CreateCommonMixStreamRequest struct { + *tchttp.BaseRequest + + // 混流会话(申请混流开始到取消混流结束)标识 ID。80字节以内,仅含字母、数字以及下划线的字符串。 + MixStreamSessionId *string `json:"MixStreamSessionId,omitempty" name:"MixStreamSessionId"` + + // 混流输入流列表。 + InputStreamList []*CommonMixInputParam `json:"InputStreamList,omitempty" name:"InputStreamList"` + + // 混流输出流参数。 + OutputParams *CommonMixOutputParams `json:"OutputParams,omitempty" name:"OutputParams"` + + // 输入模板 ID,若设置该参数,将按默认模板布局输出,无需填入自定义位置参数。 + // 不填默认为0。 + // 两输入源支持10,20,30,40,50。 + // 三输入源支持310,390,391。 + // 四输入源支持410。 + // 五输入源支持510,590。 + // 六输入源支持610。 + MixStreamTemplateId *int64 `json:"MixStreamTemplateId,omitempty" name:"MixStreamTemplateId"` + + // 混流的特殊控制参数。如无特殊需求,无需填写。 + ControlParams *CommonMixControlParams `json:"ControlParams,omitempty" name:"ControlParams"` +} + +func (r *CreateCommonMixStreamRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateCommonMixStreamRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "MixStreamSessionId") + delete(f, "InputStreamList") + delete(f, "OutputParams") + delete(f, "MixStreamTemplateId") + delete(f, "ControlParams") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateCommonMixStreamRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateCommonMixStreamResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateCommonMixStreamResponse struct { + *tchttp.BaseResponse + Response *CreateCommonMixStreamResponseParams `json:"Response"` +} + +func (r *CreateCommonMixStreamResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateCommonMixStreamResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveCallbackRuleRequestParams struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 模板ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type CreateLiveCallbackRuleRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 模板ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *CreateLiveCallbackRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveCallbackRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveCallbackRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveCallbackRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveCallbackRuleResponse struct { + *tchttp.BaseResponse + Response *CreateLiveCallbackRuleResponseParams `json:"Response"` +} + +func (r *CreateLiveCallbackRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveCallbackRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveCallbackTemplateRequestParams struct { + // 模板名称。 + // 长度上限:255字节。 + // 仅支持中文、英文、数字、_、-。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + // 长度上限:1024字节。 + // 仅支持中文、英文、数字、_、-。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 开播回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32744)。 + StreamBeginNotifyUrl *string `json:"StreamBeginNotifyUrl,omitempty" name:"StreamBeginNotifyUrl"` + + // 断流回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32744)。 + StreamEndNotifyUrl *string `json:"StreamEndNotifyUrl,omitempty" name:"StreamEndNotifyUrl"` + + // 录制回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32744)。 + RecordNotifyUrl *string `json:"RecordNotifyUrl,omitempty" name:"RecordNotifyUrl"` + + // 截图回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32744)。 + SnapshotNotifyUrl *string `json:"SnapshotNotifyUrl,omitempty" name:"SnapshotNotifyUrl"` + + // 鉴黄回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32741)。 + PornCensorshipNotifyUrl *string `json:"PornCensorshipNotifyUrl,omitempty" name:"PornCensorshipNotifyUrl"` + + // 回调 Key,回调 URL 公用,回调签名详见事件消息通知文档。 + // [事件消息通知](/document/product/267/32744)。 + CallbackKey *string `json:"CallbackKey,omitempty" name:"CallbackKey"` + + // 参数已弃用。 + StreamMixNotifyUrl *string `json:"StreamMixNotifyUrl,omitempty" name:"StreamMixNotifyUrl"` +} + +type CreateLiveCallbackTemplateRequest struct { + *tchttp.BaseRequest + + // 模板名称。 + // 长度上限:255字节。 + // 仅支持中文、英文、数字、_、-。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + // 长度上限:1024字节。 + // 仅支持中文、英文、数字、_、-。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 开播回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32744)。 + StreamBeginNotifyUrl *string `json:"StreamBeginNotifyUrl,omitempty" name:"StreamBeginNotifyUrl"` + + // 断流回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32744)。 + StreamEndNotifyUrl *string `json:"StreamEndNotifyUrl,omitempty" name:"StreamEndNotifyUrl"` + + // 录制回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32744)。 + RecordNotifyUrl *string `json:"RecordNotifyUrl,omitempty" name:"RecordNotifyUrl"` + + // 截图回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32744)。 + SnapshotNotifyUrl *string `json:"SnapshotNotifyUrl,omitempty" name:"SnapshotNotifyUrl"` + + // 鉴黄回调 URL, + // 相关协议文档:[事件消息通知](/document/product/267/32741)。 + PornCensorshipNotifyUrl *string `json:"PornCensorshipNotifyUrl,omitempty" name:"PornCensorshipNotifyUrl"` + + // 回调 Key,回调 URL 公用,回调签名详见事件消息通知文档。 + // [事件消息通知](/document/product/267/32744)。 + CallbackKey *string `json:"CallbackKey,omitempty" name:"CallbackKey"` + + // 参数已弃用。 + StreamMixNotifyUrl *string `json:"StreamMixNotifyUrl,omitempty" name:"StreamMixNotifyUrl"` +} + +func (r *CreateLiveCallbackTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveCallbackTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateName") + delete(f, "Description") + delete(f, "StreamBeginNotifyUrl") + delete(f, "StreamEndNotifyUrl") + delete(f, "RecordNotifyUrl") + delete(f, "SnapshotNotifyUrl") + delete(f, "PornCensorshipNotifyUrl") + delete(f, "CallbackKey") + delete(f, "StreamMixNotifyUrl") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveCallbackTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveCallbackTemplateResponseParams struct { + // 模板ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveCallbackTemplateResponse struct { + *tchttp.BaseResponse + Response *CreateLiveCallbackTemplateResponseParams `json:"Response"` +} + +func (r *CreateLiveCallbackTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveCallbackTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLivePullStreamTaskRequestParams struct { + // 拉流源的类型: + // PullLivePushLive -直播, + // PullVodPushLive -点播。 + SourceType *string `json:"SourceType,omitempty" name:"SourceType"` + + // 拉流源 url 列表。 + // SourceType 为直播(PullLivePushLive)只可以填1个, + // SourceType 为点播(PullVodPushLive)可以填多个,上限30个。 + // 当前支持的文件格式:flv,mp4,hls。 + // 当前支持的拉流协议:http,https,rtmp,rtmps,rtsp,srt。 + // 注意: + // 1. 建议优先使用 flv 文件,对于 mp4 未交织好的文件轮播推流易产生卡顿,可通过点播转码进行重新交织后再轮播。 + // 2. 拒绝内网域名等攻击性拉流地址,如有使用,则做账号封禁处理。 + // 3. 源文件请保持时间戳正常交织递增,避免因源文件异常影响推流及播放。 + // 4. 视频编码格式仅支持: H264, H265。 + // 5. 音频编码格式仅支持: AAC。 + // 6. 点播源请使用小文件,尽量时长保持在1小时内,较大文件打开和续播耗时较久,耗时超过15秒会有无法正常转推风险。 + SourceUrls []*string `json:"SourceUrls,omitempty" name:"SourceUrls"` + + // 推流域名。 + // 将拉取过来的流推到该域名。 + // 注意:如果目标地址为非云直播,且样式不同于云直播,请使用 ToUrl 传入完整推流地址,详细用法请参考 ToUrl 参数说明。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + // 将拉取过来的流推到该路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流名称。 + // 将拉取过来的流推到该流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 开始时间。 + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,注意: + // 1. 结束时间必须大于开始时间; + // 2. 结束时间和开始时间必须大于当前时间; + // 3. 结束时间 和 开始时间 间隔必须小于七天。 + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 任务操作人备注。 + Operator *string `json:"Operator,omitempty" name:"Operator"` + + // 推流参数。 + // 推流时携带自定义参数。 + // 示例: + // bak=1&test=2 。 + PushArgs *string `json:"PushArgs,omitempty" name:"PushArgs"` + + // 选择需要回调的事件(不填则回调全部): + // TaskStart:任务启动回调, + // TaskExit:任务停止回调, + // VodSourceFileStart:从点播源文件开始拉流回调, + // VodSourceFileFinish:从点播源文件拉流结束回调, + // ResetTaskConfig:任务更新回调。 + // + // TaskAlarm: 用于告警事件通知,AlarmType 示例: + // PullFileUnstable - 文件拉取不稳定, + // PushStreamUnstable - 推流不稳定, + // PullFileFailed - 文件拉取出错, + // PushStreamFailed - 推流出现失败, + // FileEndEarly - 文件提前结束。 + CallbackEvents []*string `json:"CallbackEvents,omitempty" name:"CallbackEvents"` + + // 点播拉流转推循环次数。默认:-1。 + // -1:无限循环,直到任务结束。 + // 0:不循环。 + // >0:具体循环次数。次数和时间以先结束的为准。 + // 注意:该配置仅对拉流源为点播时生效。 + VodLoopTimes *string `json:"VodLoopTimes,omitempty" name:"VodLoopTimes"` + + // 点播更新SourceUrls后的播放方式: + // ImmediateNewSource:立即播放新的拉流源内容; + // ContinueBreakPoint:播放完当前正在播放的点播 url 后再使用新的拉流源播放。(旧拉流源未播放的点播 url 不会再播放) + // + // 注意:该配置生效仅对变更前拉流源为点播时生效。 + VodRefreshType *string `json:"VodRefreshType,omitempty" name:"VodRefreshType"` + + // 自定义回调地址。 + // 拉流转推任务相关事件会回调到该地址。 + CallbackUrl *string `json:"CallbackUrl,omitempty" name:"CallbackUrl"` + + // 其他参数。 + // 示例: ignore_region 用于忽略传入地域, 内部按负载分配。 + ExtraCmd *string `json:"ExtraCmd,omitempty" name:"ExtraCmd"` + + // 任务描述,限制 512 字节。 + Comment *string `json:"Comment,omitempty" name:"Comment"` + + // 完整目标 URL 地址。 + // 用法注意:如果使用该参数来传完整目标地址,则 DomainName, AppName, StreamName 需要传入空字符串,任务将会使用该 ToUrl 参数指定的目标地址。 + // + // 注意:签名时间需要超过任务结束时间,避免因签名过期造成任务失败。 + ToUrl *string `json:"ToUrl,omitempty" name:"ToUrl"` + + // 备源的类型: + // PullLivePushLive -直播, + // PullVodPushLive -点播。 + // 注意: + // 1. 仅当主源类型为直播源时,备源才会生效。 + // 2. 主直播源拉流中断时,自动使用备源进行拉流。 + // 3. 如果备源为点播文件时,则每次轮播完点播文件就检查主源是否恢复,如果主源恢复则自动切回到主源,否则继续拉备源。 + BackupSourceType *string `json:"BackupSourceType,omitempty" name:"BackupSourceType"` + + // 备源 URL。 + // 只允许填一个备源 URL + BackupSourceUrl *string `json:"BackupSourceUrl,omitempty" name:"BackupSourceUrl"` + + // 水印信息列表。 + // 注意: + // 1. 最多支持4个不同位置的水印。 + // 2. 水印图片 URL 请使用合法外网可访问地址。 + // 3. 支持的水印图片格式:png,jpg,gif 等。 + WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` +} + +type CreateLivePullStreamTaskRequest struct { + *tchttp.BaseRequest + + // 拉流源的类型: + // PullLivePushLive -直播, + // PullVodPushLive -点播。 + SourceType *string `json:"SourceType,omitempty" name:"SourceType"` + + // 拉流源 url 列表。 + // SourceType 为直播(PullLivePushLive)只可以填1个, + // SourceType 为点播(PullVodPushLive)可以填多个,上限30个。 + // 当前支持的文件格式:flv,mp4,hls。 + // 当前支持的拉流协议:http,https,rtmp,rtmps,rtsp,srt。 + // 注意: + // 1. 建议优先使用 flv 文件,对于 mp4 未交织好的文件轮播推流易产生卡顿,可通过点播转码进行重新交织后再轮播。 + // 2. 拒绝内网域名等攻击性拉流地址,如有使用,则做账号封禁处理。 + // 3. 源文件请保持时间戳正常交织递增,避免因源文件异常影响推流及播放。 + // 4. 视频编码格式仅支持: H264, H265。 + // 5. 音频编码格式仅支持: AAC。 + // 6. 点播源请使用小文件,尽量时长保持在1小时内,较大文件打开和续播耗时较久,耗时超过15秒会有无法正常转推风险。 + SourceUrls []*string `json:"SourceUrls,omitempty" name:"SourceUrls"` + + // 推流域名。 + // 将拉取过来的流推到该域名。 + // 注意:如果目标地址为非云直播,且样式不同于云直播,请使用 ToUrl 传入完整推流地址,详细用法请参考 ToUrl 参数说明。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + // 将拉取过来的流推到该路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流名称。 + // 将拉取过来的流推到该流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 开始时间。 + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,注意: + // 1. 结束时间必须大于开始时间; + // 2. 结束时间和开始时间必须大于当前时间; + // 3. 结束时间 和 开始时间 间隔必须小于七天。 + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 任务操作人备注。 + Operator *string `json:"Operator,omitempty" name:"Operator"` + + // 推流参数。 + // 推流时携带自定义参数。 + // 示例: + // bak=1&test=2 。 + PushArgs *string `json:"PushArgs,omitempty" name:"PushArgs"` + + // 选择需要回调的事件(不填则回调全部): + // TaskStart:任务启动回调, + // TaskExit:任务停止回调, + // VodSourceFileStart:从点播源文件开始拉流回调, + // VodSourceFileFinish:从点播源文件拉流结束回调, + // ResetTaskConfig:任务更新回调。 + // + // TaskAlarm: 用于告警事件通知,AlarmType 示例: + // PullFileUnstable - 文件拉取不稳定, + // PushStreamUnstable - 推流不稳定, + // PullFileFailed - 文件拉取出错, + // PushStreamFailed - 推流出现失败, + // FileEndEarly - 文件提前结束。 + CallbackEvents []*string `json:"CallbackEvents,omitempty" name:"CallbackEvents"` + + // 点播拉流转推循环次数。默认:-1。 + // -1:无限循环,直到任务结束。 + // 0:不循环。 + // >0:具体循环次数。次数和时间以先结束的为准。 + // 注意:该配置仅对拉流源为点播时生效。 + VodLoopTimes *string `json:"VodLoopTimes,omitempty" name:"VodLoopTimes"` + + // 点播更新SourceUrls后的播放方式: + // ImmediateNewSource:立即播放新的拉流源内容; + // ContinueBreakPoint:播放完当前正在播放的点播 url 后再使用新的拉流源播放。(旧拉流源未播放的点播 url 不会再播放) + // + // 注意:该配置生效仅对变更前拉流源为点播时生效。 + VodRefreshType *string `json:"VodRefreshType,omitempty" name:"VodRefreshType"` + + // 自定义回调地址。 + // 拉流转推任务相关事件会回调到该地址。 + CallbackUrl *string `json:"CallbackUrl,omitempty" name:"CallbackUrl"` + + // 其他参数。 + // 示例: ignore_region 用于忽略传入地域, 内部按负载分配。 + ExtraCmd *string `json:"ExtraCmd,omitempty" name:"ExtraCmd"` + + // 任务描述,限制 512 字节。 + Comment *string `json:"Comment,omitempty" name:"Comment"` + + // 完整目标 URL 地址。 + // 用法注意:如果使用该参数来传完整目标地址,则 DomainName, AppName, StreamName 需要传入空字符串,任务将会使用该 ToUrl 参数指定的目标地址。 + // + // 注意:签名时间需要超过任务结束时间,避免因签名过期造成任务失败。 + ToUrl *string `json:"ToUrl,omitempty" name:"ToUrl"` + + // 备源的类型: + // PullLivePushLive -直播, + // PullVodPushLive -点播。 + // 注意: + // 1. 仅当主源类型为直播源时,备源才会生效。 + // 2. 主直播源拉流中断时,自动使用备源进行拉流。 + // 3. 如果备源为点播文件时,则每次轮播完点播文件就检查主源是否恢复,如果主源恢复则自动切回到主源,否则继续拉备源。 + BackupSourceType *string `json:"BackupSourceType,omitempty" name:"BackupSourceType"` + + // 备源 URL。 + // 只允许填一个备源 URL + BackupSourceUrl *string `json:"BackupSourceUrl,omitempty" name:"BackupSourceUrl"` + + // 水印信息列表。 + // 注意: + // 1. 最多支持4个不同位置的水印。 + // 2. 水印图片 URL 请使用合法外网可访问地址。 + // 3. 支持的水印图片格式:png,jpg,gif 等。 + WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` +} + +func (r *CreateLivePullStreamTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLivePullStreamTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "SourceType") + delete(f, "SourceUrls") + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "StreamName") + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "Operator") + delete(f, "PushArgs") + delete(f, "CallbackEvents") + delete(f, "VodLoopTimes") + delete(f, "VodRefreshType") + delete(f, "CallbackUrl") + delete(f, "ExtraCmd") + delete(f, "Comment") + delete(f, "ToUrl") + delete(f, "BackupSourceType") + delete(f, "BackupSourceUrl") + delete(f, "WatermarkList") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLivePullStreamTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLivePullStreamTaskResponseParams struct { + // 任务 Id 。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLivePullStreamTaskResponse struct { + *tchttp.BaseResponse + Response *CreateLivePullStreamTaskResponseParams `json:"Response"` +} + +func (r *CreateLivePullStreamTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLivePullStreamTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveRecordRequestParams struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流路径,与推流和播放地址中的 AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。多域名推流必须设置。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 录制开始时间。中国标准时间,需要 URLEncode(rfc3986)。如 2017-01-01 10:10:01,编码为:2017-01-01+10%3a10%3a01。 + // 定时录制模式,必须设置该字段;实时视频录制模式,忽略该字段。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 录制结束时间。中国标准时间,需要 URLEncode(rfc3986)。如 2017-01-01 10:30:01,编码为:2017-01-01+10%3a30%3a01。 + // 定时录制模式,必须设置该字段;实时录制模式,为可选字段。如果通过Highlight参数,设置录制为实时视频录制模式,其设置的结束时间不应超过当前时间+30分钟,如果设置的结束时间超过当前时间+30分钟或者小于当前时间或者不设置该参数,则实际结束时间为当前时间+30分钟。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 录制类型。 + // “video” : 音视频录制【默认】。 + // “audio” : 纯音频录制。 + // 在定时录制模式或实时视频录制模式下,该参数均有效,不区分大小写。 + RecordType *string `json:"RecordType,omitempty" name:"RecordType"` + + // 录制文件格式。其值为: + // “flv”【默认】,“hls”,”mp4”,“aac”,”mp3”。 + // 在定时录制模式或实时视频录制模式下,该参数均有效,不区分大小写。 + FileFormat *string `json:"FileFormat,omitempty" name:"FileFormat"` + + // 开启实时视频录制模式标志。 + // 0:不开启实时视频录制模式,即定时录制模式【默认】。见[示例一](#.E7.A4.BA.E4.BE.8B1-.E5.88.9B.E5.BB.BA.E5.AE.9A.E6.97.B6.E5.BD.95.E5.88.B6.E4.BB.BB.E5.8A.A1)。 + // 1:开启实时视频录制模式。见[示例二](#.E7.A4.BA.E4.BE.8B2-.E5.88.9B.E5.BB.BA.E5.AE.9E.E6.97.B6.E5.BD.95.E5.88.B6.E4.BB.BB.E5.8A.A1)。 + Highlight *int64 `json:"Highlight,omitempty" name:"Highlight"` + + // 开启 A+B=C混流C流录制标志。 + // 0:不开启 A+B=C混流C流录制【默认】。 + // 1:开启 A+B=C混流C流录制。 + // 在定时录制模式或实时视频录制模式下,该参数均有效。 + MixStream *int64 `json:"MixStream,omitempty" name:"MixStream"` + + // 录制流参数。当前支持以下参数: + // record_interval - 录制分片时长,单位 秒,1800 - 7200。 + // storage_time - 录制文件存储时长,单位 秒。 + // eg. record_interval=3600&storage_time=2592000。 + // 注:参数需要url encode。 + // 在定时录制模式或实时视频录制模式下,该参数均有效。 + StreamParam *string `json:"StreamParam,omitempty" name:"StreamParam"` +} + +type CreateLiveRecordRequest struct { + *tchttp.BaseRequest + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流路径,与推流和播放地址中的 AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。多域名推流必须设置。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 录制开始时间。中国标准时间,需要 URLEncode(rfc3986)。如 2017-01-01 10:10:01,编码为:2017-01-01+10%3a10%3a01。 + // 定时录制模式,必须设置该字段;实时视频录制模式,忽略该字段。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 录制结束时间。中国标准时间,需要 URLEncode(rfc3986)。如 2017-01-01 10:30:01,编码为:2017-01-01+10%3a30%3a01。 + // 定时录制模式,必须设置该字段;实时录制模式,为可选字段。如果通过Highlight参数,设置录制为实时视频录制模式,其设置的结束时间不应超过当前时间+30分钟,如果设置的结束时间超过当前时间+30分钟或者小于当前时间或者不设置该参数,则实际结束时间为当前时间+30分钟。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 录制类型。 + // “video” : 音视频录制【默认】。 + // “audio” : 纯音频录制。 + // 在定时录制模式或实时视频录制模式下,该参数均有效,不区分大小写。 + RecordType *string `json:"RecordType,omitempty" name:"RecordType"` + + // 录制文件格式。其值为: + // “flv”【默认】,“hls”,”mp4”,“aac”,”mp3”。 + // 在定时录制模式或实时视频录制模式下,该参数均有效,不区分大小写。 + FileFormat *string `json:"FileFormat,omitempty" name:"FileFormat"` + + // 开启实时视频录制模式标志。 + // 0:不开启实时视频录制模式,即定时录制模式【默认】。见[示例一](#.E7.A4.BA.E4.BE.8B1-.E5.88.9B.E5.BB.BA.E5.AE.9A.E6.97.B6.E5.BD.95.E5.88.B6.E4.BB.BB.E5.8A.A1)。 + // 1:开启实时视频录制模式。见[示例二](#.E7.A4.BA.E4.BE.8B2-.E5.88.9B.E5.BB.BA.E5.AE.9E.E6.97.B6.E5.BD.95.E5.88.B6.E4.BB.BB.E5.8A.A1)。 + Highlight *int64 `json:"Highlight,omitempty" name:"Highlight"` + + // 开启 A+B=C混流C流录制标志。 + // 0:不开启 A+B=C混流C流录制【默认】。 + // 1:开启 A+B=C混流C流录制。 + // 在定时录制模式或实时视频录制模式下,该参数均有效。 + MixStream *int64 `json:"MixStream,omitempty" name:"MixStream"` + + // 录制流参数。当前支持以下参数: + // record_interval - 录制分片时长,单位 秒,1800 - 7200。 + // storage_time - 录制文件存储时长,单位 秒。 + // eg. record_interval=3600&storage_time=2592000。 + // 注:参数需要url encode。 + // 在定时录制模式或实时视频录制模式下,该参数均有效。 + StreamParam *string `json:"StreamParam,omitempty" name:"StreamParam"` +} + +func (r *CreateLiveRecordRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveRecordRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StreamName") + delete(f, "AppName") + delete(f, "DomainName") + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "RecordType") + delete(f, "FileFormat") + delete(f, "Highlight") + delete(f, "MixStream") + delete(f, "StreamParam") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveRecordRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveRecordResponseParams struct { + // 任务 ID,全局唯一标识录制任务。 + TaskId *uint64 `json:"TaskId,omitempty" name:"TaskId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveRecordResponse struct { + *tchttp.BaseResponse + Response *CreateLiveRecordResponseParams `json:"Response"` +} + +func (r *CreateLiveRecordResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveRecordResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveRecordRuleRequestParams struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + // 注:如果本参数设置为非空字符串,规则将只对此推流起作用。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type CreateLiveRecordRuleRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + // 注:如果本参数设置为非空字符串,规则将只对此推流起作用。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *CreateLiveRecordRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveRecordRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "TemplateId") + delete(f, "AppName") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveRecordRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveRecordRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveRecordRuleResponse struct { + *tchttp.BaseResponse + Response *CreateLiveRecordRuleResponseParams `json:"Response"` +} + +func (r *CreateLiveRecordRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveRecordRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveRecordTemplateRequestParams struct { + // 模板名。仅支持中文、英文、数字、_、-。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // Flv录制参数,开启Flv录制时设置。 + FlvParam *RecordParam `json:"FlvParam,omitempty" name:"FlvParam"` + + // Hls录制参数,开启hls录制时设置。 + HlsParam *RecordParam `json:"HlsParam,omitempty" name:"HlsParam"` + + // Mp4录制参数,开启Mp4录制时设置。 + Mp4Param *RecordParam `json:"Mp4Param,omitempty" name:"Mp4Param"` + + // Aac录制参数,开启Aac录制时设置。 + AacParam *RecordParam `json:"AacParam,omitempty" name:"AacParam"` + + // 直播类型,默认 0。 + // 0:普通直播, + // 1:慢直播。 + IsDelayLive *int64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` + + // HLS专属录制参数。 + HlsSpecialParam *HlsSpecialParam `json:"HlsSpecialParam,omitempty" name:"HlsSpecialParam"` + + // Mp3录制参数,开启Mp3录制时设置。 + Mp3Param *RecordParam `json:"Mp3Param,omitempty" name:"Mp3Param"` + + // 是否去除水印,类型为慢直播时此参数无效。 + RemoveWatermark *bool `json:"RemoveWatermark,omitempty" name:"RemoveWatermark"` + + // FLV 录制特殊参数。 + FlvSpecialParam *FlvSpecialParam `json:"FlvSpecialParam,omitempty" name:"FlvSpecialParam"` +} + +type CreateLiveRecordTemplateRequest struct { + *tchttp.BaseRequest + + // 模板名。仅支持中文、英文、数字、_、-。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // Flv录制参数,开启Flv录制时设置。 + FlvParam *RecordParam `json:"FlvParam,omitempty" name:"FlvParam"` + + // Hls录制参数,开启hls录制时设置。 + HlsParam *RecordParam `json:"HlsParam,omitempty" name:"HlsParam"` + + // Mp4录制参数,开启Mp4录制时设置。 + Mp4Param *RecordParam `json:"Mp4Param,omitempty" name:"Mp4Param"` + + // Aac录制参数,开启Aac录制时设置。 + AacParam *RecordParam `json:"AacParam,omitempty" name:"AacParam"` + + // 直播类型,默认 0。 + // 0:普通直播, + // 1:慢直播。 + IsDelayLive *int64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` + + // HLS专属录制参数。 + HlsSpecialParam *HlsSpecialParam `json:"HlsSpecialParam,omitempty" name:"HlsSpecialParam"` + + // Mp3录制参数,开启Mp3录制时设置。 + Mp3Param *RecordParam `json:"Mp3Param,omitempty" name:"Mp3Param"` + + // 是否去除水印,类型为慢直播时此参数无效。 + RemoveWatermark *bool `json:"RemoveWatermark,omitempty" name:"RemoveWatermark"` + + // FLV 录制特殊参数。 + FlvSpecialParam *FlvSpecialParam `json:"FlvSpecialParam,omitempty" name:"FlvSpecialParam"` +} + +func (r *CreateLiveRecordTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveRecordTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateName") + delete(f, "Description") + delete(f, "FlvParam") + delete(f, "HlsParam") + delete(f, "Mp4Param") + delete(f, "AacParam") + delete(f, "IsDelayLive") + delete(f, "HlsSpecialParam") + delete(f, "Mp3Param") + delete(f, "RemoveWatermark") + delete(f, "FlvSpecialParam") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveRecordTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveRecordTemplateResponseParams struct { + // 模板Id。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveRecordTemplateResponse struct { + *tchttp.BaseResponse + Response *CreateLiveRecordTemplateResponseParams `json:"Response"` +} + +func (r *CreateLiveRecordTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveRecordTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveSnapshotRuleRequestParams struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + // 注:如果本参数设置为非空字符串,规则将只对此推流起作用。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type CreateLiveSnapshotRuleRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + // 注:如果本参数设置为非空字符串,规则将只对此推流起作用。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *CreateLiveSnapshotRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveSnapshotRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "TemplateId") + delete(f, "AppName") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveSnapshotRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveSnapshotRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveSnapshotRuleResponse struct { + *tchttp.BaseResponse + Response *CreateLiveSnapshotRuleResponseParams `json:"Response"` +} + +func (r *CreateLiveSnapshotRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveSnapshotRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveSnapshotTemplateRequestParams struct { + // 模板名称。 + // 长度上限:255字节。 + // 仅支持中文、英文、数字、_、-。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // Cos 应用 ID。 + CosAppId *int64 `json:"CosAppId,omitempty" name:"CosAppId"` + + // Cos Bucket名称。 + // 注:CosBucket参数值不能包含-[appid] 部分。 + CosBucket *string `json:"CosBucket,omitempty" name:"CosBucket"` + + // Cos地区。 + CosRegion *string `json:"CosRegion,omitempty" name:"CosRegion"` + + // 描述信息。 + // 长度上限:1024字节。 + // 仅支持中文、英文、数字、_、-。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 截图间隔,单位s,默认10s。 + // 范围: 2s ~ 300s。 + SnapshotInterval *int64 `json:"SnapshotInterval,omitempty" name:"SnapshotInterval"` + + // 截图宽度。默认:0(原始宽)。 + // 范围:0-3000 。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 截图高度。默认:0(原始高)。 + // 范围:0-2000 。 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 是否开启鉴黄,0:不开启,1:开启。默认:0。 + PornFlag *int64 `json:"PornFlag,omitempty" name:"PornFlag"` + + // Cos Bucket文件夹前缀。 + // 如不传,实际按默认值 + // /{Year}-{Month}-{Day} + // 生效 + CosPrefix *string `json:"CosPrefix,omitempty" name:"CosPrefix"` + + // Cos 文件名称。 + // 如不传,实际按默认值 + // {StreamID}-screenshot-{Hour}-{Minute}-{Second}-{Width}x{Height}{Ext} + // 生效 + CosFileName *string `json:"CosFileName,omitempty" name:"CosFileName"` +} + +type CreateLiveSnapshotTemplateRequest struct { + *tchttp.BaseRequest + + // 模板名称。 + // 长度上限:255字节。 + // 仅支持中文、英文、数字、_、-。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // Cos 应用 ID。 + CosAppId *int64 `json:"CosAppId,omitempty" name:"CosAppId"` + + // Cos Bucket名称。 + // 注:CosBucket参数值不能包含-[appid] 部分。 + CosBucket *string `json:"CosBucket,omitempty" name:"CosBucket"` + + // Cos地区。 + CosRegion *string `json:"CosRegion,omitempty" name:"CosRegion"` + + // 描述信息。 + // 长度上限:1024字节。 + // 仅支持中文、英文、数字、_、-。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 截图间隔,单位s,默认10s。 + // 范围: 2s ~ 300s。 + SnapshotInterval *int64 `json:"SnapshotInterval,omitempty" name:"SnapshotInterval"` + + // 截图宽度。默认:0(原始宽)。 + // 范围:0-3000 。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 截图高度。默认:0(原始高)。 + // 范围:0-2000 。 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 是否开启鉴黄,0:不开启,1:开启。默认:0。 + PornFlag *int64 `json:"PornFlag,omitempty" name:"PornFlag"` + + // Cos Bucket文件夹前缀。 + // 如不传,实际按默认值 + // /{Year}-{Month}-{Day} + // 生效 + CosPrefix *string `json:"CosPrefix,omitempty" name:"CosPrefix"` + + // Cos 文件名称。 + // 如不传,实际按默认值 + // {StreamID}-screenshot-{Hour}-{Minute}-{Second}-{Width}x{Height}{Ext} + // 生效 + CosFileName *string `json:"CosFileName,omitempty" name:"CosFileName"` +} + +func (r *CreateLiveSnapshotTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveSnapshotTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateName") + delete(f, "CosAppId") + delete(f, "CosBucket") + delete(f, "CosRegion") + delete(f, "Description") + delete(f, "SnapshotInterval") + delete(f, "Width") + delete(f, "Height") + delete(f, "PornFlag") + delete(f, "CosPrefix") + delete(f, "CosFileName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveSnapshotTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveSnapshotTemplateResponseParams struct { + // 模板Id。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveSnapshotTemplateResponse struct { + *tchttp.BaseResponse + Response *CreateLiveSnapshotTemplateResponseParams `json:"Response"` +} + +func (r *CreateLiveSnapshotTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveSnapshotTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveTranscodeRuleRequestParams struct { + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致。如果只绑定域名,则此处填空。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。如果只绑定域名或路径,则此处填空。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 指定已有的模板Id。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type CreateLiveTranscodeRuleRequest struct { + *tchttp.BaseRequest + + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致。如果只绑定域名,则此处填空。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。如果只绑定域名或路径,则此处填空。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 指定已有的模板Id。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *CreateLiveTranscodeRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveTranscodeRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "StreamName") + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveTranscodeRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveTranscodeRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveTranscodeRuleResponse struct { + *tchttp.BaseResponse + Response *CreateLiveTranscodeRuleResponseParams `json:"Response"` +} + +func (r *CreateLiveTranscodeRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveTranscodeRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveTranscodeTemplateRequestParams struct { + // 模板名称,例: 900p 仅支持字母和数字的组合。 + // 长度限制: + // 标准转码:1-10个字符 + // 极速高清转码:3-10个字符 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 视频码率。范围:0kbps - 8000kbps。 + // 0为保持原始码率。 + // 注: 转码模板有码率唯一要求,最终保存的码率可能与输入码率有所差别。 + VideoBitrate *int64 `json:"VideoBitrate,omitempty" name:"VideoBitrate"` + + // 音频编码:aac,默认aac。 + // 注意:当前该参数未生效,待后续支持! + Acodec *string `json:"Acodec,omitempty" name:"Acodec"` + + // 音频码率,默认0。 + // 范围:0-500。 + AudioBitrate *int64 `json:"AudioBitrate,omitempty" name:"AudioBitrate"` + + // 视频编码:h264/h265/origin,默认origin。 + // + // origin: 保持原始编码格式 + Vcodec *string `json:"Vcodec,omitempty" name:"Vcodec"` + + // 模板描述。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 是否保留视频,0:否,1:是。默认1。 + NeedVideo *int64 `json:"NeedVideo,omitempty" name:"NeedVideo"` + + // 宽,默认0。 + // 范围[0-3000] + // 数值必须是2的倍数,0是原始宽度 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 是否保留音频,0:否,1:是。默认1。 + NeedAudio *int64 `json:"NeedAudio,omitempty" name:"NeedAudio"` + + // 高,默认0。 + // 范围[0-3000] + // 数值必须是2的倍数,0是原始高度。 + // 极速高清模板(AiTransCode = 1 的时候)必须传。 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 帧率,默认0。 + // 范围0-60fps + Fps *int64 `json:"Fps,omitempty" name:"Fps"` + + // 关键帧间隔,单位:秒。 + // 默认原始的间隔 + // 范围2-6 + Gop *int64 `json:"Gop,omitempty" name:"Gop"` + + // 旋转角度,默认0。 + // 可取值:0,90,180,270 + Rotate *int64 `json:"Rotate,omitempty" name:"Rotate"` + + // 编码质量: + // baseline/main/high。默认baseline + Profile *string `json:"Profile,omitempty" name:"Profile"` + + // 当设置的码率>原始码率时,是否以原始码率为准。 + // 0:否, 1:是 + // 默认 0。 + BitrateToOrig *int64 `json:"BitrateToOrig,omitempty" name:"BitrateToOrig"` + + // 当设置的高度>原始高度时,是否以原始高度为准。 + // 0:否, 1:是 + // 默认 0。 + HeightToOrig *int64 `json:"HeightToOrig,omitempty" name:"HeightToOrig"` + + // 当设置的帧率>原始帧率时,是否以原始帧率为准。 + // 0:否, 1:是 + // 默认 0。 + FpsToOrig *int64 `json:"FpsToOrig,omitempty" name:"FpsToOrig"` + + // 是否是极速高清模板,0:否,1:是。默认0。 + AiTransCode *int64 `json:"AiTransCode,omitempty" name:"AiTransCode"` + + // 极速高清视频码率压缩比。 + // 极速高清目标码率=VideoBitrate * (1-AdaptBitratePercent) + // + // 取值范围:0.0到0.5 + AdaptBitratePercent *float64 `json:"AdaptBitratePercent,omitempty" name:"AdaptBitratePercent"` + + // 是否以短边作为高度,0:否,1:是。默认0。 + ShortEdgeAsHeight *int64 `json:"ShortEdgeAsHeight,omitempty" name:"ShortEdgeAsHeight"` + + // DRM 加密类型,可选值:fairplay、normalaes、widevine。 + // 不传递或着为空字符串,清空之前的DRM配置。 + DRMType *string `json:"DRMType,omitempty" name:"DRMType"` + + // DRM 加密项,可选值:AUDIO、SD、HD、UHD1、UHD2,后四个为一组,同组中的内容只能选一个。 + // 不传递或着为空字符串,清空之前的DRM配置。 + DRMTracks *string `json:"DRMTracks,omitempty" name:"DRMTracks"` +} + +type CreateLiveTranscodeTemplateRequest struct { + *tchttp.BaseRequest + + // 模板名称,例: 900p 仅支持字母和数字的组合。 + // 长度限制: + // 标准转码:1-10个字符 + // 极速高清转码:3-10个字符 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 视频码率。范围:0kbps - 8000kbps。 + // 0为保持原始码率。 + // 注: 转码模板有码率唯一要求,最终保存的码率可能与输入码率有所差别。 + VideoBitrate *int64 `json:"VideoBitrate,omitempty" name:"VideoBitrate"` + + // 音频编码:aac,默认aac。 + // 注意:当前该参数未生效,待后续支持! + Acodec *string `json:"Acodec,omitempty" name:"Acodec"` + + // 音频码率,默认0。 + // 范围:0-500。 + AudioBitrate *int64 `json:"AudioBitrate,omitempty" name:"AudioBitrate"` + + // 视频编码:h264/h265/origin,默认origin。 + // + // origin: 保持原始编码格式 + Vcodec *string `json:"Vcodec,omitempty" name:"Vcodec"` + + // 模板描述。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 是否保留视频,0:否,1:是。默认1。 + NeedVideo *int64 `json:"NeedVideo,omitempty" name:"NeedVideo"` + + // 宽,默认0。 + // 范围[0-3000] + // 数值必须是2的倍数,0是原始宽度 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 是否保留音频,0:否,1:是。默认1。 + NeedAudio *int64 `json:"NeedAudio,omitempty" name:"NeedAudio"` + + // 高,默认0。 + // 范围[0-3000] + // 数值必须是2的倍数,0是原始高度。 + // 极速高清模板(AiTransCode = 1 的时候)必须传。 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 帧率,默认0。 + // 范围0-60fps + Fps *int64 `json:"Fps,omitempty" name:"Fps"` + + // 关键帧间隔,单位:秒。 + // 默认原始的间隔 + // 范围2-6 + Gop *int64 `json:"Gop,omitempty" name:"Gop"` + + // 旋转角度,默认0。 + // 可取值:0,90,180,270 + Rotate *int64 `json:"Rotate,omitempty" name:"Rotate"` + + // 编码质量: + // baseline/main/high。默认baseline + Profile *string `json:"Profile,omitempty" name:"Profile"` + + // 当设置的码率>原始码率时,是否以原始码率为准。 + // 0:否, 1:是 + // 默认 0。 + BitrateToOrig *int64 `json:"BitrateToOrig,omitempty" name:"BitrateToOrig"` + + // 当设置的高度>原始高度时,是否以原始高度为准。 + // 0:否, 1:是 + // 默认 0。 + HeightToOrig *int64 `json:"HeightToOrig,omitempty" name:"HeightToOrig"` + + // 当设置的帧率>原始帧率时,是否以原始帧率为准。 + // 0:否, 1:是 + // 默认 0。 + FpsToOrig *int64 `json:"FpsToOrig,omitempty" name:"FpsToOrig"` + + // 是否是极速高清模板,0:否,1:是。默认0。 + AiTransCode *int64 `json:"AiTransCode,omitempty" name:"AiTransCode"` + + // 极速高清视频码率压缩比。 + // 极速高清目标码率=VideoBitrate * (1-AdaptBitratePercent) + // + // 取值范围:0.0到0.5 + AdaptBitratePercent *float64 `json:"AdaptBitratePercent,omitempty" name:"AdaptBitratePercent"` + + // 是否以短边作为高度,0:否,1:是。默认0。 + ShortEdgeAsHeight *int64 `json:"ShortEdgeAsHeight,omitempty" name:"ShortEdgeAsHeight"` + + // DRM 加密类型,可选值:fairplay、normalaes、widevine。 + // 不传递或着为空字符串,清空之前的DRM配置。 + DRMType *string `json:"DRMType,omitempty" name:"DRMType"` + + // DRM 加密项,可选值:AUDIO、SD、HD、UHD1、UHD2,后四个为一组,同组中的内容只能选一个。 + // 不传递或着为空字符串,清空之前的DRM配置。 + DRMTracks *string `json:"DRMTracks,omitempty" name:"DRMTracks"` +} + +func (r *CreateLiveTranscodeTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveTranscodeTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateName") + delete(f, "VideoBitrate") + delete(f, "Acodec") + delete(f, "AudioBitrate") + delete(f, "Vcodec") + delete(f, "Description") + delete(f, "NeedVideo") + delete(f, "Width") + delete(f, "NeedAudio") + delete(f, "Height") + delete(f, "Fps") + delete(f, "Gop") + delete(f, "Rotate") + delete(f, "Profile") + delete(f, "BitrateToOrig") + delete(f, "HeightToOrig") + delete(f, "FpsToOrig") + delete(f, "AiTransCode") + delete(f, "AdaptBitratePercent") + delete(f, "ShortEdgeAsHeight") + delete(f, "DRMType") + delete(f, "DRMTracks") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveTranscodeTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveTranscodeTemplateResponseParams struct { + // 模板Id。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveTranscodeTemplateResponse struct { + *tchttp.BaseResponse + Response *CreateLiveTranscodeTemplateResponseParams `json:"Response"` +} + +func (r *CreateLiveTranscodeTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveTranscodeTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveWatermarkRuleRequestParams struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 水印Id,即调用[AddLiveWatermark](/document/product/267/30154)接口返回的WatermarkId。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type CreateLiveWatermarkRuleRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 水印Id,即调用[AddLiveWatermark](/document/product/267/30154)接口返回的WatermarkId。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *CreateLiveWatermarkRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveWatermarkRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "StreamName") + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLiveWatermarkRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateLiveWatermarkRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateLiveWatermarkRuleResponse struct { + *tchttp.BaseResponse + Response *CreateLiveWatermarkRuleResponseParams `json:"Response"` +} + +func (r *CreateLiveWatermarkRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateLiveWatermarkRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreatePullStreamConfigRequestParams struct { + // 源 Url ,用于拉流的地址。目前可支持直播流及点播文件。 + // 注意: + // 1. 多个点播url之间使用空格拼接。 + // 2. 目前上限支持10个url。 + // 3. 目前不支持https协议。 + // 4. 支持拉流文件格式:flv,rtmp,hls,mp4。 + FromUrl *string `json:"FromUrl,omitempty" name:"FromUrl"` + + // 目的 Url ,用于推流的地址,目前限制该目标地址为腾讯域名。 + // 仅支持:rtmp 协议。 + ToUrl *string `json:"ToUrl,omitempty" name:"ToUrl"` + + // 选择完成转拉推的服务所在区域: + // 1-深圳, + // 2-上海, + // 3-天津, + // 4-中国香港。 + AreaId *int64 `json:"AreaId,omitempty" name:"AreaId"` + + // 选择完成转拉推服务使用的运营商网络: + // 1-电信, + // 2-移动, + // 3-联通, + // 4-其他。 + // 注:AreaId 为4的时候,IspId 只能为其他。 + IspId *int64 `json:"IspId,omitempty" name:"IspId"` + + // 开始时间。 + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,注意: + // 1. 结束时间必须大于开始时间; + // 2. 结束时间和开始时间必须大于当前时间; + // 3. 结束时间 和 开始时间 间隔必须小于七天。 + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` +} + +type CreatePullStreamConfigRequest struct { + *tchttp.BaseRequest + + // 源 Url ,用于拉流的地址。目前可支持直播流及点播文件。 + // 注意: + // 1. 多个点播url之间使用空格拼接。 + // 2. 目前上限支持10个url。 + // 3. 目前不支持https协议。 + // 4. 支持拉流文件格式:flv,rtmp,hls,mp4。 + FromUrl *string `json:"FromUrl,omitempty" name:"FromUrl"` + + // 目的 Url ,用于推流的地址,目前限制该目标地址为腾讯域名。 + // 仅支持:rtmp 协议。 + ToUrl *string `json:"ToUrl,omitempty" name:"ToUrl"` + + // 选择完成转拉推的服务所在区域: + // 1-深圳, + // 2-上海, + // 3-天津, + // 4-中国香港。 + AreaId *int64 `json:"AreaId,omitempty" name:"AreaId"` + + // 选择完成转拉推服务使用的运营商网络: + // 1-电信, + // 2-移动, + // 3-联通, + // 4-其他。 + // 注:AreaId 为4的时候,IspId 只能为其他。 + IspId *int64 `json:"IspId,omitempty" name:"IspId"` + + // 开始时间。 + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,注意: + // 1. 结束时间必须大于开始时间; + // 2. 结束时间和开始时间必须大于当前时间; + // 3. 结束时间 和 开始时间 间隔必须小于七天。 + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` +} + +func (r *CreatePullStreamConfigRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreatePullStreamConfigRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "FromUrl") + delete(f, "ToUrl") + delete(f, "AreaId") + delete(f, "IspId") + delete(f, "StartTime") + delete(f, "EndTime") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreatePullStreamConfigRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreatePullStreamConfigResponseParams struct { + // 配置成功后的 ID。 + ConfigId *string `json:"ConfigId,omitempty" name:"ConfigId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreatePullStreamConfigResponse struct { + *tchttp.BaseResponse + Response *CreatePullStreamConfigResponseParams `json:"Response"` +} + +func (r *CreatePullStreamConfigResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreatePullStreamConfigResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateRecordTaskRequestParams struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 录制任务结束时间,Unix时间戳。设置时间必须大于StartTime及当前时间,且EndTime - StartTime不能超过24小时。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 录制任务开始时间,Unix时间戳。如果不填表示立即启动录制。StartTime不能超过当前时间+6天。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 推流类型,默认0。取值: + // 0-直播推流。 + // 1-合成流,即 A+B=C 类型混流。 + StreamType *uint64 `json:"StreamType,omitempty" name:"StreamType"` + + // 录制模板ID,CreateLiveRecordTemplate 返回值。如果不填或者传入错误ID,则默认录制HLS格式、永久存储。 + TemplateId *uint64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 扩展字段,暂无定义。默认为空。 + Extension *string `json:"Extension,omitempty" name:"Extension"` +} + +type CreateRecordTaskRequest struct { + *tchttp.BaseRequest + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 录制任务结束时间,Unix时间戳。设置时间必须大于StartTime及当前时间,且EndTime - StartTime不能超过24小时。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 录制任务开始时间,Unix时间戳。如果不填表示立即启动录制。StartTime不能超过当前时间+6天。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 推流类型,默认0。取值: + // 0-直播推流。 + // 1-合成流,即 A+B=C 类型混流。 + StreamType *uint64 `json:"StreamType,omitempty" name:"StreamType"` + + // 录制模板ID,CreateLiveRecordTemplate 返回值。如果不填或者传入错误ID,则默认录制HLS格式、永久存储。 + TemplateId *uint64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 扩展字段,暂无定义。默认为空。 + Extension *string `json:"Extension,omitempty" name:"Extension"` +} + +func (r *CreateRecordTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateRecordTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StreamName") + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "EndTime") + delete(f, "StartTime") + delete(f, "StreamType") + delete(f, "TemplateId") + delete(f, "Extension") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateRecordTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateRecordTaskResponseParams struct { + // 任务ID,全局唯一标识录制任务。返回TaskId字段说明录制任务创建成功。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateRecordTaskResponse struct { + *tchttp.BaseResponse + Response *CreateRecordTaskResponseParams `json:"Response"` +} + +func (r *CreateRecordTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateRecordTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateScreenshotTaskRequestParams struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 截图任务结束时间,Unix时间戳。设置时间必须大于StartTime及当前时间,且EndTime - StartTime不能超过24小时。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 截图模板ID,CreateLiveSnapshotTemplate 返回值。如果传入错误ID,则不拉起截图。 + TemplateId *uint64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 截图任务开始时间,Unix时间戳。如果不填表示立即启动截图。StartTime不能超过当前时间+6天。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 推流类型,默认0。取值: + // 0-直播推流。 + // 1-合成流,即 A+B=C 类型混流。 + StreamType *uint64 `json:"StreamType,omitempty" name:"StreamType"` + + // 扩展字段,暂无定义。默认为空。 + Extension *string `json:"Extension,omitempty" name:"Extension"` +} + +type CreateScreenshotTaskRequest struct { + *tchttp.BaseRequest + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 截图任务结束时间,Unix时间戳。设置时间必须大于StartTime及当前时间,且EndTime - StartTime不能超过24小时。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 截图模板ID,CreateLiveSnapshotTemplate 返回值。如果传入错误ID,则不拉起截图。 + TemplateId *uint64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 截图任务开始时间,Unix时间戳。如果不填表示立即启动截图。StartTime不能超过当前时间+6天。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 推流类型,默认0。取值: + // 0-直播推流。 + // 1-合成流,即 A+B=C 类型混流。 + StreamType *uint64 `json:"StreamType,omitempty" name:"StreamType"` + + // 扩展字段,暂无定义。默认为空。 + Extension *string `json:"Extension,omitempty" name:"Extension"` +} + +func (r *CreateScreenshotTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateScreenshotTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StreamName") + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "EndTime") + delete(f, "TemplateId") + delete(f, "StartTime") + delete(f, "StreamType") + delete(f, "Extension") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateScreenshotTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateScreenshotTaskResponseParams struct { + // 任务ID,全局唯一标识截图任务。返回TaskId字段说明截图任务创建成功。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type CreateScreenshotTaskResponse struct { + *tchttp.BaseResponse + Response *CreateScreenshotTaskResponseParams `json:"Response"` +} + +func (r *CreateScreenshotTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateScreenshotTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type DayStreamPlayInfo struct { + // 数据时间点,格式:yyyy-mm-dd HH:MM:SS。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 带宽(单位Mbps)。 + Bandwidth *float64 `json:"Bandwidth,omitempty" name:"Bandwidth"` + + // 流量 (单位MB)。 + Flux *float64 `json:"Flux,omitempty" name:"Flux"` + + // 请求数。 + Request *uint64 `json:"Request,omitempty" name:"Request"` + + // 在线人数。 + Online *uint64 `json:"Online,omitempty" name:"Online"` +} + +type DelayInfo struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的 + // AppName 保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 延播时间,单位:秒。 + DelayInterval *uint64 `json:"DelayInterval,omitempty" name:"DelayInterval"` + + // 创建时间,UTC 时间。 + // 注意:UTC时间和北京时间相差8小时。 + // 例如:2019-06-18T12:00:00Z(为北京时间 2019 年 6 月 18 日 20 点 0 分 0 秒)。 + CreateTime *string `json:"CreateTime,omitempty" name:"CreateTime"` + + // 过期时间,UTC 时间。 + // 注意:UTC时间和北京时间相差8小时。 + // 例如:2019-06-18T12:00:00Z(为北京时间 2019 年 6 月 18 日 20 点 0 分 0 秒)。 + ExpireTime *string `json:"ExpireTime,omitempty" name:"ExpireTime"` + + // 当前状态: + // -1:已过期。 + // 1: 生效中。 + Status *int64 `json:"Status,omitempty" name:"Status"` +} + +// Predefined struct for user +type DeleteLiveCallbackRuleRequestParams struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` +} + +type DeleteLiveCallbackRuleRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` +} + +func (r *DeleteLiveCallbackRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveCallbackRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "AppName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveCallbackRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveCallbackRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveCallbackRuleResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveCallbackRuleResponseParams `json:"Response"` +} + +func (r *DeleteLiveCallbackRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveCallbackRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveCallbackTemplateRequestParams struct { + // 模板 ID。 + // 1. 在创建回调模板接口 [CreateLiveCallbackTemplate](/document/product/267/32637) 调用的返回值中获取模板 ID。 + // 2. 可以从接口 [DescribeLiveCallbackTemplates](/document/product/267/32632) 查询已经创建的过的模板列表。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type DeleteLiveCallbackTemplateRequest struct { + *tchttp.BaseRequest + + // 模板 ID。 + // 1. 在创建回调模板接口 [CreateLiveCallbackTemplate](/document/product/267/32637) 调用的返回值中获取模板 ID。 + // 2. 可以从接口 [DescribeLiveCallbackTemplates](/document/product/267/32632) 查询已经创建的过的模板列表。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *DeleteLiveCallbackTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveCallbackTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveCallbackTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveCallbackTemplateResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveCallbackTemplateResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveCallbackTemplateResponseParams `json:"Response"` +} + +func (r *DeleteLiveCallbackTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveCallbackTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveDomainRequestParams struct { + // 要删除的域名 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 类型。0-推流,1-播放 + DomainType *uint64 `json:"DomainType,omitempty" name:"DomainType"` +} + +type DeleteLiveDomainRequest struct { + *tchttp.BaseRequest + + // 要删除的域名 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 类型。0-推流,1-播放 + DomainType *uint64 `json:"DomainType,omitempty" name:"DomainType"` +} + +func (r *DeleteLiveDomainRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveDomainRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "DomainType") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveDomainRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveDomainResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveDomainResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveDomainResponseParams `json:"Response"` +} + +func (r *DeleteLiveDomainResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveDomainResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLivePullStreamTaskRequestParams struct { + // 任务 Id。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 操作人姓名。 + Operator *string `json:"Operator,omitempty" name:"Operator"` +} + +type DeleteLivePullStreamTaskRequest struct { + *tchttp.BaseRequest + + // 任务 Id。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 操作人姓名。 + Operator *string `json:"Operator,omitempty" name:"Operator"` +} + +func (r *DeleteLivePullStreamTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLivePullStreamTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TaskId") + delete(f, "Operator") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLivePullStreamTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLivePullStreamTaskResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLivePullStreamTaskResponse struct { + *tchttp.BaseResponse + Response *DeleteLivePullStreamTaskResponseParams `json:"Response"` +} + +func (r *DeleteLivePullStreamTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLivePullStreamTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveRecordRequestParams struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 任务ID,由CreateLiveRecord接口返回。 + TaskId *int64 `json:"TaskId,omitempty" name:"TaskId"` +} + +type DeleteLiveRecordRequest struct { + *tchttp.BaseRequest + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 任务ID,由CreateLiveRecord接口返回。 + TaskId *int64 `json:"TaskId,omitempty" name:"TaskId"` +} + +func (r *DeleteLiveRecordRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveRecordRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StreamName") + delete(f, "TaskId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveRecordRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveRecordResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveRecordResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveRecordResponseParams `json:"Response"` +} + +func (r *DeleteLiveRecordResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveRecordResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveRecordRuleRequestParams struct { + // 推流域名。 + // 域名+AppName+StreamName唯一标识单个转码规则,如需删除需要强匹配,例如AppName为空也需要传空字符串进行强匹配。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + // 域名+AppName+StreamName唯一标识单个转码规则,如需删除需要强匹配,例如AppName为空也需要传空字符串进行强匹配。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + // 域名+AppName+StreamName唯一标识单个转码规则,如需删除需要强匹配,例如AppName为空也需要传空字符串进行强匹配。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type DeleteLiveRecordRuleRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + // 域名+AppName+StreamName唯一标识单个转码规则,如需删除需要强匹配,例如AppName为空也需要传空字符串进行强匹配。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + // 域名+AppName+StreamName唯一标识单个转码规则,如需删除需要强匹配,例如AppName为空也需要传空字符串进行强匹配。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + // 域名+AppName+StreamName唯一标识单个转码规则,如需删除需要强匹配,例如AppName为空也需要传空字符串进行强匹配。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *DeleteLiveRecordRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveRecordRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveRecordRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveRecordRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveRecordRuleResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveRecordRuleResponseParams `json:"Response"` +} + +func (r *DeleteLiveRecordRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveRecordRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveRecordTemplateRequestParams struct { + // DescribeRecordTemplates接口获取到的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type DeleteLiveRecordTemplateRequest struct { + *tchttp.BaseRequest + + // DescribeRecordTemplates接口获取到的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *DeleteLiveRecordTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveRecordTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveRecordTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveRecordTemplateResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveRecordTemplateResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveRecordTemplateResponseParams `json:"Response"` +} + +func (r *DeleteLiveRecordTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveRecordTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveSnapshotRuleRequestParams struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type DeleteLiveSnapshotRuleRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *DeleteLiveSnapshotRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveSnapshotRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveSnapshotRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveSnapshotRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveSnapshotRuleResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveSnapshotRuleResponseParams `json:"Response"` +} + +func (r *DeleteLiveSnapshotRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveSnapshotRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveSnapshotTemplateRequestParams struct { + // 模板 ID。 + // 1. 在创建截图模板接口 [CreateLiveSnapshotTemplate](/document/product/267/32624) 调用的返回值中获取。 + // 2. 可以从接口 [DescribeLiveSnapshotTemplates](/document/product/267/32619) 中查询已创建的截图模板列表。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type DeleteLiveSnapshotTemplateRequest struct { + *tchttp.BaseRequest + + // 模板 ID。 + // 1. 在创建截图模板接口 [CreateLiveSnapshotTemplate](/document/product/267/32624) 调用的返回值中获取。 + // 2. 可以从接口 [DescribeLiveSnapshotTemplates](/document/product/267/32619) 中查询已创建的截图模板列表。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *DeleteLiveSnapshotTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveSnapshotTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveSnapshotTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveSnapshotTemplateResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveSnapshotTemplateResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveSnapshotTemplateResponseParams `json:"Response"` +} + +func (r *DeleteLiveSnapshotTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveSnapshotTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveTranscodeRuleRequestParams struct { + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 模板ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type DeleteLiveTranscodeRuleRequest struct { + *tchttp.BaseRequest + + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 模板ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *DeleteLiveTranscodeRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveTranscodeRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "StreamName") + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveTranscodeRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveTranscodeRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveTranscodeRuleResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveTranscodeRuleResponseParams `json:"Response"` +} + +func (r *DeleteLiveTranscodeRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveTranscodeRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveTranscodeTemplateRequestParams struct { + // 模板 ID。 + // 1. 在创建转码模板接口 [CreateLiveTranscodeTemplate](/document/product/267/32646) 调用的返回值中获取模板 ID。 + // 2. 可以从接口 [DescribeLiveTranscodeTemplates](/document/product/267/32641) 查询已经创建的过的模板列表。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type DeleteLiveTranscodeTemplateRequest struct { + *tchttp.BaseRequest + + // 模板 ID。 + // 1. 在创建转码模板接口 [CreateLiveTranscodeTemplate](/document/product/267/32646) 调用的返回值中获取模板 ID。 + // 2. 可以从接口 [DescribeLiveTranscodeTemplates](/document/product/267/32641) 查询已经创建的过的模板列表。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *DeleteLiveTranscodeTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveTranscodeTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveTranscodeTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveTranscodeTemplateResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveTranscodeTemplateResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveTranscodeTemplateResponseParams `json:"Response"` +} + +func (r *DeleteLiveTranscodeTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveTranscodeTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveWatermarkRequestParams struct { + // 水印 ID。 + // 在添加水印接口 [AddLiveWatermark](/document/product/267/30154) 调用返回值中获取水印 ID。 + // 或DescribeLiveWatermarks接口返回的水印ID。 + WatermarkId *int64 `json:"WatermarkId,omitempty" name:"WatermarkId"` +} + +type DeleteLiveWatermarkRequest struct { + *tchttp.BaseRequest + + // 水印 ID。 + // 在添加水印接口 [AddLiveWatermark](/document/product/267/30154) 调用返回值中获取水印 ID。 + // 或DescribeLiveWatermarks接口返回的水印ID。 + WatermarkId *int64 `json:"WatermarkId,omitempty" name:"WatermarkId"` +} + +func (r *DeleteLiveWatermarkRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveWatermarkRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "WatermarkId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveWatermarkRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveWatermarkResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveWatermarkResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveWatermarkResponseParams `json:"Response"` +} + +func (r *DeleteLiveWatermarkResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveWatermarkResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveWatermarkRuleRequestParams struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。与推流和播放地址中的 AppName 保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type DeleteLiveWatermarkRuleRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。与推流和播放地址中的 AppName 保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *DeleteLiveWatermarkRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveWatermarkRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteLiveWatermarkRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteLiveWatermarkRuleResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteLiveWatermarkRuleResponse struct { + *tchttp.BaseResponse + Response *DeleteLiveWatermarkRuleResponseParams `json:"Response"` +} + +func (r *DeleteLiveWatermarkRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteLiveWatermarkRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeletePullStreamConfigRequestParams struct { + // 配置 ID。 + // 1. 在添加拉流配置接口 [CreatePullStreamConfig](/document/api/267/30159) 调用返回值中获取配置 ID。 + // 2. 可以从接口 [DescribePullStreamConfigs](/document/api/267/30158) 中查询已创建过的拉流配置列表。 + ConfigId *string `json:"ConfigId,omitempty" name:"ConfigId"` +} + +type DeletePullStreamConfigRequest struct { + *tchttp.BaseRequest + + // 配置 ID。 + // 1. 在添加拉流配置接口 [CreatePullStreamConfig](/document/api/267/30159) 调用返回值中获取配置 ID。 + // 2. 可以从接口 [DescribePullStreamConfigs](/document/api/267/30158) 中查询已创建过的拉流配置列表。 + ConfigId *string `json:"ConfigId,omitempty" name:"ConfigId"` +} + +func (r *DeletePullStreamConfigRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeletePullStreamConfigRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "ConfigId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeletePullStreamConfigRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeletePullStreamConfigResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeletePullStreamConfigResponse struct { + *tchttp.BaseResponse + Response *DeletePullStreamConfigResponseParams `json:"Response"` +} + +func (r *DeletePullStreamConfigResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeletePullStreamConfigResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteRecordTaskRequestParams struct { + // 任务ID,CreateRecordTask返回。删除TaskId指定的录制任务。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` +} + +type DeleteRecordTaskRequest struct { + *tchttp.BaseRequest + + // 任务ID,CreateRecordTask返回。删除TaskId指定的录制任务。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` +} + +func (r *DeleteRecordTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteRecordTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TaskId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteRecordTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteRecordTaskResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteRecordTaskResponse struct { + *tchttp.BaseResponse + Response *DeleteRecordTaskResponseParams `json:"Response"` +} + +func (r *DeleteRecordTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteRecordTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteScreenshotTaskRequestParams struct { + // 任务ID,CreateScreenshotTask返回。删除TaskId指定的截图任务。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` +} + +type DeleteScreenshotTaskRequest struct { + *tchttp.BaseRequest + + // 任务ID,CreateScreenshotTask返回。删除TaskId指定的截图任务。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` +} + +func (r *DeleteScreenshotTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteScreenshotTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TaskId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteScreenshotTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteScreenshotTaskResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DeleteScreenshotTaskResponse struct { + *tchttp.BaseResponse + Response *DeleteScreenshotTaskResponseParams `json:"Response"` +} + +func (r *DeleteScreenshotTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteScreenshotTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeAllStreamPlayInfoListRequestParams struct { + // 查询时间点,精确到分钟粒度,支持最近1个月的数据查询,数据延迟为5分钟左右,如果要查询实时的数据,建议传递5分钟前的时间点,格式为yyyy-mm-dd HH:MM:00。(只精确至分钟,秒数填00)。 + QueryTime *string `json:"QueryTime,omitempty" name:"QueryTime"` + + // 播放域名列表,若不填,表示总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +type DescribeAllStreamPlayInfoListRequest struct { + *tchttp.BaseRequest + + // 查询时间点,精确到分钟粒度,支持最近1个月的数据查询,数据延迟为5分钟左右,如果要查询实时的数据,建议传递5分钟前的时间点,格式为yyyy-mm-dd HH:MM:00。(只精确至分钟,秒数填00)。 + QueryTime *string `json:"QueryTime,omitempty" name:"QueryTime"` + + // 播放域名列表,若不填,表示总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +func (r *DescribeAllStreamPlayInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeAllStreamPlayInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "QueryTime") + delete(f, "PlayDomains") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeAllStreamPlayInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeAllStreamPlayInfoListResponseParams struct { + // 查询时间点,回传的输入参数中的查询时间。 + QueryTime *string `json:"QueryTime,omitempty" name:"QueryTime"` + + // 数据信息列表。 + DataInfoList []*MonitorStreamPlayInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeAllStreamPlayInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeAllStreamPlayInfoListResponseParams `json:"Response"` +} + +func (r *DescribeAllStreamPlayInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeAllStreamPlayInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeAreaBillBandwidthAndFluxListRequestParams struct { + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过1天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 直播播放域名,若不填,表示总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +type DescribeAreaBillBandwidthAndFluxListRequest struct { + *tchttp.BaseRequest + + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过1天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 直播播放域名,若不填,表示总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +func (r *DescribeAreaBillBandwidthAndFluxListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeAreaBillBandwidthAndFluxListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PlayDomains") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeAreaBillBandwidthAndFluxListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeAreaBillBandwidthAndFluxListResponseParams struct { + // 明细数据信息。 + DataInfoList []*BillAreaInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeAreaBillBandwidthAndFluxListResponse struct { + *tchttp.BaseResponse + Response *DescribeAreaBillBandwidthAndFluxListResponseParams `json:"Response"` +} + +func (r *DescribeAreaBillBandwidthAndFluxListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeAreaBillBandwidthAndFluxListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeBillBandwidthAndFluxListRequestParams struct { + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过31天。支持最近3年的数据查询 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 直播播放域名,若不填,表示总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 可选值: + // Mainland:查询国内数据, + // Oversea:则查询国外数据, + // 默认:查询国内+国外的数据。 + // 注:LEB(快直播)只支持国内+国外数据查询。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 数据粒度,支持如下粒度: + // 5:5分钟粒度,(跨度不支持超过1天), + // 60:1小时粒度(跨度不支持超过一个月), + // 1440:天粒度(跨度不支持超过一个月)。 + // 默认值:5。 + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` + + // 服务名称,可选值包括LVB(标准直播),LEB(快直播),不填则查LVB+LEB总值。 + ServiceName *string `json:"ServiceName,omitempty" name:"ServiceName"` + + // 大区,映射表如下: + // China Mainland 中国大陆 + // Asia Pacific I 亚太一区 + // Asia Pacific II 亚太二区 + // Asia Pacific III 亚太三区 + // Europe 欧洲 + // North America 北美 + // South America 南美 + // Middle East 中东 + // Africa 非洲。 + RegionNames []*string `json:"RegionNames,omitempty" name:"RegionNames"` +} + +type DescribeBillBandwidthAndFluxListRequest struct { + *tchttp.BaseRequest + + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过31天。支持最近3年的数据查询 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 直播播放域名,若不填,表示总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 可选值: + // Mainland:查询国内数据, + // Oversea:则查询国外数据, + // 默认:查询国内+国外的数据。 + // 注:LEB(快直播)只支持国内+国外数据查询。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 数据粒度,支持如下粒度: + // 5:5分钟粒度,(跨度不支持超过1天), + // 60:1小时粒度(跨度不支持超过一个月), + // 1440:天粒度(跨度不支持超过一个月)。 + // 默认值:5。 + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` + + // 服务名称,可选值包括LVB(标准直播),LEB(快直播),不填则查LVB+LEB总值。 + ServiceName *string `json:"ServiceName,omitempty" name:"ServiceName"` + + // 大区,映射表如下: + // China Mainland 中国大陆 + // Asia Pacific I 亚太一区 + // Asia Pacific II 亚太二区 + // Asia Pacific III 亚太三区 + // Europe 欧洲 + // North America 北美 + // South America 南美 + // Middle East 中东 + // Africa 非洲。 + RegionNames []*string `json:"RegionNames,omitempty" name:"RegionNames"` +} + +func (r *DescribeBillBandwidthAndFluxListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeBillBandwidthAndFluxListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PlayDomains") + delete(f, "MainlandOrOversea") + delete(f, "Granularity") + delete(f, "ServiceName") + delete(f, "RegionNames") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeBillBandwidthAndFluxListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeBillBandwidthAndFluxListResponseParams struct { + // 峰值带宽所在时间点,格式为yyyy-mm-dd HH:MM:SS。 + PeakBandwidthTime *string `json:"PeakBandwidthTime,omitempty" name:"PeakBandwidthTime"` + + // 峰值带宽,单位是Mbps。 + PeakBandwidth *float64 `json:"PeakBandwidth,omitempty" name:"PeakBandwidth"` + + // 95峰值带宽所在时间点,格式为yyyy-mm-dd HH:MM:SS。 + P95PeakBandwidthTime *string `json:"P95PeakBandwidthTime,omitempty" name:"P95PeakBandwidthTime"` + + // 95峰值带宽,单位是Mbps。 + P95PeakBandwidth *float64 `json:"P95PeakBandwidth,omitempty" name:"P95PeakBandwidth"` + + // 总流量,单位是MB。 + SumFlux *float64 `json:"SumFlux,omitempty" name:"SumFlux"` + + // 明细数据信息。 + DataInfoList []*BillDataInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeBillBandwidthAndFluxListResponse struct { + *tchttp.BaseResponse + Response *DescribeBillBandwidthAndFluxListResponseParams `json:"Response"` +} + +func (r *DescribeBillBandwidthAndFluxListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeBillBandwidthAndFluxListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeCallbackRecordsListRequestParams struct { + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过1天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 流名称,精确匹配。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页条数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 事件类型。 + // 0: "断流", + // 1: "推流", + // 100: "录制" + // 200: "截图回调"。 + EventType *uint64 `json:"EventType,omitempty" name:"EventType"` + + // 回调结果。 + // 0为成功,其他为失败。 + ResultCode *uint64 `json:"ResultCode,omitempty" name:"ResultCode"` +} + +type DescribeCallbackRecordsListRequest struct { + *tchttp.BaseRequest + + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过1天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 流名称,精确匹配。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页条数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 事件类型。 + // 0: "断流", + // 1: "推流", + // 100: "录制" + // 200: "截图回调"。 + EventType *uint64 `json:"EventType,omitempty" name:"EventType"` + + // 回调结果。 + // 0为成功,其他为失败。 + ResultCode *uint64 `json:"ResultCode,omitempty" name:"ResultCode"` +} + +func (r *DescribeCallbackRecordsListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeCallbackRecordsListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "StreamName") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "EventType") + delete(f, "ResultCode") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeCallbackRecordsListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeCallbackRecordsListResponseParams struct { + // 回调事件列表。 + DataInfoList []*CallbackEventInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页条数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 总条数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeCallbackRecordsListResponse struct { + *tchttp.BaseResponse + Response *DescribeCallbackRecordsListResponseParams `json:"Response"` +} + +func (r *DescribeCallbackRecordsListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeCallbackRecordsListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeConcurrentRecordStreamNumRequestParams struct { + // 直播类型,SlowLive:慢直播。 + // NormalLive:普通直播。 + LiveType *string `json:"LiveType,omitempty" name:"LiveType"` + + // 起始时间,格式:yyyy-mm-dd HH:MM:SS。 + // 可以查询最近180天的数据。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,格式:yyyy-mm-dd HH:MM:SS。 + // 时间跨度最大支持31天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 如果为空,查询所有地区数据;如果为“Mainland”,查询国内数据;如果为“Oversea”,则查询国外数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 推流域名列表,不填表示总体数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` +} + +type DescribeConcurrentRecordStreamNumRequest struct { + *tchttp.BaseRequest + + // 直播类型,SlowLive:慢直播。 + // NormalLive:普通直播。 + LiveType *string `json:"LiveType,omitempty" name:"LiveType"` + + // 起始时间,格式:yyyy-mm-dd HH:MM:SS。 + // 可以查询最近180天的数据。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,格式:yyyy-mm-dd HH:MM:SS。 + // 时间跨度最大支持31天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 如果为空,查询所有地区数据;如果为“Mainland”,查询国内数据;如果为“Oversea”,则查询国外数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 推流域名列表,不填表示总体数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` +} + +func (r *DescribeConcurrentRecordStreamNumRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeConcurrentRecordStreamNumRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "LiveType") + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "MainlandOrOversea") + delete(f, "PushDomains") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeConcurrentRecordStreamNumRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeConcurrentRecordStreamNumResponseParams struct { + // 统计信息列表。 + DataInfoList []*ConcurrentRecordStreamNum `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeConcurrentRecordStreamNumResponse struct { + *tchttp.BaseResponse + Response *DescribeConcurrentRecordStreamNumResponseParams `json:"Response"` +} + +func (r *DescribeConcurrentRecordStreamNumResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeConcurrentRecordStreamNumResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeDeliverBandwidthListRequestParams struct { + // 起始时间,格式为%Y-%m-%d %H:%M:%S。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,格式为%Y-%m-%d %H:%M:%S,支持最近三个月的数据查询,时间跨度最大是1个月。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` +} + +type DescribeDeliverBandwidthListRequest struct { + *tchttp.BaseRequest + + // 起始时间,格式为%Y-%m-%d %H:%M:%S。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,格式为%Y-%m-%d %H:%M:%S,支持最近三个月的数据查询,时间跨度最大是1个月。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` +} + +func (r *DescribeDeliverBandwidthListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeDeliverBandwidthListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeDeliverBandwidthListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeDeliverBandwidthListResponseParams struct { + // 转推计费带宽数据 + DataInfoList []*BandwidthInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeDeliverBandwidthListResponse struct { + *tchttp.BaseResponse + Response *DescribeDeliverBandwidthListResponseParams `json:"Response"` +} + +func (r *DescribeDeliverBandwidthListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeDeliverBandwidthListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeGroupProIspPlayInfoListRequestParams struct { + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS + // 时间跨度在(0,3小时],支持最近1个月数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名,默认为不填,表示求总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 省份列表,默认不填,则返回各省份的数据。 + ProvinceNames []*string `json:"ProvinceNames,omitempty" name:"ProvinceNames"` + + // 运营商列表,默认不填,则返回整个运营商的数据。 + IspNames []*string `json:"IspNames,omitempty" name:"IspNames"` + + // 国内还是国外,如果为空,查询所有地区数据;如果为“Mainland”,查询国内数据;如果为“Oversea”,则查询国外数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` +} + +type DescribeGroupProIspPlayInfoListRequest struct { + *tchttp.BaseRequest + + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS + // 时间跨度在(0,3小时],支持最近1个月数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名,默认为不填,表示求总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 省份列表,默认不填,则返回各省份的数据。 + ProvinceNames []*string `json:"ProvinceNames,omitempty" name:"ProvinceNames"` + + // 运营商列表,默认不填,则返回整个运营商的数据。 + IspNames []*string `json:"IspNames,omitempty" name:"IspNames"` + + // 国内还是国外,如果为空,查询所有地区数据;如果为“Mainland”,查询国内数据;如果为“Oversea”,则查询国外数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` +} + +func (r *DescribeGroupProIspPlayInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeGroupProIspPlayInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PlayDomains") + delete(f, "ProvinceNames") + delete(f, "IspNames") + delete(f, "MainlandOrOversea") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeGroupProIspPlayInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeGroupProIspPlayInfoListResponseParams struct { + // 数据内容。 + DataInfoList []*GroupProIspDataInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeGroupProIspPlayInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeGroupProIspPlayInfoListResponseParams `json:"Response"` +} + +func (r *DescribeGroupProIspPlayInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeGroupProIspPlayInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeHttpStatusInfoListRequestParams struct { + // 起始时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注:最大时间跨度支持1天,支持最近3个月的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +type DescribeHttpStatusInfoListRequest struct { + *tchttp.BaseRequest + + // 起始时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注:最大时间跨度支持1天,支持最近3个月的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +func (r *DescribeHttpStatusInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeHttpStatusInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PlayDomains") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeHttpStatusInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeHttpStatusInfoListResponseParams struct { + // 播放状态码列表。 + DataInfoList []*HttpStatusData `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeHttpStatusInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeHttpStatusInfoListResponseParams `json:"Response"` +} + +func (r *DescribeHttpStatusInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeHttpStatusInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCallbackRulesRequestParams struct { + +} + +type DescribeLiveCallbackRulesRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveCallbackRulesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCallbackRulesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveCallbackRulesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCallbackRulesResponseParams struct { + // 规则信息列表。 + Rules []*CallBackRuleInfo `json:"Rules,omitempty" name:"Rules"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveCallbackRulesResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveCallbackRulesResponseParams `json:"Response"` +} + +func (r *DescribeLiveCallbackRulesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCallbackRulesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCallbackTemplateRequestParams struct { + // 模板 ID。 + // 1. 在创建回调模板接口 [CreateLiveCallbackTemplate](/document/product/267/32637) 调用的返回值中获取模板 ID。 + // 2. 可以从接口 [DescribeLiveCallbackTemplates](/document/product/267/32632) 查询已经创建的过的模板列表。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type DescribeLiveCallbackTemplateRequest struct { + *tchttp.BaseRequest + + // 模板 ID。 + // 1. 在创建回调模板接口 [CreateLiveCallbackTemplate](/document/product/267/32637) 调用的返回值中获取模板 ID。 + // 2. 可以从接口 [DescribeLiveCallbackTemplates](/document/product/267/32632) 查询已经创建的过的模板列表。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *DescribeLiveCallbackTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCallbackTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveCallbackTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCallbackTemplateResponseParams struct { + // 回调模板信息。 + Template *CallBackTemplateInfo `json:"Template,omitempty" name:"Template"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveCallbackTemplateResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveCallbackTemplateResponseParams `json:"Response"` +} + +func (r *DescribeLiveCallbackTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCallbackTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCallbackTemplatesRequestParams struct { + +} + +type DescribeLiveCallbackTemplatesRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveCallbackTemplatesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCallbackTemplatesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveCallbackTemplatesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCallbackTemplatesResponseParams struct { + // 模板信息列表。 + Templates []*CallBackTemplateInfo `json:"Templates,omitempty" name:"Templates"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveCallbackTemplatesResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveCallbackTemplatesResponseParams `json:"Response"` +} + +func (r *DescribeLiveCallbackTemplatesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCallbackTemplatesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCertRequestParams struct { + // DescribeLiveCerts接口获取到的证书Id。 + CertId *int64 `json:"CertId,omitempty" name:"CertId"` +} + +type DescribeLiveCertRequest struct { + *tchttp.BaseRequest + + // DescribeLiveCerts接口获取到的证书Id。 + CertId *int64 `json:"CertId,omitempty" name:"CertId"` +} + +func (r *DescribeLiveCertRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCertRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "CertId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveCertRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCertResponseParams struct { + // 证书信息。 + CertInfo *CertInfo `json:"CertInfo,omitempty" name:"CertInfo"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveCertResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveCertResponseParams `json:"Response"` +} + +func (r *DescribeLiveCertResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCertResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCertsRequestParams struct { + +} + +type DescribeLiveCertsRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveCertsRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCertsRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveCertsRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveCertsResponseParams struct { + // 证书信息列表。 + CertInfoSet []*CertInfo `json:"CertInfoSet,omitempty" name:"CertInfoSet"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveCertsResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveCertsResponseParams `json:"Response"` +} + +func (r *DescribeLiveCertsResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveCertsResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDelayInfoListRequestParams struct { + +} + +type DescribeLiveDelayInfoListRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveDelayInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDelayInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveDelayInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDelayInfoListResponseParams struct { + // 延播信息列表。 + DelayInfoList []*DelayInfo `json:"DelayInfoList,omitempty" name:"DelayInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveDelayInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveDelayInfoListResponseParams `json:"Response"` +} + +func (r *DescribeLiveDelayInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDelayInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainCertBindingsRequestParams struct { + // 要搜索的域名字符串。 + DomainSearch *string `json:"DomainSearch,omitempty" name:"DomainSearch"` + + // 记录行的位置,从0开始。默认0。 + Offset *int64 `json:"Offset,omitempty" name:"Offset"` + + // 记录行的最大数目。默认50。 + // 若不传,则最多返回50条数据。 + Length *int64 `json:"Length,omitempty" name:"Length"` + + // 要查询的单个域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 可取值: + // ExpireTimeAsc:证书过期时间升序。 + // ExpireTimeDesc:证书过期时间降序。 + OrderBy *string `json:"OrderBy,omitempty" name:"OrderBy"` +} + +type DescribeLiveDomainCertBindingsRequest struct { + *tchttp.BaseRequest + + // 要搜索的域名字符串。 + DomainSearch *string `json:"DomainSearch,omitempty" name:"DomainSearch"` + + // 记录行的位置,从0开始。默认0。 + Offset *int64 `json:"Offset,omitempty" name:"Offset"` + + // 记录行的最大数目。默认50。 + // 若不传,则最多返回50条数据。 + Length *int64 `json:"Length,omitempty" name:"Length"` + + // 要查询的单个域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 可取值: + // ExpireTimeAsc:证书过期时间升序。 + // ExpireTimeDesc:证书过期时间降序。 + OrderBy *string `json:"OrderBy,omitempty" name:"OrderBy"` +} + +func (r *DescribeLiveDomainCertBindingsRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainCertBindingsRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainSearch") + delete(f, "Offset") + delete(f, "Length") + delete(f, "DomainName") + delete(f, "OrderBy") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveDomainCertBindingsRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainCertBindingsResponseParams struct { + // 有绑定证书的域名信息数组。 + LiveDomainCertBindings []*LiveDomainCertBindings `json:"LiveDomainCertBindings,omitempty" name:"LiveDomainCertBindings"` + + // 总的记录行数,便于分页。 + TotalNum *int64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveDomainCertBindingsResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveDomainCertBindingsResponseParams `json:"Response"` +} + +func (r *DescribeLiveDomainCertBindingsResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainCertBindingsResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainCertRequestParams struct { + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +type DescribeLiveDomainCertRequest struct { + *tchttp.BaseRequest + + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +func (r *DescribeLiveDomainCertRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainCertRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveDomainCertRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainCertResponseParams struct { + // 证书信息。 + DomainCertInfo *DomainCertInfo `json:"DomainCertInfo,omitempty" name:"DomainCertInfo"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveDomainCertResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveDomainCertResponseParams `json:"Response"` +} + +func (r *DescribeLiveDomainCertResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainCertResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainPlayInfoListRequestParams struct { + // 播放域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +type DescribeLiveDomainPlayInfoListRequest struct { + *tchttp.BaseRequest + + // 播放域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +func (r *DescribeLiveDomainPlayInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainPlayInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "PlayDomains") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveDomainPlayInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainPlayInfoListResponseParams struct { + // 数据时间,格式为yyyy-mm-dd HH:MM:SS。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 实时总带宽。 + TotalBandwidth *float64 `json:"TotalBandwidth,omitempty" name:"TotalBandwidth"` + + // 实时总流量。 + TotalFlux *float64 `json:"TotalFlux,omitempty" name:"TotalFlux"` + + // 总请求数。 + TotalRequest *uint64 `json:"TotalRequest,omitempty" name:"TotalRequest"` + + // 实时总连接数。 + TotalOnline *uint64 `json:"TotalOnline,omitempty" name:"TotalOnline"` + + // 分域名的数据情况。 + DomainInfoList []*DomainInfoList `json:"DomainInfoList,omitempty" name:"DomainInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveDomainPlayInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveDomainPlayInfoListResponseParams `json:"Response"` +} + +func (r *DescribeLiveDomainPlayInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainPlayInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainRefererRequestParams struct { + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +type DescribeLiveDomainRefererRequest struct { + *tchttp.BaseRequest + + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +func (r *DescribeLiveDomainRefererRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainRefererRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveDomainRefererRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainRefererResponseParams struct { + // 域名 Referer 黑白名单配置。 + RefererAuthConfig *RefererAuthConfig `json:"RefererAuthConfig,omitempty" name:"RefererAuthConfig"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveDomainRefererResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveDomainRefererResponseParams `json:"Response"` +} + +func (r *DescribeLiveDomainRefererResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainRefererResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainRequestParams struct { + // 域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +type DescribeLiveDomainRequest struct { + *tchttp.BaseRequest + + // 域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +func (r *DescribeLiveDomainRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveDomainRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainResponseParams struct { + // 域名信息。 + // 注意:此字段可能返回 null,表示取不到有效值。 + DomainInfo *DomainInfo `json:"DomainInfo,omitempty" name:"DomainInfo"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveDomainResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveDomainResponseParams `json:"Response"` +} + +func (r *DescribeLiveDomainResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainsRequestParams struct { + // 域名状态过滤。0-停用,1-启用。 + DomainStatus *uint64 `json:"DomainStatus,omitempty" name:"DomainStatus"` + + // 域名类型过滤。0-推流,1-播放。 + DomainType *uint64 `json:"DomainType,omitempty" name:"DomainType"` + + // 分页大小,范围:10~100。默认10。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 取第几页,范围:1~100000。默认1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 0 普通直播 1慢直播 默认0。 + IsDelayLive *uint64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` + + // 域名前缀。 + DomainPrefix *string `json:"DomainPrefix,omitempty" name:"DomainPrefix"` + + // 播放区域,只在 DomainType=1 时该参数有意义。 + // 1: 国内。 + // 2: 全球。 + // 3: 海外。 + PlayType *uint64 `json:"PlayType,omitempty" name:"PlayType"` +} + +type DescribeLiveDomainsRequest struct { + *tchttp.BaseRequest + + // 域名状态过滤。0-停用,1-启用。 + DomainStatus *uint64 `json:"DomainStatus,omitempty" name:"DomainStatus"` + + // 域名类型过滤。0-推流,1-播放。 + DomainType *uint64 `json:"DomainType,omitempty" name:"DomainType"` + + // 分页大小,范围:10~100。默认10。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 取第几页,范围:1~100000。默认1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 0 普通直播 1慢直播 默认0。 + IsDelayLive *uint64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` + + // 域名前缀。 + DomainPrefix *string `json:"DomainPrefix,omitempty" name:"DomainPrefix"` + + // 播放区域,只在 DomainType=1 时该参数有意义。 + // 1: 国内。 + // 2: 全球。 + // 3: 海外。 + PlayType *uint64 `json:"PlayType,omitempty" name:"PlayType"` +} + +func (r *DescribeLiveDomainsRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainsRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainStatus") + delete(f, "DomainType") + delete(f, "PageSize") + delete(f, "PageNum") + delete(f, "IsDelayLive") + delete(f, "DomainPrefix") + delete(f, "PlayType") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveDomainsRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveDomainsResponseParams struct { + // 总记录数。 + AllCount *uint64 `json:"AllCount,omitempty" name:"AllCount"` + + // 域名详细信息列表。 + DomainList []*DomainInfo `json:"DomainList,omitempty" name:"DomainList"` + + // 可继续添加域名数量。 + // 注意:此字段可能返回 null,表示取不到有效值。 + CreateLimitCount *int64 `json:"CreateLimitCount,omitempty" name:"CreateLimitCount"` + + // 启用的播放域名加速区域统计,数组元素分别为:中国大陆(境内),全球地区,国际/港澳台(境外)域名数量。 + // 注意:此字段可能返回 null,表示取不到有效值。 + PlayTypeCount []*int64 `json:"PlayTypeCount,omitempty" name:"PlayTypeCount"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveDomainsResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveDomainsResponseParams `json:"Response"` +} + +func (r *DescribeLiveDomainsResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveDomainsResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveForbidStreamListRequestParams struct { + // 取得第几页,默认1。 + PageNum *int64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页大小,最大100。 + // 取值:1~100之前的任意整数。 + // 默认值:10。 + PageSize *int64 `json:"PageSize,omitempty" name:"PageSize"` + + // 按流名称查询。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type DescribeLiveForbidStreamListRequest struct { + *tchttp.BaseRequest + + // 取得第几页,默认1。 + PageNum *int64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页大小,最大100。 + // 取值:1~100之前的任意整数。 + // 默认值:10。 + PageSize *int64 `json:"PageSize,omitempty" name:"PageSize"` + + // 按流名称查询。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *DescribeLiveForbidStreamListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveForbidStreamListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveForbidStreamListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveForbidStreamListResponseParams struct { + // 符合条件的总个数。 + TotalNum *int64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *int64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 分页的页码。 + PageNum *int64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页显示的条数。 + PageSize *int64 `json:"PageSize,omitempty" name:"PageSize"` + + // 禁推流列表。 + ForbidStreamList []*ForbidStreamInfo `json:"ForbidStreamList,omitempty" name:"ForbidStreamList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveForbidStreamListResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveForbidStreamListResponseParams `json:"Response"` +} + +func (r *DescribeLiveForbidStreamListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveForbidStreamListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLivePackageInfoRequestParams struct { + // 包类型,可选值: + // 0:流量包 + // 1:转码包 + // 2: 连麦包。 + PackageType *int64 `json:"PackageType,omitempty" name:"PackageType"` + + // 排序规则: + // 1. BuyTimeDesc: 最新购买的排在最前面 + // 2. BuyTimeAsc: 最老购买的排在最前面 + // 3. ExpireTimeDesc: 最后过期的排在最前面 + // 4. ExpireTimeAsc:最先过期的排在最前面。 + // + // 注意: + // 1. PackageType 为 2(连麦包) 的时候,不支持 3、4 排序。 + OrderBy *string `json:"OrderBy,omitempty" name:"OrderBy"` + + // 取得第几页的数据,和 PageSize 同时传递才会生效。 + PageNum *int64 `json:"PageNum,omitempty" name:"PageNum"` + + // 分页大小,和 PageNum 同时传递才会生效。 + // 取值:10 ~ 100 之间的任意整数。 + PageSize *int64 `json:"PageSize,omitempty" name:"PageSize"` +} + +type DescribeLivePackageInfoRequest struct { + *tchttp.BaseRequest + + // 包类型,可选值: + // 0:流量包 + // 1:转码包 + // 2: 连麦包。 + PackageType *int64 `json:"PackageType,omitempty" name:"PackageType"` + + // 排序规则: + // 1. BuyTimeDesc: 最新购买的排在最前面 + // 2. BuyTimeAsc: 最老购买的排在最前面 + // 3. ExpireTimeDesc: 最后过期的排在最前面 + // 4. ExpireTimeAsc:最先过期的排在最前面。 + // + // 注意: + // 1. PackageType 为 2(连麦包) 的时候,不支持 3、4 排序。 + OrderBy *string `json:"OrderBy,omitempty" name:"OrderBy"` + + // 取得第几页的数据,和 PageSize 同时传递才会生效。 + PageNum *int64 `json:"PageNum,omitempty" name:"PageNum"` + + // 分页大小,和 PageNum 同时传递才会生效。 + // 取值:10 ~ 100 之间的任意整数。 + PageSize *int64 `json:"PageSize,omitempty" name:"PageSize"` +} + +func (r *DescribeLivePackageInfoRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLivePackageInfoRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "PackageType") + delete(f, "OrderBy") + delete(f, "PageNum") + delete(f, "PageSize") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLivePackageInfoRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLivePackageInfoResponseParams struct { + // 套餐包信息。 + // 注意:此字段可能返回 null,表示取不到有效值。 + LivePackageInfoList []*LivePackageInfo `json:"LivePackageInfoList,omitempty" name:"LivePackageInfoList"` + + // 套餐包当前计费方式: + // -1: 无计费方式或获取失败 + // 0: 无计费方式 + // 201: 月结带宽 + // 202: 月结流量 + // 203: 日结带宽 + // 204: 日结流量 + // 205: 日结时长 + // 206: 月结时长 + // 304: 日结流量。 + // 注意:此字段可能返回 null,表示取不到有效值。 + PackageBillMode *int64 `json:"PackageBillMode,omitempty" name:"PackageBillMode"` + + // 总页数。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TotalPage *int64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 数据总条数。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TotalNum *int64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 当前页数。 + // 注意:此字段可能返回 null,表示取不到有效值。 + PageNum *int64 `json:"PageNum,omitempty" name:"PageNum"` + + // 当前每页数量。 + // 注意:此字段可能返回 null,表示取不到有效值。 + PageSize *int64 `json:"PageSize,omitempty" name:"PageSize"` + + // 当请求参数 PackageType = 0 时生效,逗号分隔,从第一个到最后一个分别表示: + // 标准直播,中国大陆(境内全地区)计费方式。 + // 标准直播,国际/港澳台(境外多地区)计费方式。 + // 快直播,中国大陆(境内全地区)计费方式。 + // 快直播,国际/港澳台(境外多地区)计费方式。 + // 注意:此字段可能返回 null,表示取不到有效值。 + FluxPackageBillMode *string `json:"FluxPackageBillMode,omitempty" name:"FluxPackageBillMode"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLivePackageInfoResponse struct { + *tchttp.BaseResponse + Response *DescribeLivePackageInfoResponseParams `json:"Response"` +} + +func (r *DescribeLivePackageInfoResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLivePackageInfoResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLivePlayAuthKeyRequestParams struct { + // 域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +type DescribeLivePlayAuthKeyRequest struct { + *tchttp.BaseRequest + + // 域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +func (r *DescribeLivePlayAuthKeyRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLivePlayAuthKeyRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLivePlayAuthKeyRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLivePlayAuthKeyResponseParams struct { + // 播放鉴权key信息。 + PlayAuthKeyInfo *PlayAuthKeyInfo `json:"PlayAuthKeyInfo,omitempty" name:"PlayAuthKeyInfo"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLivePlayAuthKeyResponse struct { + *tchttp.BaseResponse + Response *DescribeLivePlayAuthKeyResponseParams `json:"Response"` +} + +func (r *DescribeLivePlayAuthKeyResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLivePlayAuthKeyResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLivePullStreamTasksRequestParams struct { + // 任务 ID。 + // 来源:调用 CreateLivePullStreamTask 接口时返回。 + // 不填默认查询所有任务,按更新时间倒序排序。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 取得第几页,默认值:1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 分页大小,默认值:10。 + // 取值范围:1~20 之前的任意整数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` +} + +type DescribeLivePullStreamTasksRequest struct { + *tchttp.BaseRequest + + // 任务 ID。 + // 来源:调用 CreateLivePullStreamTask 接口时返回。 + // 不填默认查询所有任务,按更新时间倒序排序。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 取得第几页,默认值:1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 分页大小,默认值:10。 + // 取值范围:1~20 之前的任意整数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` +} + +func (r *DescribeLivePullStreamTasksRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLivePullStreamTasksRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TaskId") + delete(f, "PageNum") + delete(f, "PageSize") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLivePullStreamTasksRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLivePullStreamTasksResponseParams struct { + // 直播拉流任务信息列表。 + TaskInfos []*PullStreamTaskInfo `json:"TaskInfos,omitempty" name:"TaskInfos"` + + // 分页的页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页大小。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 符合条件的总个数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 限制可创建的最大任务数。 + LimitTaskNum *uint64 `json:"LimitTaskNum,omitempty" name:"LimitTaskNum"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLivePullStreamTasksResponse struct { + *tchttp.BaseResponse + Response *DescribeLivePullStreamTasksResponseParams `json:"Response"` +} + +func (r *DescribeLivePullStreamTasksResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLivePullStreamTasksResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLivePushAuthKeyRequestParams struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +type DescribeLivePushAuthKeyRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +func (r *DescribeLivePushAuthKeyRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLivePushAuthKeyRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLivePushAuthKeyRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLivePushAuthKeyResponseParams struct { + // 推流鉴权key信息。 + PushAuthKeyInfo *PushAuthKeyInfo `json:"PushAuthKeyInfo,omitempty" name:"PushAuthKeyInfo"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLivePushAuthKeyResponse struct { + *tchttp.BaseResponse + Response *DescribeLivePushAuthKeyResponseParams `json:"Response"` +} + +func (r *DescribeLivePushAuthKeyResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLivePushAuthKeyResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveRecordRulesRequestParams struct { + +} + +type DescribeLiveRecordRulesRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveRecordRulesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveRecordRulesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveRecordRulesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveRecordRulesResponseParams struct { + // 规则列表。 + Rules []*RuleInfo `json:"Rules,omitempty" name:"Rules"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveRecordRulesResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveRecordRulesResponseParams `json:"Response"` +} + +func (r *DescribeLiveRecordRulesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveRecordRulesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveRecordTemplateRequestParams struct { + // [DescribeLiveRecordTemplates](/document/product/267/32609)接口获取到的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type DescribeLiveRecordTemplateRequest struct { + *tchttp.BaseRequest + + // [DescribeLiveRecordTemplates](/document/product/267/32609)接口获取到的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *DescribeLiveRecordTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveRecordTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveRecordTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveRecordTemplateResponseParams struct { + // 录制模板信息。 + Template *RecordTemplateInfo `json:"Template,omitempty" name:"Template"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveRecordTemplateResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveRecordTemplateResponseParams `json:"Response"` +} + +func (r *DescribeLiveRecordTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveRecordTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveRecordTemplatesRequestParams struct { + // 是否属于慢直播模板,默认:0。 + // 0: 标准直播。 + // 1:慢直播。 + IsDelayLive *int64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` +} + +type DescribeLiveRecordTemplatesRequest struct { + *tchttp.BaseRequest + + // 是否属于慢直播模板,默认:0。 + // 0: 标准直播。 + // 1:慢直播。 + IsDelayLive *int64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` +} + +func (r *DescribeLiveRecordTemplatesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveRecordTemplatesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "IsDelayLive") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveRecordTemplatesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveRecordTemplatesResponseParams struct { + // 录制模板信息列表。 + Templates []*RecordTemplateInfo `json:"Templates,omitempty" name:"Templates"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveRecordTemplatesResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveRecordTemplatesResponseParams `json:"Response"` +} + +func (r *DescribeLiveRecordTemplatesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveRecordTemplatesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveSnapshotRulesRequestParams struct { + +} + +type DescribeLiveSnapshotRulesRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveSnapshotRulesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveSnapshotRulesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveSnapshotRulesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveSnapshotRulesResponseParams struct { + // 规则列表。 + Rules []*RuleInfo `json:"Rules,omitempty" name:"Rules"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveSnapshotRulesResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveSnapshotRulesResponseParams `json:"Response"` +} + +func (r *DescribeLiveSnapshotRulesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveSnapshotRulesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveSnapshotTemplateRequestParams struct { + // 模板 ID。 + // 调用 [CreateLiveSnapshotTemplate](/document/product/267/32624) 时返回的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type DescribeLiveSnapshotTemplateRequest struct { + *tchttp.BaseRequest + + // 模板 ID。 + // 调用 [CreateLiveSnapshotTemplate](/document/product/267/32624) 时返回的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *DescribeLiveSnapshotTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveSnapshotTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveSnapshotTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveSnapshotTemplateResponseParams struct { + // 截图模板信息。 + Template *SnapshotTemplateInfo `json:"Template,omitempty" name:"Template"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveSnapshotTemplateResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveSnapshotTemplateResponseParams `json:"Response"` +} + +func (r *DescribeLiveSnapshotTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveSnapshotTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveSnapshotTemplatesRequestParams struct { + +} + +type DescribeLiveSnapshotTemplatesRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveSnapshotTemplatesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveSnapshotTemplatesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveSnapshotTemplatesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveSnapshotTemplatesResponseParams struct { + // 截图模板列表。 + Templates []*SnapshotTemplateInfo `json:"Templates,omitempty" name:"Templates"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveSnapshotTemplatesResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveSnapshotTemplatesResponseParams `json:"Response"` +} + +func (r *DescribeLiveSnapshotTemplatesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveSnapshotTemplatesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamEventListRequestParams struct { + // 起始时间。 + // UTC 格式,例如:2018-12-29T19:00:00Z。 + // 支持查询60天内的历史记录。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间。 + // UTC 格式,例如:2018-12-29T20:00:00Z。 + // 不超过当前时间,且和起始时间相差不得超过30天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称,不支持通配符(*)查询,默认模糊匹配。 + // 可使用IsStrict字段改为精确查询。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 取得第几页。 + // 默认值:1。 + // 注: 目前只支持10000条内的查询。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 分页大小。 + // 最大值:100。 + // 取值范围:1~100 之间的任意整数。 + // 默认值:10。 + // 注: 目前只支持10000条内的查询。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 是否过滤,默认不过滤。 + // 0:不进行任何过滤。 + // 1:过滤掉开播失败的,只返回开播成功的。 + IsFilter *int64 `json:"IsFilter,omitempty" name:"IsFilter"` + + // 是否精确查询,默认模糊匹配。 + // 0:模糊匹配。 + // 1:精确查询。 + // 注:使用StreamName时该参数生效。 + IsStrict *int64 `json:"IsStrict,omitempty" name:"IsStrict"` + + // 是否按结束时间正序显示,默认逆序。 + // 0:逆序。 + // 1:正序。 + IsAsc *int64 `json:"IsAsc,omitempty" name:"IsAsc"` +} + +type DescribeLiveStreamEventListRequest struct { + *tchttp.BaseRequest + + // 起始时间。 + // UTC 格式,例如:2018-12-29T19:00:00Z。 + // 支持查询60天内的历史记录。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间。 + // UTC 格式,例如:2018-12-29T20:00:00Z。 + // 不超过当前时间,且和起始时间相差不得超过30天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称,不支持通配符(*)查询,默认模糊匹配。 + // 可使用IsStrict字段改为精确查询。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 取得第几页。 + // 默认值:1。 + // 注: 目前只支持10000条内的查询。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 分页大小。 + // 最大值:100。 + // 取值范围:1~100 之间的任意整数。 + // 默认值:10。 + // 注: 目前只支持10000条内的查询。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 是否过滤,默认不过滤。 + // 0:不进行任何过滤。 + // 1:过滤掉开播失败的,只返回开播成功的。 + IsFilter *int64 `json:"IsFilter,omitempty" name:"IsFilter"` + + // 是否精确查询,默认模糊匹配。 + // 0:模糊匹配。 + // 1:精确查询。 + // 注:使用StreamName时该参数生效。 + IsStrict *int64 `json:"IsStrict,omitempty" name:"IsStrict"` + + // 是否按结束时间正序显示,默认逆序。 + // 0:逆序。 + // 1:正序。 + IsAsc *int64 `json:"IsAsc,omitempty" name:"IsAsc"` +} + +func (r *DescribeLiveStreamEventListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamEventListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "AppName") + delete(f, "DomainName") + delete(f, "StreamName") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "IsFilter") + delete(f, "IsStrict") + delete(f, "IsAsc") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveStreamEventListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamEventListResponseParams struct { + // 推断流事件列表。 + EventList []*StreamEventInfo `json:"EventList,omitempty" name:"EventList"` + + // 分页的页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页大小。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 符合条件的总个数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveStreamEventListResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveStreamEventListResponseParams `json:"Response"` +} + +func (r *DescribeLiveStreamEventListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamEventListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamOnlineListRequestParams struct { + // 推流域名。多域名用户需要填写 DomainName。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。多路径用户需要填写 AppName。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 取得第几页,默认1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页大小,最大100。 + // 取值:10~100之间的任意整数。 + // 默认值:10。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 流名称,用于精确查询。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type DescribeLiveStreamOnlineListRequest struct { + *tchttp.BaseRequest + + // 推流域名。多域名用户需要填写 DomainName。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。多路径用户需要填写 AppName。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 取得第几页,默认1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页大小,最大100。 + // 取值:10~100之间的任意整数。 + // 默认值:10。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 流名称,用于精确查询。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *DescribeLiveStreamOnlineListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamOnlineListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveStreamOnlineListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamOnlineListResponseParams struct { + // 符合条件的总个数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 分页的页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页显示的条数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 正在推送流的信息列表。 + OnlineInfo []*StreamOnlineInfo `json:"OnlineInfo,omitempty" name:"OnlineInfo"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveStreamOnlineListResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveStreamOnlineListResponseParams `json:"Response"` +} + +func (r *DescribeLiveStreamOnlineListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamOnlineListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamPublishedListRequestParams struct { + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 结束时间。 + // UTC 格式,例如:2016-06-30T19:00:00Z。 + // 不超过当前时间。 + // 注意:EndTime和StartTime相差不可超过30天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 起始时间。 + // UTC 格式,例如:2016-06-29T19:00:00Z。 + // 最长支持查询60天内数据。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。不支持模糊匹配。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 取得第几页。 + // 默认值:1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 分页大小。 + // 最大值:100。 + // 取值范围:10~100 之前的任意整数。 + // 默认值:10。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 流名称,支持模糊匹配。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type DescribeLiveStreamPublishedListRequest struct { + *tchttp.BaseRequest + + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 结束时间。 + // UTC 格式,例如:2016-06-30T19:00:00Z。 + // 不超过当前时间。 + // 注意:EndTime和StartTime相差不可超过30天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 起始时间。 + // UTC 格式,例如:2016-06-29T19:00:00Z。 + // 最长支持查询60天内数据。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 推流路径,与推流和播放地址中的 AppName 保持一致,默认为 live。不支持模糊匹配。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 取得第几页。 + // 默认值:1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 分页大小。 + // 最大值:100。 + // 取值范围:10~100 之前的任意整数。 + // 默认值:10。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 流名称,支持模糊匹配。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *DescribeLiveStreamPublishedListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamPublishedListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "EndTime") + delete(f, "StartTime") + delete(f, "AppName") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveStreamPublishedListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamPublishedListResponseParams struct { + // 推流记录信息。 + PublishInfo []*StreamName `json:"PublishInfo,omitempty" name:"PublishInfo"` + + // 分页的页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页大小 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 符合条件的总个数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveStreamPublishedListResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveStreamPublishedListResponseParams `json:"Response"` +} + +func (r *DescribeLiveStreamPublishedListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamPublishedListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamPushInfoListRequestParams struct { + // 推流域名。 + PushDomain *string `json:"PushDomain,omitempty" name:"PushDomain"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 页数, + // 范围[1,10000], + // 默认值:1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数, + // 范围:[1,1000], + // 默认值: 200。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` +} + +type DescribeLiveStreamPushInfoListRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + PushDomain *string `json:"PushDomain,omitempty" name:"PushDomain"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 页数, + // 范围[1,10000], + // 默认值:1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数, + // 范围:[1,1000], + // 默认值: 200。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` +} + +func (r *DescribeLiveStreamPushInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamPushInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "PushDomain") + delete(f, "AppName") + delete(f, "PageNum") + delete(f, "PageSize") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveStreamPushInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamPushInfoListResponseParams struct { + // 直播流的统计信息列表。 + DataInfoList []*PushDataInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 所有在线流的总数量。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 当前数据所在页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页的在线流的个数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveStreamPushInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveStreamPushInfoListResponseParams `json:"Response"` +} + +func (r *DescribeLiveStreamPushInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamPushInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamStateRequestParams struct { + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type DescribeLiveStreamStateRequest struct { + *tchttp.BaseRequest + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *DescribeLiveStreamStateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamStateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "AppName") + delete(f, "DomainName") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveStreamStateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveStreamStateResponseParams struct { + // 流状态, + // active:活跃, + // inactive:非活跃, + // forbid:禁播。 + StreamState *string `json:"StreamState,omitempty" name:"StreamState"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveStreamStateResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveStreamStateResponseParams `json:"Response"` +} + +func (r *DescribeLiveStreamStateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveStreamStateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTimeShiftBillInfoListRequestParams struct { + // UTC开始时间,支持最近三个月的查询,查询时间最长跨度为一个月。 + // + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // UTC结束时间,支持最近三个月的查询,查询时间最长跨度为一个月。 + // + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流域名列表,若不传递此参数,则表示查询总体数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` +} + +type DescribeLiveTimeShiftBillInfoListRequest struct { + *tchttp.BaseRequest + + // UTC开始时间,支持最近三个月的查询,查询时间最长跨度为一个月。 + // + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // UTC结束时间,支持最近三个月的查询,查询时间最长跨度为一个月。 + // + // 使用 UTC 格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流域名列表,若不传递此参数,则表示查询总体数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` +} + +func (r *DescribeLiveTimeShiftBillInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTimeShiftBillInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PushDomains") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveTimeShiftBillInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTimeShiftBillInfoListResponseParams struct { + // 时移计费明细数据。 + DataInfoList []*TimeShiftBillData `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveTimeShiftBillInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveTimeShiftBillInfoListResponseParams `json:"Response"` +} + +func (r *DescribeLiveTimeShiftBillInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTimeShiftBillInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeDetailInfoRequestParams struct { + // 推流域名。 + PushDomain *string `json:"PushDomain,omitempty" name:"PushDomain"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 查询时间,北京时间, + // 格式:yyyymmdd。 + // 注意:支持查询近1个月内某天的详细数据,截止到昨天。 + DayTime *string `json:"DayTime,omitempty" name:"DayTime"` + + // 页数,默认1, + // 不超过100页。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,默认20, + // 范围:[10,1000]。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 起始天时间,北京时间, + // 格式:yyyymmdd。 + // 注意:支持查询近1个月内的详细数据。 + StartDayTime *string `json:"StartDayTime,omitempty" name:"StartDayTime"` + + // 结束天时间,北京时间, + // 格式:yyyymmdd。 + // 注意:支持查询近1个月内的详细数据,截止到昨天,注意DayTime 与(StartDayTime,EndDayTime)必须要传一个,如果都传,会以DayTime为准 。 + EndDayTime *string `json:"EndDayTime,omitempty" name:"EndDayTime"` +} + +type DescribeLiveTranscodeDetailInfoRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + PushDomain *string `json:"PushDomain,omitempty" name:"PushDomain"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 查询时间,北京时间, + // 格式:yyyymmdd。 + // 注意:支持查询近1个月内某天的详细数据,截止到昨天。 + DayTime *string `json:"DayTime,omitempty" name:"DayTime"` + + // 页数,默认1, + // 不超过100页。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,默认20, + // 范围:[10,1000]。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 起始天时间,北京时间, + // 格式:yyyymmdd。 + // 注意:支持查询近1个月内的详细数据。 + StartDayTime *string `json:"StartDayTime,omitempty" name:"StartDayTime"` + + // 结束天时间,北京时间, + // 格式:yyyymmdd。 + // 注意:支持查询近1个月内的详细数据,截止到昨天,注意DayTime 与(StartDayTime,EndDayTime)必须要传一个,如果都传,会以DayTime为准 。 + EndDayTime *string `json:"EndDayTime,omitempty" name:"EndDayTime"` +} + +func (r *DescribeLiveTranscodeDetailInfoRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeDetailInfoRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "PushDomain") + delete(f, "StreamName") + delete(f, "DayTime") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "StartDayTime") + delete(f, "EndDayTime") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveTranscodeDetailInfoRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeDetailInfoResponseParams struct { + // 统计数据列表。 + DataInfoList []*TranscodeDetailInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 总个数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveTranscodeDetailInfoResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveTranscodeDetailInfoResponseParams `json:"Response"` +} + +func (r *DescribeLiveTranscodeDetailInfoResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeDetailInfoResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeRulesRequestParams struct { + // 要筛选的模板ID数组。 + TemplateIds []*int64 `json:"TemplateIds,omitempty" name:"TemplateIds"` + + // 要筛选的域名数组。 + DomainNames []*string `json:"DomainNames,omitempty" name:"DomainNames"` +} + +type DescribeLiveTranscodeRulesRequest struct { + *tchttp.BaseRequest + + // 要筛选的模板ID数组。 + TemplateIds []*int64 `json:"TemplateIds,omitempty" name:"TemplateIds"` + + // 要筛选的域名数组。 + DomainNames []*string `json:"DomainNames,omitempty" name:"DomainNames"` +} + +func (r *DescribeLiveTranscodeRulesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeRulesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateIds") + delete(f, "DomainNames") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveTranscodeRulesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeRulesResponseParams struct { + // 转码规则列表。 + Rules []*RuleInfo `json:"Rules,omitempty" name:"Rules"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveTranscodeRulesResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveTranscodeRulesResponseParams `json:"Response"` +} + +func (r *DescribeLiveTranscodeRulesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeRulesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeTemplateRequestParams struct { + // 模板 ID。 + // 注意:在创建转码模板接口 [CreateLiveTranscodeTemplate](/document/product/267/32646) 调用的返回值中获取模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +type DescribeLiveTranscodeTemplateRequest struct { + *tchttp.BaseRequest + + // 模板 ID。 + // 注意:在创建转码模板接口 [CreateLiveTranscodeTemplate](/document/product/267/32646) 调用的返回值中获取模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` +} + +func (r *DescribeLiveTranscodeTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveTranscodeTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeTemplateResponseParams struct { + // 模板信息。 + Template *TemplateInfo `json:"Template,omitempty" name:"Template"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveTranscodeTemplateResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveTranscodeTemplateResponseParams `json:"Response"` +} + +func (r *DescribeLiveTranscodeTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeTemplatesRequestParams struct { + +} + +type DescribeLiveTranscodeTemplatesRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveTranscodeTemplatesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeTemplatesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveTranscodeTemplatesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeTemplatesResponseParams struct { + // 转码模板列表。 + Templates []*TemplateInfo `json:"Templates,omitempty" name:"Templates"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveTranscodeTemplatesResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveTranscodeTemplatesResponseParams `json:"Response"` +} + +func (r *DescribeLiveTranscodeTemplatesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeTemplatesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeTotalInfoRequestParams struct { + // 开始时间,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流域名列表,若不填,表示查询所有域名总体数据。 + // 指定域名时返回1小时粒度数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` + + // 可选值: + // Mainland:查询中国大陆(境内)数据, + // Oversea:则查询国际/港澳台(境外)数据, + // 默认:查询全球地区(境内+境外)的数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` +} + +type DescribeLiveTranscodeTotalInfoRequest struct { + *tchttp.BaseRequest + + // 开始时间,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流域名列表,若不填,表示查询所有域名总体数据。 + // 指定域名时返回1小时粒度数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` + + // 可选值: + // Mainland:查询中国大陆(境内)数据, + // Oversea:则查询国际/港澳台(境外)数据, + // 默认:查询全球地区(境内+境外)的数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` +} + +func (r *DescribeLiveTranscodeTotalInfoRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeTotalInfoRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PushDomains") + delete(f, "MainlandOrOversea") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveTranscodeTotalInfoRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveTranscodeTotalInfoResponseParams struct { + // 统计数据列表。 + // 注意:此字段可能返回 null,表示取不到有效值。 + DataInfoList []*TranscodeTotalInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveTranscodeTotalInfoResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveTranscodeTotalInfoResponseParams `json:"Response"` +} + +func (r *DescribeLiveTranscodeTotalInfoResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveTranscodeTotalInfoResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveWatermarkRequestParams struct { + // DescribeLiveWatermarks接口返回的水印 ID。 + WatermarkId *uint64 `json:"WatermarkId,omitempty" name:"WatermarkId"` +} + +type DescribeLiveWatermarkRequest struct { + *tchttp.BaseRequest + + // DescribeLiveWatermarks接口返回的水印 ID。 + WatermarkId *uint64 `json:"WatermarkId,omitempty" name:"WatermarkId"` +} + +func (r *DescribeLiveWatermarkRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveWatermarkRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "WatermarkId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveWatermarkRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveWatermarkResponseParams struct { + // 水印信息。 + Watermark *WatermarkInfo `json:"Watermark,omitempty" name:"Watermark"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveWatermarkResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveWatermarkResponseParams `json:"Response"` +} + +func (r *DescribeLiveWatermarkResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveWatermarkResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveWatermarkRulesRequestParams struct { + +} + +type DescribeLiveWatermarkRulesRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveWatermarkRulesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveWatermarkRulesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveWatermarkRulesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveWatermarkRulesResponseParams struct { + // 水印规则列表。 + Rules []*RuleInfo `json:"Rules,omitempty" name:"Rules"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveWatermarkRulesResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveWatermarkRulesResponseParams `json:"Response"` +} + +func (r *DescribeLiveWatermarkRulesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveWatermarkRulesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveWatermarksRequestParams struct { + +} + +type DescribeLiveWatermarksRequest struct { + *tchttp.BaseRequest + +} + +func (r *DescribeLiveWatermarksRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveWatermarksRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLiveWatermarksRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLiveWatermarksResponseParams struct { + // 水印总个数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 水印信息列表。 + WatermarkList []*WatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLiveWatermarksResponse struct { + *tchttp.BaseResponse + Response *DescribeLiveWatermarksResponseParams `json:"Response"` +} + +func (r *DescribeLiveWatermarksResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLiveWatermarksResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLogDownloadListRequestParams struct { + // 开始时间,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注意:结束时间 - 开始时间 <=7天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +type DescribeLogDownloadListRequest struct { + *tchttp.BaseRequest + + // 开始时间,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注意:结束时间 - 开始时间 <=7天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` +} + +func (r *DescribeLogDownloadListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLogDownloadListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PlayDomains") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLogDownloadListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLogDownloadListResponseParams struct { + // 日志信息列表。 + LogInfoList []*LogInfo `json:"LogInfoList,omitempty" name:"LogInfoList"` + + // 总条数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLogDownloadListResponse struct { + *tchttp.BaseResponse + Response *DescribeLogDownloadListResponseParams `json:"Response"` +} + +func (r *DescribeLogDownloadListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLogDownloadListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribePlayErrorCodeDetailInfoListRequestParams struct { + // 起始时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注:EndTime 和 StartTime 只支持最近1天的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 查询粒度: + // 1-1分钟粒度。 + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` + + // 是,可选值包括”4xx”,”5xx”,支持”4xx,5xx”等这种混合模式。 + StatType *string `json:"StatType,omitempty" name:"StatType"` + + // 播放域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` +} + +type DescribePlayErrorCodeDetailInfoListRequest struct { + *tchttp.BaseRequest + + // 起始时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注:EndTime 和 StartTime 只支持最近1天的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 查询粒度: + // 1-1分钟粒度。 + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` + + // 是,可选值包括”4xx”,”5xx”,支持”4xx,5xx”等这种混合模式。 + StatType *string `json:"StatType,omitempty" name:"StatType"` + + // 播放域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` +} + +func (r *DescribePlayErrorCodeDetailInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribePlayErrorCodeDetailInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "Granularity") + delete(f, "StatType") + delete(f, "PlayDomains") + delete(f, "MainlandOrOversea") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribePlayErrorCodeDetailInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribePlayErrorCodeDetailInfoListResponseParams struct { + // 统计信息列表。 + HttpCodeList []*HttpCodeInfo `json:"HttpCodeList,omitempty" name:"HttpCodeList"` + + // 统计类型。 + StatType *string `json:"StatType,omitempty" name:"StatType"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribePlayErrorCodeDetailInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribePlayErrorCodeDetailInfoListResponseParams `json:"Response"` +} + +func (r *DescribePlayErrorCodeDetailInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribePlayErrorCodeDetailInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribePlayErrorCodeSumInfoListRequestParams struct { + // 起始时间点,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注:EndTime 和 StartTime 只支持最近1天的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名列表,不填表示总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 页数,范围[1,1000],默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围:[1,1000],默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 分组参数,可选值:CountryProIsp(默认值),Country(国家),默认是按照国家+省份+运营商来进行分组;目前国外的省份和运营商暂时无法识别。 + GroupType *string `json:"GroupType,omitempty" name:"GroupType"` + + // 输出字段使用的语言,可选值:Chinese(默认值),English,目前国家,省份和运营商支持多语言。 + OutLanguage *string `json:"OutLanguage,omitempty" name:"OutLanguage"` +} + +type DescribePlayErrorCodeSumInfoListRequest struct { + *tchttp.BaseRequest + + // 起始时间点,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,北京时间。 + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注:EndTime 和 StartTime 只支持最近1天的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名列表,不填表示总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 页数,范围[1,1000],默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围:[1,1000],默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 分组参数,可选值:CountryProIsp(默认值),Country(国家),默认是按照国家+省份+运营商来进行分组;目前国外的省份和运营商暂时无法识别。 + GroupType *string `json:"GroupType,omitempty" name:"GroupType"` + + // 输出字段使用的语言,可选值:Chinese(默认值),English,目前国家,省份和运营商支持多语言。 + OutLanguage *string `json:"OutLanguage,omitempty" name:"OutLanguage"` +} + +func (r *DescribePlayErrorCodeSumInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribePlayErrorCodeSumInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PlayDomains") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "MainlandOrOversea") + delete(f, "GroupType") + delete(f, "OutLanguage") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribePlayErrorCodeSumInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribePlayErrorCodeSumInfoListResponseParams struct { + // 分省份分运营商错误码为2或3或4或5开头的状态码数据信息。 + ProIspInfoList []*ProIspPlayCodeDataInfo `json:"ProIspInfoList,omitempty" name:"ProIspInfoList"` + + // 所有状态码的加和的次数。 + TotalCodeAll *uint64 `json:"TotalCodeAll,omitempty" name:"TotalCodeAll"` + + // 状态码为4开头的总次数。 + TotalCode4xx *uint64 `json:"TotalCode4xx,omitempty" name:"TotalCode4xx"` + + // 状态码为5开头的总次数。 + TotalCode5xx *uint64 `json:"TotalCode5xx,omitempty" name:"TotalCode5xx"` + + // 各状态码的总次数。 + TotalCodeList []*PlayCodeTotalInfo `json:"TotalCodeList,omitempty" name:"TotalCodeList"` + + // 页号。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页大小。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 总记录数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 状态码为2开头的总次数。 + TotalCode2xx *uint64 `json:"TotalCode2xx,omitempty" name:"TotalCode2xx"` + + // 状态码为3开头的总次数。 + TotalCode3xx *uint64 `json:"TotalCode3xx,omitempty" name:"TotalCode3xx"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribePlayErrorCodeSumInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribePlayErrorCodeSumInfoListResponseParams `json:"Response"` +} + +func (r *DescribePlayErrorCodeSumInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribePlayErrorCodeSumInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeProIspPlaySumInfoListRequestParams struct { + // 起始时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注:EndTime 和 StartTime 只支持最近1天的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 统计的类型,可选值:”Province”(省份),”Isp”(运营商),“CountryOrArea”(国家或地区)。 + StatType *string `json:"StatType,omitempty" name:"StatType"` + + // 播放域名列表,不填则为全部。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 页号,范围是[1,1000],默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围是[1,1000],默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 输出字段使用的语言,可选值:Chinese(默认值),English;目前国家,省份和运营商支持多语言。 + OutLanguage *string `json:"OutLanguage,omitempty" name:"OutLanguage"` +} + +type DescribeProIspPlaySumInfoListRequest struct { + *tchttp.BaseRequest + + // 起始时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间, + // 格式:yyyy-mm-dd HH:MM:SS。 + // 注:EndTime 和 StartTime 只支持最近1天的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 统计的类型,可选值:”Province”(省份),”Isp”(运营商),“CountryOrArea”(国家或地区)。 + StatType *string `json:"StatType,omitempty" name:"StatType"` + + // 播放域名列表,不填则为全部。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 页号,范围是[1,1000],默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围是[1,1000],默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 输出字段使用的语言,可选值:Chinese(默认值),English;目前国家,省份和运营商支持多语言。 + OutLanguage *string `json:"OutLanguage,omitempty" name:"OutLanguage"` +} + +func (r *DescribeProIspPlaySumInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeProIspPlaySumInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "StatType") + delete(f, "PlayDomains") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "MainlandOrOversea") + delete(f, "OutLanguage") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeProIspPlaySumInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeProIspPlaySumInfoListResponseParams struct { + // 总流量。 + TotalFlux *float64 `json:"TotalFlux,omitempty" name:"TotalFlux"` + + // 总请求数。 + TotalRequest *uint64 `json:"TotalRequest,omitempty" name:"TotalRequest"` + + // 统计的类型。 + StatType *string `json:"StatType,omitempty" name:"StatType"` + + // 每页的记录数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 页号。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 总记录数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 省份,运营商,国家或地区汇总数据列表。 + DataInfoList []*ProIspPlaySumInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 下载速度,单位:MB/s,计算方式:总流量/总时长。 + AvgFluxPerSecond *float64 `json:"AvgFluxPerSecond,omitempty" name:"AvgFluxPerSecond"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeProIspPlaySumInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeProIspPlaySumInfoListResponseParams `json:"Response"` +} + +func (r *DescribeProIspPlaySumInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeProIspPlaySumInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeProvinceIspPlayInfoListRequestParams struct { + // 起始时间点,当前使用北京时间, + // 例:2019-02-21 10:00:00。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,当前使用北京时间, + // 例:2019-02-21 12:00:00。 + // 注:EndTime 和 StartTime 只支持最近1天的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 支持如下粒度: + // 1:1分钟粒度(跨度不支持超过1天) + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` + + // 统计指标类型: + // “Bandwidth”:带宽 + // “FluxPerSecond”:平均流量 + // “Flux”:流量 + // “Request”:请求数 + // “Online”:并发连接数 + StatType *string `json:"StatType,omitempty" name:"StatType"` + + // 播放域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 要查询的省份(地区)英文名称列表,如 Beijing。 + ProvinceNames []*string `json:"ProvinceNames,omitempty" name:"ProvinceNames"` + + // 要查询的运营商英文名称列表,如 China Mobile ,如果为空,查询所有运营商的数据。 + IspNames []*string `json:"IspNames,omitempty" name:"IspNames"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // ip类型: + // “Ipv6”:Ipv6数据 + // 如果为空,查询总的数据; + IpType *string `json:"IpType,omitempty" name:"IpType"` +} + +type DescribeProvinceIspPlayInfoListRequest struct { + *tchttp.BaseRequest + + // 起始时间点,当前使用北京时间, + // 例:2019-02-21 10:00:00。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,当前使用北京时间, + // 例:2019-02-21 12:00:00。 + // 注:EndTime 和 StartTime 只支持最近1天的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 支持如下粒度: + // 1:1分钟粒度(跨度不支持超过1天) + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` + + // 统计指标类型: + // “Bandwidth”:带宽 + // “FluxPerSecond”:平均流量 + // “Flux”:流量 + // “Request”:请求数 + // “Online”:并发连接数 + StatType *string `json:"StatType,omitempty" name:"StatType"` + + // 播放域名列表。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 要查询的省份(地区)英文名称列表,如 Beijing。 + ProvinceNames []*string `json:"ProvinceNames,omitempty" name:"ProvinceNames"` + + // 要查询的运营商英文名称列表,如 China Mobile ,如果为空,查询所有运营商的数据。 + IspNames []*string `json:"IspNames,omitempty" name:"IspNames"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // ip类型: + // “Ipv6”:Ipv6数据 + // 如果为空,查询总的数据; + IpType *string `json:"IpType,omitempty" name:"IpType"` +} + +func (r *DescribeProvinceIspPlayInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeProvinceIspPlayInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "Granularity") + delete(f, "StatType") + delete(f, "PlayDomains") + delete(f, "ProvinceNames") + delete(f, "IspNames") + delete(f, "MainlandOrOversea") + delete(f, "IpType") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeProvinceIspPlayInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeProvinceIspPlayInfoListResponseParams struct { + // 播放信息列表。 + DataInfoList []*PlayStatInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 统计的类型,和输入参数保持一致。 + StatType *string `json:"StatType,omitempty" name:"StatType"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeProvinceIspPlayInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeProvinceIspPlayInfoListResponseParams `json:"Response"` +} + +func (r *DescribeProvinceIspPlayInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeProvinceIspPlayInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribePullStreamConfigsRequestParams struct { + // 配置 ID。 + // 获取途径:从 CreatePullStreamConfig 接口返回值获取。 + ConfigId *string `json:"ConfigId,omitempty" name:"ConfigId"` +} + +type DescribePullStreamConfigsRequest struct { + *tchttp.BaseRequest + + // 配置 ID。 + // 获取途径:从 CreatePullStreamConfig 接口返回值获取。 + ConfigId *string `json:"ConfigId,omitempty" name:"ConfigId"` +} + +func (r *DescribePullStreamConfigsRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribePullStreamConfigsRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "ConfigId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribePullStreamConfigsRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribePullStreamConfigsResponseParams struct { + // 拉流配置。 + PullStreamConfigs []*PullStreamConfig `json:"PullStreamConfigs,omitempty" name:"PullStreamConfigs"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribePullStreamConfigsResponse struct { + *tchttp.BaseResponse + Response *DescribePullStreamConfigsResponseParams `json:"Response"` +} + +func (r *DescribePullStreamConfigsResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribePullStreamConfigsResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribePushBandwidthAndFluxListRequestParams struct { + // 起始时间点,格式为 yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为 yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过31天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 域名,可以填多个,若不填,表示总体数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` + + // 可选值: + // Mainland:查询中国大陆(境内)数据, + // Oversea:则查询国际/港澳台(境外)数据, + // 不填则默认查询全球地区(境内+境外)的数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 数据粒度,支持如下粒度: + // 5:5分钟粒度,(跨度不支持超过1天), + // 60:1小时粒度(跨度不支持超过一个月), + // 1440:天粒度(跨度不支持超过一个月)。 + // 默认值:5。 + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` + + // 大区,映射表如下: + // China Mainland 中国大陆 + // Asia Pacific I 亚太一区 + // Asia Pacific II 亚太二区 + // Asia Pacific III 亚太三区 + // Europe 欧洲 + // North America 北美 + // South America 南美 + // Middle East 中东 + // Africa 非洲。 + RegionNames []*string `json:"RegionNames,omitempty" name:"RegionNames"` + + // 国家,映射表参照如下文档: + // https://cloud.tencent.com/document/product/267/34019。 + CountryNames []*string `json:"CountryNames,omitempty" name:"CountryNames"` +} + +type DescribePushBandwidthAndFluxListRequest struct { + *tchttp.BaseRequest + + // 起始时间点,格式为 yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为 yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过31天。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 域名,可以填多个,若不填,表示总体数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` + + // 可选值: + // Mainland:查询中国大陆(境内)数据, + // Oversea:则查询国际/港澳台(境外)数据, + // 不填则默认查询全球地区(境内+境外)的数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 数据粒度,支持如下粒度: + // 5:5分钟粒度,(跨度不支持超过1天), + // 60:1小时粒度(跨度不支持超过一个月), + // 1440:天粒度(跨度不支持超过一个月)。 + // 默认值:5。 + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` + + // 大区,映射表如下: + // China Mainland 中国大陆 + // Asia Pacific I 亚太一区 + // Asia Pacific II 亚太二区 + // Asia Pacific III 亚太三区 + // Europe 欧洲 + // North America 北美 + // South America 南美 + // Middle East 中东 + // Africa 非洲。 + RegionNames []*string `json:"RegionNames,omitempty" name:"RegionNames"` + + // 国家,映射表参照如下文档: + // https://cloud.tencent.com/document/product/267/34019。 + CountryNames []*string `json:"CountryNames,omitempty" name:"CountryNames"` +} + +func (r *DescribePushBandwidthAndFluxListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribePushBandwidthAndFluxListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PushDomains") + delete(f, "MainlandOrOversea") + delete(f, "Granularity") + delete(f, "RegionNames") + delete(f, "CountryNames") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribePushBandwidthAndFluxListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribePushBandwidthAndFluxListResponseParams struct { + // 峰值带宽所在时间点,格式为 yyyy-mm-dd HH:MM:SS。 + PeakBandwidthTime *string `json:"PeakBandwidthTime,omitempty" name:"PeakBandwidthTime"` + + // 峰值带宽,单位是 Mbps。 + PeakBandwidth *float64 `json:"PeakBandwidth,omitempty" name:"PeakBandwidth"` + + // 95峰值带宽所在时间点,格式为 yyyy-mm-dd HH:MM:SS。 + P95PeakBandwidthTime *string `json:"P95PeakBandwidthTime,omitempty" name:"P95PeakBandwidthTime"` + + // 95峰值带宽,单位是 Mbps。 + P95PeakBandwidth *float64 `json:"P95PeakBandwidth,omitempty" name:"P95PeakBandwidth"` + + // 总流量,单位是 MB。 + SumFlux *float64 `json:"SumFlux,omitempty" name:"SumFlux"` + + // 明细数据信息。 + DataInfoList []*BillDataInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribePushBandwidthAndFluxListResponse struct { + *tchttp.BaseResponse + Response *DescribePushBandwidthAndFluxListResponseParams `json:"Response"` +} + +func (r *DescribePushBandwidthAndFluxListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribePushBandwidthAndFluxListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeRecordTaskRequestParams struct { + // 查询任务开始时间,Unix 时间戳。设置时间不早于当前时间之前90天的时间,且查询时间跨度不超过一周。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 查询任务结束时间,Unix 时间戳。EndTime 必须大于 StartTime,设置时间不早于当前时间之前90天的时间,且查询时间跨度不超过一周。(注意:任务开始结束时间必须在查询时间范围内)。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 翻页标识,分批拉取时使用:当单次请求无法拉取所有数据,接口将会返回 ScrollToken,下一次请求携带该 Token,将会从下一条记录开始获取。 + ScrollToken *string `json:"ScrollToken,omitempty" name:"ScrollToken"` +} + +type DescribeRecordTaskRequest struct { + *tchttp.BaseRequest + + // 查询任务开始时间,Unix 时间戳。设置时间不早于当前时间之前90天的时间,且查询时间跨度不超过一周。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 查询任务结束时间,Unix 时间戳。EndTime 必须大于 StartTime,设置时间不早于当前时间之前90天的时间,且查询时间跨度不超过一周。(注意:任务开始结束时间必须在查询时间范围内)。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 翻页标识,分批拉取时使用:当单次请求无法拉取所有数据,接口将会返回 ScrollToken,下一次请求携带该 Token,将会从下一条记录开始获取。 + ScrollToken *string `json:"ScrollToken,omitempty" name:"ScrollToken"` +} + +func (r *DescribeRecordTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeRecordTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "StreamName") + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "ScrollToken") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRecordTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeRecordTaskResponseParams struct { + // 翻页标识,当请求未返回所有数据,该字段表示下一条记录的 Token。当该字段为空,说明已无更多数据。 + ScrollToken *string `json:"ScrollToken,omitempty" name:"ScrollToken"` + + // 录制任务列表。当该字段为空,说明已返回所有数据。 + TaskList []*RecordTask `json:"TaskList,omitempty" name:"TaskList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeRecordTaskResponse struct { + *tchttp.BaseResponse + Response *DescribeRecordTaskResponseParams `json:"Response"` +} + +func (r *DescribeRecordTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeRecordTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeScreenShotSheetNumListRequestParams struct { + // utc起始时间,格式为yyyy-mm-ddTHH:MM:SSZ + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // utc结束时间,格式为yyyy-mm-ddTHH:MM:SSZ,支持查询最近1年数据。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 地域信息,可选值包括Mainland,Oversea,前者是查询中国大陆范围内的数据,后者是除中国大陆范围之外的数据,若不传该参数,则查询所有地区的数据。 + Zone *string `json:"Zone,omitempty" name:"Zone"` + + // 推流域名(支持查询2019年11 月1日之后的域名维度数据)。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` + + // 数据维度,数据延迟1个半小时,可选值包括:1、Minute(5分钟粒度,最大支持查询时间范围是31天),2、Day(天粒度,默认值,按照北京时间做跨天处理,最大支持查询时间范围是186天当天)。 + Granularity *string `json:"Granularity,omitempty" name:"Granularity"` +} + +type DescribeScreenShotSheetNumListRequest struct { + *tchttp.BaseRequest + + // utc起始时间,格式为yyyy-mm-ddTHH:MM:SSZ + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // utc结束时间,格式为yyyy-mm-ddTHH:MM:SSZ,支持查询最近1年数据。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 地域信息,可选值包括Mainland,Oversea,前者是查询中国大陆范围内的数据,后者是除中国大陆范围之外的数据,若不传该参数,则查询所有地区的数据。 + Zone *string `json:"Zone,omitempty" name:"Zone"` + + // 推流域名(支持查询2019年11 月1日之后的域名维度数据)。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` + + // 数据维度,数据延迟1个半小时,可选值包括:1、Minute(5分钟粒度,最大支持查询时间范围是31天),2、Day(天粒度,默认值,按照北京时间做跨天处理,最大支持查询时间范围是186天当天)。 + Granularity *string `json:"Granularity,omitempty" name:"Granularity"` +} + +func (r *DescribeScreenShotSheetNumListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeScreenShotSheetNumListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "Zone") + delete(f, "PushDomains") + delete(f, "Granularity") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeScreenShotSheetNumListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeScreenShotSheetNumListResponseParams struct { + // 数据信息列表。 + DataInfoList []*TimeValue `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeScreenShotSheetNumListResponse struct { + *tchttp.BaseResponse + Response *DescribeScreenShotSheetNumListResponseParams `json:"Response"` +} + +func (r *DescribeScreenShotSheetNumListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeScreenShotSheetNumListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeScreenshotTaskRequestParams struct { + // 查询任务开始时间,Unix 时间戳。设置时间不早于当前时间之前90天的时间,且查询时间跨度不超过一周。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 查询任务结束时间,Unix 时间戳。EndTime 必须大于 StartTime,设置时间不早于当前时间之前90天的时间,且查询时间跨度不超过一周。(注意:任务开始结束时间必须在查询时间范围内)。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 翻页标识,分批拉取时使用:当单次请求无法拉取所有数据,接口将会返回 ScrollToken,下一次请求携带该 Token,将会从下一条记录开始获取。 + ScrollToken *string `json:"ScrollToken,omitempty" name:"ScrollToken"` +} + +type DescribeScreenshotTaskRequest struct { + *tchttp.BaseRequest + + // 查询任务开始时间,Unix 时间戳。设置时间不早于当前时间之前90天的时间,且查询时间跨度不超过一周。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 查询任务结束时间,Unix 时间戳。EndTime 必须大于 StartTime,设置时间不早于当前时间之前90天的时间,且查询时间跨度不超过一周。(注意:任务开始结束时间必须在查询时间范围内)。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 翻页标识,分批拉取时使用:当单次请求无法拉取所有数据,接口将会返回 ScrollToken,下一次请求携带该 Token,将会从下一条记录开始获取。 + ScrollToken *string `json:"ScrollToken,omitempty" name:"ScrollToken"` +} + +func (r *DescribeScreenshotTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeScreenshotTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "StreamName") + delete(f, "DomainName") + delete(f, "AppName") + delete(f, "ScrollToken") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeScreenshotTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeScreenshotTaskResponseParams struct { + // 翻页标识,当请求未返回所有数据,该字段表示下一条记录的 Token。当该字段为空,说明已无更多数据。 + ScrollToken *string `json:"ScrollToken,omitempty" name:"ScrollToken"` + + // 截图任务列表。当该字段为空,说明已返回所有数据。 + TaskList []*ScreenshotTask `json:"TaskList,omitempty" name:"TaskList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeScreenshotTaskResponse struct { + *tchttp.BaseResponse + Response *DescribeScreenshotTaskResponseParams `json:"Response"` +} + +func (r *DescribeScreenshotTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeScreenshotTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeStreamDayPlayInfoListRequestParams struct { + // 日期,格式:YYYY-mm-dd。 + // 第二天凌晨3点出昨天的数据,建议在这个时间点之后查询最新数据。支持最近3个月的数据查询。 + DayTime *string `json:"DayTime,omitempty" name:"DayTime"` + + // 播放域名。 + PlayDomain *string `json:"PlayDomain,omitempty" name:"PlayDomain"` + + // 页号,范围[1,1000],默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围[100,1000],默认值是1000。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 可选值: + // Mainland:查询国内数据, + // Oversea:则查询国外数据, + // 默认:查询国内+国外的数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 服务名称,可选值包括LVB(标准直播),LEB(快直播),不填则查LVB+LEB总值。 + ServiceName *string `json:"ServiceName,omitempty" name:"ServiceName"` +} + +type DescribeStreamDayPlayInfoListRequest struct { + *tchttp.BaseRequest + + // 日期,格式:YYYY-mm-dd。 + // 第二天凌晨3点出昨天的数据,建议在这个时间点之后查询最新数据。支持最近3个月的数据查询。 + DayTime *string `json:"DayTime,omitempty" name:"DayTime"` + + // 播放域名。 + PlayDomain *string `json:"PlayDomain,omitempty" name:"PlayDomain"` + + // 页号,范围[1,1000],默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围[100,1000],默认值是1000。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 可选值: + // Mainland:查询国内数据, + // Oversea:则查询国外数据, + // 默认:查询国内+国外的数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 服务名称,可选值包括LVB(标准直播),LEB(快直播),不填则查LVB+LEB总值。 + ServiceName *string `json:"ServiceName,omitempty" name:"ServiceName"` +} + +func (r *DescribeStreamDayPlayInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeStreamDayPlayInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DayTime") + delete(f, "PlayDomain") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "MainlandOrOversea") + delete(f, "ServiceName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeStreamDayPlayInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeStreamDayPlayInfoListResponseParams struct { + // 播放数据信息列表。 + DataInfoList []*PlayDataInfoByStream `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 总数量。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 当前数据所处页码。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeStreamDayPlayInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeStreamDayPlayInfoListResponseParams `json:"Response"` +} + +func (r *DescribeStreamDayPlayInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeStreamDayPlayInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeStreamPlayInfoListRequestParams struct { + // 开始时间,北京时间,格式为yyyy-mm-dd HH:MM:SS + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间,格式为yyyy-mm-dd HH:MM:SS, + // 结束时间 和 开始时间跨度不支持超过24小时,支持距当前时间一个月内的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名, + // 若不填,则为查询所有播放域名的在线流数据。 + PlayDomain *string `json:"PlayDomain,omitempty" name:"PlayDomain"` + + // 流名称,精确匹配。 + // 若不填,则为查询总体播放数据。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流路径,与播放地址中的AppName保持一致,会精确匹配,在同时传递了StreamName时生效。 + // 若不填,则为查询总体播放数据。 + // 注意:按AppName查询请先联系工单申请,开通后配置生效预计需要5个工作日左右,具体时间以最终回复为准。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 服务名称,可选值包括LVB(标准直播),LEB(快直播),不填则查LVB+LEB总值。 + ServiceName *string `json:"ServiceName,omitempty" name:"ServiceName"` +} + +type DescribeStreamPlayInfoListRequest struct { + *tchttp.BaseRequest + + // 开始时间,北京时间,格式为yyyy-mm-dd HH:MM:SS + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,北京时间,格式为yyyy-mm-dd HH:MM:SS, + // 结束时间 和 开始时间跨度不支持超过24小时,支持距当前时间一个月内的数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名, + // 若不填,则为查询所有播放域名的在线流数据。 + PlayDomain *string `json:"PlayDomain,omitempty" name:"PlayDomain"` + + // 流名称,精确匹配。 + // 若不填,则为查询总体播放数据。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流路径,与播放地址中的AppName保持一致,会精确匹配,在同时传递了StreamName时生效。 + // 若不填,则为查询总体播放数据。 + // 注意:按AppName查询请先联系工单申请,开通后配置生效预计需要5个工作日左右,具体时间以最终回复为准。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 服务名称,可选值包括LVB(标准直播),LEB(快直播),不填则查LVB+LEB总值。 + ServiceName *string `json:"ServiceName,omitempty" name:"ServiceName"` +} + +func (r *DescribeStreamPlayInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeStreamPlayInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PlayDomain") + delete(f, "StreamName") + delete(f, "AppName") + delete(f, "ServiceName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeStreamPlayInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeStreamPlayInfoListResponseParams struct { + // 统计信息列表,时间粒度是1分钟。 + DataInfoList []*DayStreamPlayInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeStreamPlayInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeStreamPlayInfoListResponseParams `json:"Response"` +} + +func (r *DescribeStreamPlayInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeStreamPlayInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeStreamPushInfoListRequestParams struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 起始时间点,北京时间,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,北京时间,格式为yyyy-mm-dd HH:MM:SS,支持查询最近7天数据,建议查询时间跨度在3小时之内。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流域名。 + PushDomain *string `json:"PushDomain,omitempty" name:"PushDomain"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` +} + +type DescribeStreamPushInfoListRequest struct { + *tchttp.BaseRequest + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 起始时间点,北京时间,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,北京时间,格式为yyyy-mm-dd HH:MM:SS,支持查询最近7天数据,建议查询时间跨度在3小时之内。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流域名。 + PushDomain *string `json:"PushDomain,omitempty" name:"PushDomain"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` +} + +func (r *DescribeStreamPushInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeStreamPushInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StreamName") + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PushDomain") + delete(f, "AppName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeStreamPushInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeStreamPushInfoListResponseParams struct { + // 返回的数据列表。 + DataInfoList []*PushQualityData `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeStreamPushInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeStreamPushInfoListResponseParams `json:"Response"` +} + +func (r *DescribeStreamPushInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeStreamPushInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeTopClientIpSumInfoListRequestParams struct { + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS + // 时间跨度在[0,4小时],支持最近1天数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名,默认为不填,表示求总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 页号,范围是[1,1000],默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围是[1,1000],默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 排序指标,可选值包括TotalRequest(默认值),FailedRequest,TotalFlux。 + OrderParam *string `json:"OrderParam,omitempty" name:"OrderParam"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 输出字段使用的语言,可选值:Chinese(默认值),English;目前国家,省份和运营商支持多语言。 + OutLanguage *string `json:"OutLanguage,omitempty" name:"OutLanguage"` +} + +type DescribeTopClientIpSumInfoListRequest struct { + *tchttp.BaseRequest + + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS + // 时间跨度在[0,4小时],支持最近1天数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 播放域名,默认为不填,表示求总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 页号,范围是[1,1000],默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围是[1,1000],默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 排序指标,可选值包括TotalRequest(默认值),FailedRequest,TotalFlux。 + OrderParam *string `json:"OrderParam,omitempty" name:"OrderParam"` + + // 地域,可选值:Mainland,Oversea,China,Foreign,Global(默认值);如果为空,查询总的数据;如果为“Mainland”,查询中国大陆的数据;如果为“Oversea”,则查询中国大陆以外的数据;如果为China,查询中国的数据(包括港澳台);如果为Foreign,查询国外的数据(不包括港澳台)。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 输出字段使用的语言,可选值:Chinese(默认值),English;目前国家,省份和运营商支持多语言。 + OutLanguage *string `json:"OutLanguage,omitempty" name:"OutLanguage"` +} + +func (r *DescribeTopClientIpSumInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeTopClientIpSumInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PlayDomains") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "OrderParam") + delete(f, "MainlandOrOversea") + delete(f, "OutLanguage") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTopClientIpSumInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeTopClientIpSumInfoListResponseParams struct { + // 页号,范围是[1,1000],默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围是[1,1000],默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 排序指标,可选值包括”TotalRequest”,”FailedRequest”,“TotalFlux”。 + OrderParam *string `json:"OrderParam,omitempty" name:"OrderParam"` + + // 记录总数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 记录总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 数据内容。 + DataInfoList []*ClientIpPlaySumInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeTopClientIpSumInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeTopClientIpSumInfoListResponseParams `json:"Response"` +} + +func (r *DescribeTopClientIpSumInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeTopClientIpSumInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeTranscodeTaskNumRequestParams struct { + // 起始时间,格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,格式:yyyy-mm-dd HH:MM:SS。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流域名列表,不填表示总体数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` +} + +type DescribeTranscodeTaskNumRequest struct { + *tchttp.BaseRequest + + // 起始时间,格式:yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,格式:yyyy-mm-dd HH:MM:SS。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 推流域名列表,不填表示总体数据。 + PushDomains []*string `json:"PushDomains,omitempty" name:"PushDomains"` +} + +func (r *DescribeTranscodeTaskNumRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeTranscodeTaskNumRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "PushDomains") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTranscodeTaskNumRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeTranscodeTaskNumResponseParams struct { + // 任务数列表。 + DataInfoList []*TranscodeTaskNum `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeTranscodeTaskNumResponse struct { + *tchttp.BaseResponse + Response *DescribeTranscodeTaskNumResponseParams `json:"Response"` +} + +func (r *DescribeTranscodeTaskNumResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeTranscodeTaskNumResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeUploadStreamNumsRequestParams struct { + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过31天。支持最近31天的数据查询 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 直播域名,若不填,表示总体数据。 + Domains []*string `json:"Domains,omitempty" name:"Domains"` + + // 数据粒度,支持如下粒度: + // 5:5分钟粒度,(跨度不支持超过1天), + // 1440:天粒度(跨度不支持超过一个月)。 + // 默认值:5。 + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` +} + +type DescribeUploadStreamNumsRequest struct { + *tchttp.BaseRequest + + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS,起始和结束时间跨度不支持超过31天。支持最近31天的数据查询 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 直播域名,若不填,表示总体数据。 + Domains []*string `json:"Domains,omitempty" name:"Domains"` + + // 数据粒度,支持如下粒度: + // 5:5分钟粒度,(跨度不支持超过1天), + // 1440:天粒度(跨度不支持超过一个月)。 + // 默认值:5。 + Granularity *uint64 `json:"Granularity,omitempty" name:"Granularity"` +} + +func (r *DescribeUploadStreamNumsRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeUploadStreamNumsRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "Domains") + delete(f, "Granularity") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeUploadStreamNumsRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeUploadStreamNumsResponseParams struct { + // 明细数据信息 + DataInfoList []*ConcurrentRecordStreamNum `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeUploadStreamNumsResponse struct { + *tchttp.BaseResponse + Response *DescribeUploadStreamNumsResponseParams `json:"Response"` +} + +func (r *DescribeUploadStreamNumsResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeUploadStreamNumsResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeVisitTopSumInfoListRequestParams struct { + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS + // 时间跨度在(0,4小时],支持最近1天数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 峰值指标,可选值包括”Domain”,”StreamId”。 + TopIndex *string `json:"TopIndex,omitempty" name:"TopIndex"` + + // 播放域名,默认为不填,表示求总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 页号, + // 范围是[1,1000], + // 默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围是[1,1000], + // 默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 排序指标,可选值包括” AvgFluxPerSecond”,”TotalRequest”(默认),“TotalFlux”。 + OrderParam *string `json:"OrderParam,omitempty" name:"OrderParam"` +} + +type DescribeVisitTopSumInfoListRequest struct { + *tchttp.BaseRequest + + // 起始时间点,格式为yyyy-mm-dd HH:MM:SS。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间点,格式为yyyy-mm-dd HH:MM:SS + // 时间跨度在(0,4小时],支持最近1天数据查询。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 峰值指标,可选值包括”Domain”,”StreamId”。 + TopIndex *string `json:"TopIndex,omitempty" name:"TopIndex"` + + // 播放域名,默认为不填,表示求总体数据。 + PlayDomains []*string `json:"PlayDomains,omitempty" name:"PlayDomains"` + + // 页号, + // 范围是[1,1000], + // 默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围是[1,1000], + // 默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 排序指标,可选值包括” AvgFluxPerSecond”,”TotalRequest”(默认),“TotalFlux”。 + OrderParam *string `json:"OrderParam,omitempty" name:"OrderParam"` +} + +func (r *DescribeVisitTopSumInfoListRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeVisitTopSumInfoListRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "TopIndex") + delete(f, "PlayDomains") + delete(f, "PageNum") + delete(f, "PageSize") + delete(f, "OrderParam") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeVisitTopSumInfoListRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeVisitTopSumInfoListResponseParams struct { + // 页号, + // 范围是[1,1000], + // 默认值是1。 + PageNum *uint64 `json:"PageNum,omitempty" name:"PageNum"` + + // 每页个数,范围是[1,1000], + // 默认值是20。 + PageSize *uint64 `json:"PageSize,omitempty" name:"PageSize"` + + // 峰值指标,可选值包括”Domain”,”StreamId”。 + TopIndex *string `json:"TopIndex,omitempty" name:"TopIndex"` + + // 排序指标,可选值包括” AvgFluxPerSecond”(按每秒平均流量排序),”TotalRequest”(默认,按总请求数排序),“TotalFlux”(按总流量排序)。 + OrderParam *string `json:"OrderParam,omitempty" name:"OrderParam"` + + // 记录总数。 + TotalNum *uint64 `json:"TotalNum,omitempty" name:"TotalNum"` + + // 记录总页数。 + TotalPage *uint64 `json:"TotalPage,omitempty" name:"TotalPage"` + + // 数据内容。 + DataInfoList []*PlaySumStatInfo `json:"DataInfoList,omitempty" name:"DataInfoList"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeVisitTopSumInfoListResponse struct { + *tchttp.BaseResponse + Response *DescribeVisitTopSumInfoListResponseParams `json:"Response"` +} + +func (r *DescribeVisitTopSumInfoListResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeVisitTopSumInfoListResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type DomainCertInfo struct { + // 证书Id。 + CertId *int64 `json:"CertId,omitempty" name:"CertId"` + + // 证书名称。 + CertName *string `json:"CertName,omitempty" name:"CertName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 创建时间,UTC格式。 + CreateTime *string `json:"CreateTime,omitempty" name:"CreateTime"` + + // 证书内容。 + HttpsCrt *string `json:"HttpsCrt,omitempty" name:"HttpsCrt"` + + // 证书类型。 + // 0:用户添加证书, + // 1:腾讯云托管证书。 + CertType *int64 `json:"CertType,omitempty" name:"CertType"` + + // 证书过期时间,UTC格式。 + CertExpireTime *string `json:"CertExpireTime,omitempty" name:"CertExpireTime"` + + // 使用此证书的域名名称。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 证书状态。 + Status *int64 `json:"Status,omitempty" name:"Status"` + + // 证书本身标识的域名列表。 + // 比如: ["*.x.com"] + // 注意:此字段可能返回 null,表示取不到有效值。 + CertDomains []*string `json:"CertDomains,omitempty" name:"CertDomains"` + + // 腾讯云ssl的证书Id + // 注意:此字段可能返回 null,表示取不到有效值。 + CloudCertId *string `json:"CloudCertId,omitempty" name:"CloudCertId"` +} + +type DomainDetailInfo struct { + // 国内还是国外: + // Mainland: 表示国内数据。 + // Oversea: 表示国外数据。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` + + // 带宽,单位: Mbps。 + Bandwidth *float64 `json:"Bandwidth,omitempty" name:"Bandwidth"` + + // 流量,单位: MB。 + Flux *float64 `json:"Flux,omitempty" name:"Flux"` + + // 人数。 + Online *uint64 `json:"Online,omitempty" name:"Online"` + + // 请求数。 + Request *uint64 `json:"Request,omitempty" name:"Request"` +} + +type DomainInfo struct { + // 直播域名。 + Name *string `json:"Name,omitempty" name:"Name"` + + // 域名类型: + // 0: 推流。 + // 1: 播放。 + Type *uint64 `json:"Type,omitempty" name:"Type"` + + // 域名状态: + // 0: 停用。 + // 1: 启用。 + Status *uint64 `json:"Status,omitempty" name:"Status"` + + // 添加时间。 + CreateTime *string `json:"CreateTime,omitempty" name:"CreateTime"` + + // 是否有 CName 到固定规则域名: + // 0: 否。 + // 1: 是。 + BCName *uint64 `json:"BCName,omitempty" name:"BCName"` + + // cname 对应的域名。 + TargetDomain *string `json:"TargetDomain,omitempty" name:"TargetDomain"` + + // 播放区域,只在 Type=1 时该参数有意义。 + // 1: 国内。 + // 2: 全球。 + // 3: 海外。 + PlayType *int64 `json:"PlayType,omitempty" name:"PlayType"` + + // 是否慢直播: + // 0: 普通直播。 + // 1: 慢直播。 + IsDelayLive *int64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` + + // 当前客户使用的 cname 信息。 + CurrentCName *string `json:"CurrentCName,omitempty" name:"CurrentCName"` + + // 失效参数,可忽略。 + RentTag *int64 `json:"RentTag,omitempty" name:"RentTag"` + + // 失效参数,可忽略。 + RentExpireTime *string `json:"RentExpireTime,omitempty" name:"RentExpireTime"` + + // 0: 标准直播。 + // 1: 小程序直播。 + // 注意:此字段可能返回 null,表示取不到有效值。 + IsMiniProgramLive *int64 `json:"IsMiniProgramLive,omitempty" name:"IsMiniProgramLive"` +} + +type DomainInfoList struct { + // 域名。 + Domain *string `json:"Domain,omitempty" name:"Domain"` + + // 明细信息。 + DetailInfoList []*DomainDetailInfo `json:"DetailInfoList,omitempty" name:"DetailInfoList"` +} + +// Predefined struct for user +type DropLiveStreamRequestParams struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` +} + +type DropLiveStreamRequest struct { + *tchttp.BaseRequest + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` +} + +func (r *DropLiveStreamRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DropLiveStreamRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StreamName") + delete(f, "DomainName") + delete(f, "AppName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DropLiveStreamRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DropLiveStreamResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DropLiveStreamResponse struct { + *tchttp.BaseResponse + Response *DropLiveStreamResponseParams `json:"Response"` +} + +func (r *DropLiveStreamResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DropLiveStreamResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type EnableLiveDomainRequestParams struct { + // 待启用的直播域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +type EnableLiveDomainRequest struct { + *tchttp.BaseRequest + + // 待启用的直播域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +func (r *EnableLiveDomainRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *EnableLiveDomainRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "EnableLiveDomainRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type EnableLiveDomainResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type EnableLiveDomainResponse struct { + *tchttp.BaseResponse + Response *EnableLiveDomainResponseParams `json:"Response"` +} + +func (r *EnableLiveDomainResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *EnableLiveDomainResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type FlvSpecialParam struct { + // 是否开启边录边传,仅flv格式有效。 + UploadInRecording *bool `json:"UploadInRecording,omitempty" name:"UploadInRecording"` +} + +// Predefined struct for user +type ForbidLiveDomainRequestParams struct { + // 待停用的直播域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +type ForbidLiveDomainRequest struct { + *tchttp.BaseRequest + + // 待停用的直播域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +func (r *ForbidLiveDomainRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ForbidLiveDomainRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ForbidLiveDomainRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ForbidLiveDomainResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ForbidLiveDomainResponse struct { + *tchttp.BaseResponse + Response *ForbidLiveDomainResponseParams `json:"Response"` +} + +func (r *ForbidLiveDomainResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ForbidLiveDomainResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ForbidLiveStreamRequestParams struct { + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 恢复流的时间。UTC 格式,例如:2018-11-29T19:00:00Z。 + // 注意: + // 1. 默认禁推7天,且最长支持禁推90天。 + // 2. 北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + ResumeTime *string `json:"ResumeTime,omitempty" name:"ResumeTime"` + + // 禁推原因。 + // 注明:请务必填写禁推原因,防止误操作。 + // 长度限制:2048字节。 + Reason *string `json:"Reason,omitempty" name:"Reason"` +} + +type ForbidLiveStreamRequest struct { + *tchttp.BaseRequest + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 恢复流的时间。UTC 格式,例如:2018-11-29T19:00:00Z。 + // 注意: + // 1. 默认禁推7天,且最长支持禁推90天。 + // 2. 北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + ResumeTime *string `json:"ResumeTime,omitempty" name:"ResumeTime"` + + // 禁推原因。 + // 注明:请务必填写禁推原因,防止误操作。 + // 长度限制:2048字节。 + Reason *string `json:"Reason,omitempty" name:"Reason"` +} + +func (r *ForbidLiveStreamRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ForbidLiveStreamRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "AppName") + delete(f, "DomainName") + delete(f, "StreamName") + delete(f, "ResumeTime") + delete(f, "Reason") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ForbidLiveStreamRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ForbidLiveStreamResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ForbidLiveStreamResponse struct { + *tchttp.BaseResponse + Response *ForbidLiveStreamResponseParams `json:"Response"` +} + +func (r *ForbidLiveStreamResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ForbidLiveStreamResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type ForbidStreamInfo struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 创建时间。 + CreateTime *string `json:"CreateTime,omitempty" name:"CreateTime"` + + // 禁推过期时间。 + ExpireTime *string `json:"ExpireTime,omitempty" name:"ExpireTime"` + + // 推流路径。 + // 注意:此字段可能返回 null,表示取不到有效值。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + // 注意:此字段可能返回 null,表示取不到有效值。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +type GroupProIspDataInfo struct { + // 省份。 + ProvinceName *string `json:"ProvinceName,omitempty" name:"ProvinceName"` + + // 运营商。 + IspName *string `json:"IspName,omitempty" name:"IspName"` + + // 分钟维度的明细数据。 + DetailInfoList []*CdnPlayStatData `json:"DetailInfoList,omitempty" name:"DetailInfoList"` +} + +type HlsSpecialParam struct { + // HLS续流超时时间。 + // 取值范围[0,1800]。 + FlowContinueDuration *uint64 `json:"FlowContinueDuration,omitempty" name:"FlowContinueDuration"` +} + +type HttpCodeInfo struct { + // HTTP协议返回码。 + // 例:"2xx", "3xx", "4xx", "5xx"。 + HttpCode *string `json:"HttpCode,omitempty" name:"HttpCode"` + + // 统计信息,对于无数据的时间点,会补0。 + ValueList []*HttpCodeValue `json:"ValueList,omitempty" name:"ValueList"` +} + +type HttpCodeValue struct { + // 时间,格式:yyyy-mm-dd HH:MM:SS。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 次数。 + Numbers *uint64 `json:"Numbers,omitempty" name:"Numbers"` + + // 占比。 + Percentage *float64 `json:"Percentage,omitempty" name:"Percentage"` +} + +type HttpStatusData struct { + // 数据时间点, + // 格式:yyyy-mm-dd HH:MM:SS。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 播放状态码详细信息。 + HttpStatusInfoList []*HttpStatusInfo `json:"HttpStatusInfoList,omitempty" name:"HttpStatusInfoList"` +} + +type HttpStatusInfo struct { + // 播放HTTP状态码。 + HttpStatus *string `json:"HttpStatus,omitempty" name:"HttpStatus"` + + // 个数。 + Num *uint64 `json:"Num,omitempty" name:"Num"` +} + +type LiveCertDomainInfo struct { + // 域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否启用域名的https规则。 + // 1:启用 + // 0:禁用 + // -1:保持不变 + Status *int64 `json:"Status,omitempty" name:"Status"` +} + +type LiveDomainCertBindings struct { + // 域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 证书备注。与CertName同义。 + CertificateAlias *string `json:"CertificateAlias,omitempty" name:"CertificateAlias"` + + // 证书类型。 + // 0:自有证书 + // 1:腾讯云ssl托管证书 + CertType *int64 `json:"CertType,omitempty" name:"CertType"` + + // https状态。 + // 1:已开启。 + // 0:已关闭。 + Status *int64 `json:"Status,omitempty" name:"Status"` + + // 证书过期时间。 + CertExpireTime *string `json:"CertExpireTime,omitempty" name:"CertExpireTime"` + + // 证书Id。 + CertId *int64 `json:"CertId,omitempty" name:"CertId"` + + // 腾讯云ssl的证书Id。 + CloudCertId *string `json:"CloudCertId,omitempty" name:"CloudCertId"` + + // 规则最后更新时间。 + // 注意:此字段可能返回 null,表示取不到有效值。 + UpdateTime *string `json:"UpdateTime,omitempty" name:"UpdateTime"` +} + +type LivePackageInfo struct { + // 包 ID。 + Id *string `json:"Id,omitempty" name:"Id"` + + // 总量。 + // 注意:当为流量包时单位为字节。 + // 当为转码包时单位为分钟。 + Total *int64 `json:"Total,omitempty" name:"Total"` + + // 使用量。 + // 注意:当为流量包时单位为字节。 + // 当为转码包时单位为分钟。 + // 当为连麦包时单位为小时。 + Used *int64 `json:"Used,omitempty" name:"Used"` + + // 剩余量。 + // 注意:当为流量包时单位为字节。 + // 当为转码包时单位为分钟。 + // 当为连麦包时单位为小时。 + Left *int64 `json:"Left,omitempty" name:"Left"` + + // 购买时间。 + BuyTime *string `json:"BuyTime,omitempty" name:"BuyTime"` + + // 过期时间。 + ExpireTime *string `json:"ExpireTime,omitempty" name:"ExpireTime"` + + // 包类型,可选值: + // 0: 流量包。 + // 1: 普通转码包。 + // 2: 极速高清包。 + // 3: 连麦包。 + Type *int64 `json:"Type,omitempty" name:"Type"` + + // 包状态,可选值: + // 0: 未使用。 + // 1: 使用中。 + // 2: 已过期。 + // 3: 已冻结。 + // 4: 已耗尽。 + // 5: 已退款 + Status *int64 `json:"Status,omitempty" name:"Status"` +} + +type LogInfo struct { + // 日志名称。 + LogName *string `json:"LogName,omitempty" name:"LogName"` + + // 日志 URL。 + LogUrl *string `json:"LogUrl,omitempty" name:"LogUrl"` + + // 日志生成时间。 + LogTime *string `json:"LogTime,omitempty" name:"LogTime"` + + // 文件大小。 + FileSize *int64 `json:"FileSize,omitempty" name:"FileSize"` +} + +// Predefined struct for user +type ModifyLiveCallbackTemplateRequestParams struct { + // DescribeLiveCallbackTemplates接口返回的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 模板名称。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 开播回调 URL。 + StreamBeginNotifyUrl *string `json:"StreamBeginNotifyUrl,omitempty" name:"StreamBeginNotifyUrl"` + + // 断流回调 URL。 + StreamEndNotifyUrl *string `json:"StreamEndNotifyUrl,omitempty" name:"StreamEndNotifyUrl"` + + // 录制回调 URL。 + RecordNotifyUrl *string `json:"RecordNotifyUrl,omitempty" name:"RecordNotifyUrl"` + + // 截图回调 URL。 + SnapshotNotifyUrl *string `json:"SnapshotNotifyUrl,omitempty" name:"SnapshotNotifyUrl"` + + // 鉴黄回调 URL。 + PornCensorshipNotifyUrl *string `json:"PornCensorshipNotifyUrl,omitempty" name:"PornCensorshipNotifyUrl"` + + // 回调 Key,回调 URL 公用,回调签名详见事件消息通知文档。 + // [事件消息通知](/document/product/267/32744)。 + CallbackKey *string `json:"CallbackKey,omitempty" name:"CallbackKey"` +} + +type ModifyLiveCallbackTemplateRequest struct { + *tchttp.BaseRequest + + // DescribeLiveCallbackTemplates接口返回的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 模板名称。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 开播回调 URL。 + StreamBeginNotifyUrl *string `json:"StreamBeginNotifyUrl,omitempty" name:"StreamBeginNotifyUrl"` + + // 断流回调 URL。 + StreamEndNotifyUrl *string `json:"StreamEndNotifyUrl,omitempty" name:"StreamEndNotifyUrl"` + + // 录制回调 URL。 + RecordNotifyUrl *string `json:"RecordNotifyUrl,omitempty" name:"RecordNotifyUrl"` + + // 截图回调 URL。 + SnapshotNotifyUrl *string `json:"SnapshotNotifyUrl,omitempty" name:"SnapshotNotifyUrl"` + + // 鉴黄回调 URL。 + PornCensorshipNotifyUrl *string `json:"PornCensorshipNotifyUrl,omitempty" name:"PornCensorshipNotifyUrl"` + + // 回调 Key,回调 URL 公用,回调签名详见事件消息通知文档。 + // [事件消息通知](/document/product/267/32744)。 + CallbackKey *string `json:"CallbackKey,omitempty" name:"CallbackKey"` +} + +func (r *ModifyLiveCallbackTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveCallbackTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + delete(f, "TemplateName") + delete(f, "Description") + delete(f, "StreamBeginNotifyUrl") + delete(f, "StreamEndNotifyUrl") + delete(f, "RecordNotifyUrl") + delete(f, "SnapshotNotifyUrl") + delete(f, "PornCensorshipNotifyUrl") + delete(f, "CallbackKey") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLiveCallbackTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveCallbackTemplateResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLiveCallbackTemplateResponse struct { + *tchttp.BaseResponse + Response *ModifyLiveCallbackTemplateResponseParams `json:"Response"` +} + +func (r *ModifyLiveCallbackTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveCallbackTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveDomainCertBindingsRequestParams struct { + // 要绑定证书的播放域名/状态 信息列表。 + // 如果CloudCertId和证书公钥私钥对均不传,且域名列表已有绑定规则,只批量更新域名https规则的启用状态,并把未上传至腾讯云ssl的已有自有证书上传。 + DomainInfos []*LiveCertDomainInfo `json:"DomainInfos,omitempty" name:"DomainInfos"` + + // 腾讯云ssl的证书Id。 + // 见 https://cloud.tencent.com/document/api/400/41665 + CloudCertId *string `json:"CloudCertId,omitempty" name:"CloudCertId"` + + // 证书公钥。 + // CloudCertId和公钥私钥对二选一,若CloudCertId将会舍弃公钥和私钥参数,否则将自动先把公钥私钥对上传至ssl新建证书,并使用上传成功后返回的CloudCertId。 + CertificatePublicKey *string `json:"CertificatePublicKey,omitempty" name:"CertificatePublicKey"` + + // 证书私钥。 + // CloudCertId和公钥私钥对二选一,若传CloudCertId将会舍弃公钥和私钥参数,否则将自动先把公钥私钥对上传至ssl新建证书,并使用上传成功后返回的CloudCertId。 + CertificatePrivateKey *string `json:"CertificatePrivateKey,omitempty" name:"CertificatePrivateKey"` + + // 上传至ssl证书中心的备注信息,只有新建证书时有效。传CloudCertId时会忽略。 + CertificateAlias *string `json:"CertificateAlias,omitempty" name:"CertificateAlias"` +} + +type ModifyLiveDomainCertBindingsRequest struct { + *tchttp.BaseRequest + + // 要绑定证书的播放域名/状态 信息列表。 + // 如果CloudCertId和证书公钥私钥对均不传,且域名列表已有绑定规则,只批量更新域名https规则的启用状态,并把未上传至腾讯云ssl的已有自有证书上传。 + DomainInfos []*LiveCertDomainInfo `json:"DomainInfos,omitempty" name:"DomainInfos"` + + // 腾讯云ssl的证书Id。 + // 见 https://cloud.tencent.com/document/api/400/41665 + CloudCertId *string `json:"CloudCertId,omitempty" name:"CloudCertId"` + + // 证书公钥。 + // CloudCertId和公钥私钥对二选一,若CloudCertId将会舍弃公钥和私钥参数,否则将自动先把公钥私钥对上传至ssl新建证书,并使用上传成功后返回的CloudCertId。 + CertificatePublicKey *string `json:"CertificatePublicKey,omitempty" name:"CertificatePublicKey"` + + // 证书私钥。 + // CloudCertId和公钥私钥对二选一,若传CloudCertId将会舍弃公钥和私钥参数,否则将自动先把公钥私钥对上传至ssl新建证书,并使用上传成功后返回的CloudCertId。 + CertificatePrivateKey *string `json:"CertificatePrivateKey,omitempty" name:"CertificatePrivateKey"` + + // 上传至ssl证书中心的备注信息,只有新建证书时有效。传CloudCertId时会忽略。 + CertificateAlias *string `json:"CertificateAlias,omitempty" name:"CertificateAlias"` +} + +func (r *ModifyLiveDomainCertBindingsRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveDomainCertBindingsRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainInfos") + delete(f, "CloudCertId") + delete(f, "CertificatePublicKey") + delete(f, "CertificatePrivateKey") + delete(f, "CertificateAlias") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLiveDomainCertBindingsRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveDomainCertBindingsResponseParams struct { + // DomainNames 入参中,与证书不匹配的域名列表,将会跳过处理。 + MismatchedDomainNames []*string `json:"MismatchedDomainNames,omitempty" name:"MismatchedDomainNames"` + + // 操作失败的域名及错误码,错误信息,包括MismatchedDomainNames中的域名。 + // 注意:此字段可能返回 null,表示取不到有效值。 + Errors []*BatchDomainOperateErrors `json:"Errors,omitempty" name:"Errors"` + + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLiveDomainCertBindingsResponse struct { + *tchttp.BaseResponse + Response *ModifyLiveDomainCertBindingsResponseParams `json:"Response"` +} + +func (r *ModifyLiveDomainCertBindingsResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveDomainCertBindingsResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveDomainRefererRequestParams struct { + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否开启当前域名的 Referer 黑白名单鉴权。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 名单类型,0:黑名单,1:白名单。 + Type *int64 `json:"Type,omitempty" name:"Type"` + + // 是否允许空 Referer,0:不允许,1:允许。 + AllowEmpty *int64 `json:"AllowEmpty,omitempty" name:"AllowEmpty"` + + // Referer 名单列表,以;分隔。 + Rules *string `json:"Rules,omitempty" name:"Rules"` +} + +type ModifyLiveDomainRefererRequest struct { + *tchttp.BaseRequest + + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否开启当前域名的 Referer 黑白名单鉴权。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 名单类型,0:黑名单,1:白名单。 + Type *int64 `json:"Type,omitempty" name:"Type"` + + // 是否允许空 Referer,0:不允许,1:允许。 + AllowEmpty *int64 `json:"AllowEmpty,omitempty" name:"AllowEmpty"` + + // Referer 名单列表,以;分隔。 + Rules *string `json:"Rules,omitempty" name:"Rules"` +} + +func (r *ModifyLiveDomainRefererRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveDomainRefererRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "Enable") + delete(f, "Type") + delete(f, "AllowEmpty") + delete(f, "Rules") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLiveDomainRefererRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveDomainRefererResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLiveDomainRefererResponse struct { + *tchttp.BaseResponse + Response *ModifyLiveDomainRefererResponseParams `json:"Response"` +} + +func (r *ModifyLiveDomainRefererResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveDomainRefererResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLivePlayAuthKeyRequestParams struct { + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否启用,0:关闭,1:启用。 + // 不传表示不修改当前值。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 鉴权key。 + // 不传表示不修改当前值。 + AuthKey *string `json:"AuthKey,omitempty" name:"AuthKey"` + + // 有效时间,单位:秒。 + // 不传表示不修改当前值。 + AuthDelta *uint64 `json:"AuthDelta,omitempty" name:"AuthDelta"` + + // 鉴权备用key。 + // 不传表示不修改当前值。 + AuthBackKey *string `json:"AuthBackKey,omitempty" name:"AuthBackKey"` +} + +type ModifyLivePlayAuthKeyRequest struct { + *tchttp.BaseRequest + + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否启用,0:关闭,1:启用。 + // 不传表示不修改当前值。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 鉴权key。 + // 不传表示不修改当前值。 + AuthKey *string `json:"AuthKey,omitempty" name:"AuthKey"` + + // 有效时间,单位:秒。 + // 不传表示不修改当前值。 + AuthDelta *uint64 `json:"AuthDelta,omitempty" name:"AuthDelta"` + + // 鉴权备用key。 + // 不传表示不修改当前值。 + AuthBackKey *string `json:"AuthBackKey,omitempty" name:"AuthBackKey"` +} + +func (r *ModifyLivePlayAuthKeyRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLivePlayAuthKeyRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "Enable") + delete(f, "AuthKey") + delete(f, "AuthDelta") + delete(f, "AuthBackKey") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLivePlayAuthKeyRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLivePlayAuthKeyResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLivePlayAuthKeyResponse struct { + *tchttp.BaseResponse + Response *ModifyLivePlayAuthKeyResponseParams `json:"Response"` +} + +func (r *ModifyLivePlayAuthKeyResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLivePlayAuthKeyResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLivePlayDomainRequestParams struct { + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 拉流域名类型。1-国内;2-全球;3-境外 + PlayType *int64 `json:"PlayType,omitempty" name:"PlayType"` +} + +type ModifyLivePlayDomainRequest struct { + *tchttp.BaseRequest + + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 拉流域名类型。1-国内;2-全球;3-境外 + PlayType *int64 `json:"PlayType,omitempty" name:"PlayType"` +} + +func (r *ModifyLivePlayDomainRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLivePlayDomainRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "PlayType") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLivePlayDomainRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLivePlayDomainResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLivePlayDomainResponse struct { + *tchttp.BaseResponse + Response *ModifyLivePlayDomainResponseParams `json:"Response"` +} + +func (r *ModifyLivePlayDomainResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLivePlayDomainResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLivePullStreamTaskRequestParams struct { + // 任务Id。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 操作人姓名。 + Operator *string `json:"Operator,omitempty" name:"Operator"` + + // 拉流源url列表。 + // SourceType为直播(PullLivePushLive)只可以填1个, + // SourceType为点播(PullVodPushLive)可以填多个,上限30个。 + SourceUrls []*string `json:"SourceUrls,omitempty" name:"SourceUrls"` + + // 开始时间。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,注意: + // 1. 结束时间必须大于开始时间; + // 2. 结束时间和开始时间必须大于当前时间; + // 3. 结束时间 和 开始时间 间隔必须小于七天。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 点播拉流转推循环次数。 + // -1:无限循环,直到任务结束。 + // 0:不循环。 + // >0:具体循环次数。次数和时间以先结束的为准。 + // 注意:拉流源为点播,该配置生效。 + VodLoopTimes *int64 `json:"VodLoopTimes,omitempty" name:"VodLoopTimes"` + + // 点播更新SourceUrls后的播放方式: + // ImmediateNewSource:立即从更新的拉流源开始播放; + // ContinueBreakPoint:从上次断流url源的断点处继续,结束后再使用新的拉流源。 + // 注意:拉流源为点播,该配置生效。 + VodRefreshType *string `json:"VodRefreshType,omitempty" name:"VodRefreshType"` + + // 任务状态: + // enable - 启用, + // pause - 暂停。 + Status *string `json:"Status,omitempty" name:"Status"` + + // 选择需要回调的事件(不填则回调全部): + // TaskStart:任务启动回调, + // TaskExit:任务停止回调, + // VodSourceFileStart:从点播源文件开始拉流回调, + // VodSourceFileFinish:从点播源文件拉流结束回调, + // ResetTaskConfig:任务更新回调。 + CallbackEvents []*string `json:"CallbackEvents,omitempty" name:"CallbackEvents"` + + // 自定义回调地址。 + // 相关事件会回调到该地址。 + CallbackUrl *string `json:"CallbackUrl,omitempty" name:"CallbackUrl"` + + // 指定播放文件索引。 + // 注意: 从1开始,不大于SourceUrls中文件个数。 + FileIndex *int64 `json:"FileIndex,omitempty" name:"FileIndex"` + + // 指定播放文件偏移。 + // 注意: + // 1. 单位:秒,配合FileIndex使用。 + OffsetTime *int64 `json:"OffsetTime,omitempty" name:"OffsetTime"` + + // 任务备注。 + Comment *string `json:"Comment,omitempty" name:"Comment"` + + // 备源的类型: + // PullLivePushLive -直播, + // PullVodPushLive -点播。 + // 注意: + // 1. 仅当主源类型为直播源时,备源才会生效。 + // 2. 主直播源拉流中断时,自动使用备源进行拉流。 + // 3. 如果备源为点播文件时,则每次轮播完点播文件就检查主源是否恢复,如果主源恢复则自动切回到主源,否则继续拉备源。 + BackupSourceType *string `json:"BackupSourceType,omitempty" name:"BackupSourceType"` + + // 备源 URL。 + // 只允许填一个备源 URL + BackupSourceUrl *string `json:"BackupSourceUrl,omitempty" name:"BackupSourceUrl"` + + // 水印信息列表。 + // 注意: + // 1. 最多支持4个不同位置的水印。 + // 2. 水印图片 URL 请使用合法外网可访问地址。 + // 3. 支持的水印图片格式:png,jpg等。 + // 4. 轮播任务修改水印后,轮播到下一个文件时新水印生效。 + // 5. 直播源任务修改水印后,水印立即生效。 + // 6. 清除水印时,需携带该水印列表参数,内容为空数组。 + // 7. 暂不支持动图水印。 + WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` +} + +type ModifyLivePullStreamTaskRequest struct { + *tchttp.BaseRequest + + // 任务Id。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 操作人姓名。 + Operator *string `json:"Operator,omitempty" name:"Operator"` + + // 拉流源url列表。 + // SourceType为直播(PullLivePushLive)只可以填1个, + // SourceType为点播(PullVodPushLive)可以填多个,上限30个。 + SourceUrls []*string `json:"SourceUrls,omitempty" name:"SourceUrls"` + + // 开始时间。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,注意: + // 1. 结束时间必须大于开始时间; + // 2. 结束时间和开始时间必须大于当前时间; + // 3. 结束时间 和 开始时间 间隔必须小于七天。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 点播拉流转推循环次数。 + // -1:无限循环,直到任务结束。 + // 0:不循环。 + // >0:具体循环次数。次数和时间以先结束的为准。 + // 注意:拉流源为点播,该配置生效。 + VodLoopTimes *int64 `json:"VodLoopTimes,omitempty" name:"VodLoopTimes"` + + // 点播更新SourceUrls后的播放方式: + // ImmediateNewSource:立即从更新的拉流源开始播放; + // ContinueBreakPoint:从上次断流url源的断点处继续,结束后再使用新的拉流源。 + // 注意:拉流源为点播,该配置生效。 + VodRefreshType *string `json:"VodRefreshType,omitempty" name:"VodRefreshType"` + + // 任务状态: + // enable - 启用, + // pause - 暂停。 + Status *string `json:"Status,omitempty" name:"Status"` + + // 选择需要回调的事件(不填则回调全部): + // TaskStart:任务启动回调, + // TaskExit:任务停止回调, + // VodSourceFileStart:从点播源文件开始拉流回调, + // VodSourceFileFinish:从点播源文件拉流结束回调, + // ResetTaskConfig:任务更新回调。 + CallbackEvents []*string `json:"CallbackEvents,omitempty" name:"CallbackEvents"` + + // 自定义回调地址。 + // 相关事件会回调到该地址。 + CallbackUrl *string `json:"CallbackUrl,omitempty" name:"CallbackUrl"` + + // 指定播放文件索引。 + // 注意: 从1开始,不大于SourceUrls中文件个数。 + FileIndex *int64 `json:"FileIndex,omitempty" name:"FileIndex"` + + // 指定播放文件偏移。 + // 注意: + // 1. 单位:秒,配合FileIndex使用。 + OffsetTime *int64 `json:"OffsetTime,omitempty" name:"OffsetTime"` + + // 任务备注。 + Comment *string `json:"Comment,omitempty" name:"Comment"` + + // 备源的类型: + // PullLivePushLive -直播, + // PullVodPushLive -点播。 + // 注意: + // 1. 仅当主源类型为直播源时,备源才会生效。 + // 2. 主直播源拉流中断时,自动使用备源进行拉流。 + // 3. 如果备源为点播文件时,则每次轮播完点播文件就检查主源是否恢复,如果主源恢复则自动切回到主源,否则继续拉备源。 + BackupSourceType *string `json:"BackupSourceType,omitempty" name:"BackupSourceType"` + + // 备源 URL。 + // 只允许填一个备源 URL + BackupSourceUrl *string `json:"BackupSourceUrl,omitempty" name:"BackupSourceUrl"` + + // 水印信息列表。 + // 注意: + // 1. 最多支持4个不同位置的水印。 + // 2. 水印图片 URL 请使用合法外网可访问地址。 + // 3. 支持的水印图片格式:png,jpg等。 + // 4. 轮播任务修改水印后,轮播到下一个文件时新水印生效。 + // 5. 直播源任务修改水印后,水印立即生效。 + // 6. 清除水印时,需携带该水印列表参数,内容为空数组。 + // 7. 暂不支持动图水印。 + WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` +} + +func (r *ModifyLivePullStreamTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLivePullStreamTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TaskId") + delete(f, "Operator") + delete(f, "SourceUrls") + delete(f, "StartTime") + delete(f, "EndTime") + delete(f, "VodLoopTimes") + delete(f, "VodRefreshType") + delete(f, "Status") + delete(f, "CallbackEvents") + delete(f, "CallbackUrl") + delete(f, "FileIndex") + delete(f, "OffsetTime") + delete(f, "Comment") + delete(f, "BackupSourceType") + delete(f, "BackupSourceUrl") + delete(f, "WatermarkList") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLivePullStreamTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLivePullStreamTaskResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLivePullStreamTaskResponse struct { + *tchttp.BaseResponse + Response *ModifyLivePullStreamTaskResponseParams `json:"Response"` +} + +func (r *ModifyLivePullStreamTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLivePullStreamTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLivePushAuthKeyRequestParams struct { + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否启用,0:关闭,1:启用。 + // 不传表示不修改当前值。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 主鉴权key。 + // 不传表示不修改当前值。 + MasterAuthKey *string `json:"MasterAuthKey,omitempty" name:"MasterAuthKey"` + + // 备鉴权key。 + // 不传表示不修改当前值。 + BackupAuthKey *string `json:"BackupAuthKey,omitempty" name:"BackupAuthKey"` + + // 有效时间,单位:秒。 + AuthDelta *uint64 `json:"AuthDelta,omitempty" name:"AuthDelta"` +} + +type ModifyLivePushAuthKeyRequest struct { + *tchttp.BaseRequest + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否启用,0:关闭,1:启用。 + // 不传表示不修改当前值。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 主鉴权key。 + // 不传表示不修改当前值。 + MasterAuthKey *string `json:"MasterAuthKey,omitempty" name:"MasterAuthKey"` + + // 备鉴权key。 + // 不传表示不修改当前值。 + BackupAuthKey *string `json:"BackupAuthKey,omitempty" name:"BackupAuthKey"` + + // 有效时间,单位:秒。 + AuthDelta *uint64 `json:"AuthDelta,omitempty" name:"AuthDelta"` +} + +func (r *ModifyLivePushAuthKeyRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLivePushAuthKeyRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "Enable") + delete(f, "MasterAuthKey") + delete(f, "BackupAuthKey") + delete(f, "AuthDelta") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLivePushAuthKeyRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLivePushAuthKeyResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLivePushAuthKeyResponse struct { + *tchttp.BaseResponse + Response *ModifyLivePushAuthKeyResponseParams `json:"Response"` +} + +func (r *ModifyLivePushAuthKeyResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLivePushAuthKeyResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveRecordTemplateRequestParams struct { + // DescribeRecordTemplates接口获取到的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 模板名称。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // FLV 录制参数,开启 FLV 录制时设置。 + FlvParam *RecordParam `json:"FlvParam,omitempty" name:"FlvParam"` + + // HLS 录制参数,开启 HLS 录制时设置。 + HlsParam *RecordParam `json:"HlsParam,omitempty" name:"HlsParam"` + + // MP4 录制参数,开启 MP4 录制时设置。 + Mp4Param *RecordParam `json:"Mp4Param,omitempty" name:"Mp4Param"` + + // AAC 录制参数,开启 AAC 录制时设置。 + AacParam *RecordParam `json:"AacParam,omitempty" name:"AacParam"` + + // HLS 录制定制参数。 + HlsSpecialParam *HlsSpecialParam `json:"HlsSpecialParam,omitempty" name:"HlsSpecialParam"` + + // MP3 录制参数,开启 MP3 录制时设置。 + Mp3Param *RecordParam `json:"Mp3Param,omitempty" name:"Mp3Param"` + + // 是否去除水印,类型为慢直播时此参数无效。 + RemoveWatermark *bool `json:"RemoveWatermark,omitempty" name:"RemoveWatermark"` + + // FLV 录制定制参数。 + FlvSpecialParam *FlvSpecialParam `json:"FlvSpecialParam,omitempty" name:"FlvSpecialParam"` +} + +type ModifyLiveRecordTemplateRequest struct { + *tchttp.BaseRequest + + // DescribeRecordTemplates接口获取到的模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 模板名称。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // FLV 录制参数,开启 FLV 录制时设置。 + FlvParam *RecordParam `json:"FlvParam,omitempty" name:"FlvParam"` + + // HLS 录制参数,开启 HLS 录制时设置。 + HlsParam *RecordParam `json:"HlsParam,omitempty" name:"HlsParam"` + + // MP4 录制参数,开启 MP4 录制时设置。 + Mp4Param *RecordParam `json:"Mp4Param,omitempty" name:"Mp4Param"` + + // AAC 录制参数,开启 AAC 录制时设置。 + AacParam *RecordParam `json:"AacParam,omitempty" name:"AacParam"` + + // HLS 录制定制参数。 + HlsSpecialParam *HlsSpecialParam `json:"HlsSpecialParam,omitempty" name:"HlsSpecialParam"` + + // MP3 录制参数,开启 MP3 录制时设置。 + Mp3Param *RecordParam `json:"Mp3Param,omitempty" name:"Mp3Param"` + + // 是否去除水印,类型为慢直播时此参数无效。 + RemoveWatermark *bool `json:"RemoveWatermark,omitempty" name:"RemoveWatermark"` + + // FLV 录制定制参数。 + FlvSpecialParam *FlvSpecialParam `json:"FlvSpecialParam,omitempty" name:"FlvSpecialParam"` +} + +func (r *ModifyLiveRecordTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveRecordTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + delete(f, "TemplateName") + delete(f, "Description") + delete(f, "FlvParam") + delete(f, "HlsParam") + delete(f, "Mp4Param") + delete(f, "AacParam") + delete(f, "HlsSpecialParam") + delete(f, "Mp3Param") + delete(f, "RemoveWatermark") + delete(f, "FlvSpecialParam") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLiveRecordTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveRecordTemplateResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLiveRecordTemplateResponse struct { + *tchttp.BaseResponse + Response *ModifyLiveRecordTemplateResponseParams `json:"Response"` +} + +func (r *ModifyLiveRecordTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveRecordTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveSnapshotTemplateRequestParams struct { + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // Cos 应用 ID。 + // **注:此参数现在须必选。** + CosAppId *int64 `json:"CosAppId,omitempty" name:"CosAppId"` + + // Cos Bucket名称。 + // 注:CosBucket参数值不能包含-[appid] 部分。 + // **注:此参数现在须必选。** + CosBucket *string `json:"CosBucket,omitempty" name:"CosBucket"` + + // Cos 地域。 + // **注:此参数现在须必选。** + CosRegion *string `json:"CosRegion,omitempty" name:"CosRegion"` + + // 模板名称。 + // 长度上限:255字节。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + // 长度上限:1024字节。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 截图间隔,单位s,默认10s。 + // 范围: 5s ~ 300s。 + SnapshotInterval *int64 `json:"SnapshotInterval,omitempty" name:"SnapshotInterval"` + + // 截图宽度。默认:0(原始宽)。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 截图高度。默认:0(原始高)。 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 是否开启鉴黄,默认 0 。 + // 0:不开启。 + // 1:开启。 + PornFlag *int64 `json:"PornFlag,omitempty" name:"PornFlag"` + + // Cos Bucket文件夹前缀。 + CosPrefix *string `json:"CosPrefix,omitempty" name:"CosPrefix"` + + // Cos 文件名称。 + CosFileName *string `json:"CosFileName,omitempty" name:"CosFileName"` +} + +type ModifyLiveSnapshotTemplateRequest struct { + *tchttp.BaseRequest + + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // Cos 应用 ID。 + // **注:此参数现在须必选。** + CosAppId *int64 `json:"CosAppId,omitempty" name:"CosAppId"` + + // Cos Bucket名称。 + // 注:CosBucket参数值不能包含-[appid] 部分。 + // **注:此参数现在须必选。** + CosBucket *string `json:"CosBucket,omitempty" name:"CosBucket"` + + // Cos 地域。 + // **注:此参数现在须必选。** + CosRegion *string `json:"CosRegion,omitempty" name:"CosRegion"` + + // 模板名称。 + // 长度上限:255字节。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + // 长度上限:1024字节。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 截图间隔,单位s,默认10s。 + // 范围: 5s ~ 300s。 + SnapshotInterval *int64 `json:"SnapshotInterval,omitempty" name:"SnapshotInterval"` + + // 截图宽度。默认:0(原始宽)。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 截图高度。默认:0(原始高)。 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 是否开启鉴黄,默认 0 。 + // 0:不开启。 + // 1:开启。 + PornFlag *int64 `json:"PornFlag,omitempty" name:"PornFlag"` + + // Cos Bucket文件夹前缀。 + CosPrefix *string `json:"CosPrefix,omitempty" name:"CosPrefix"` + + // Cos 文件名称。 + CosFileName *string `json:"CosFileName,omitempty" name:"CosFileName"` +} + +func (r *ModifyLiveSnapshotTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveSnapshotTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + delete(f, "CosAppId") + delete(f, "CosBucket") + delete(f, "CosRegion") + delete(f, "TemplateName") + delete(f, "Description") + delete(f, "SnapshotInterval") + delete(f, "Width") + delete(f, "Height") + delete(f, "PornFlag") + delete(f, "CosPrefix") + delete(f, "CosFileName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLiveSnapshotTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveSnapshotTemplateResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLiveSnapshotTemplateResponse struct { + *tchttp.BaseResponse + Response *ModifyLiveSnapshotTemplateResponseParams `json:"Response"` +} + +func (r *ModifyLiveSnapshotTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveSnapshotTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveTranscodeTemplateRequestParams struct { + // 模板 Id。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 视频编码:h264/h265/origin,默认origin。 + // + // origin: 保持原始编码格式 + Vcodec *string `json:"Vcodec,omitempty" name:"Vcodec"` + + // 音频编码:aac,默认aac。 + // 注意:当前该参数未生效,待后续支持! + Acodec *string `json:"Acodec,omitempty" name:"Acodec"` + + // 音频码率,默认0。 + // 范围:0-500。 + AudioBitrate *int64 `json:"AudioBitrate,omitempty" name:"AudioBitrate"` + + // 模板描述。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 视频码率。范围:0kbps - 8000kbps。 + // 0为保持原始码率。 + // 注: 转码模板有码率唯一要求,最终保存的码率可能与输入码率有所差别。 + VideoBitrate *int64 `json:"VideoBitrate,omitempty" name:"VideoBitrate"` + + // 宽。0-3000。 + // 数值必须是2的倍数,0是原始宽度 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 是否保留视频,0:否,1:是。默认1。 + NeedVideo *int64 `json:"NeedVideo,omitempty" name:"NeedVideo"` + + // 是否保留音频,0:否,1:是。默认1。 + NeedAudio *int64 `json:"NeedAudio,omitempty" name:"NeedAudio"` + + // 高。0-3000。 + // 数值必须是2的倍数,0是原始宽度 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 帧率,默认0。 + // 范围0-60 + Fps *int64 `json:"Fps,omitempty" name:"Fps"` + + // 关键帧间隔,单位:秒。 + // 范围2-6 + Gop *int64 `json:"Gop,omitempty" name:"Gop"` + + // 旋转角度,默认0。 + // 可取值:0,90,180,270 + Rotate *int64 `json:"Rotate,omitempty" name:"Rotate"` + + // 编码质量: + // baseline/main/high。 + Profile *string `json:"Profile,omitempty" name:"Profile"` + + // 当设置的码率>原始码率时,是否以原始码率为准。 + // 0:否, 1:是 + // 默认 0。 + BitrateToOrig *int64 `json:"BitrateToOrig,omitempty" name:"BitrateToOrig"` + + // 当设置的高度>原始高度时,是否以原始高度为准。 + // 0:否, 1:是 + // 默认 0。 + HeightToOrig *int64 `json:"HeightToOrig,omitempty" name:"HeightToOrig"` + + // 当设置的帧率>原始帧率时,是否以原始帧率为准。 + // 0:否, 1:是 + // 默认 0。 + FpsToOrig *int64 `json:"FpsToOrig,omitempty" name:"FpsToOrig"` + + // 极速高清视频码率压缩比。 + // 极速高清目标码率=VideoBitrate * (1-AdaptBitratePercent) + // + // 取值范围:0.0到0.5 + AdaptBitratePercent *float64 `json:"AdaptBitratePercent,omitempty" name:"AdaptBitratePercent"` + + // 是否以短边作为高度,0:否,1:是。默认0。 + ShortEdgeAsHeight *int64 `json:"ShortEdgeAsHeight,omitempty" name:"ShortEdgeAsHeight"` + + // DRM 加密类型,可选值:fairplay、normalaes、widevine。 + // 不传递或着为空字符串,清空之前的DRM配置。 + DRMType *string `json:"DRMType,omitempty" name:"DRMType"` + + // DRM 加密项,可选值:AUDIO、SD、HD、UHD1、UHD2,后四个为一组,同组中的内容只能选一个。 + // 不传递或着为空字符串,清空之前的DRM配置。 + DRMTracks *string `json:"DRMTracks,omitempty" name:"DRMTracks"` +} + +type ModifyLiveTranscodeTemplateRequest struct { + *tchttp.BaseRequest + + // 模板 Id。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 视频编码:h264/h265/origin,默认origin。 + // + // origin: 保持原始编码格式 + Vcodec *string `json:"Vcodec,omitempty" name:"Vcodec"` + + // 音频编码:aac,默认aac。 + // 注意:当前该参数未生效,待后续支持! + Acodec *string `json:"Acodec,omitempty" name:"Acodec"` + + // 音频码率,默认0。 + // 范围:0-500。 + AudioBitrate *int64 `json:"AudioBitrate,omitempty" name:"AudioBitrate"` + + // 模板描述。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 视频码率。范围:0kbps - 8000kbps。 + // 0为保持原始码率。 + // 注: 转码模板有码率唯一要求,最终保存的码率可能与输入码率有所差别。 + VideoBitrate *int64 `json:"VideoBitrate,omitempty" name:"VideoBitrate"` + + // 宽。0-3000。 + // 数值必须是2的倍数,0是原始宽度 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 是否保留视频,0:否,1:是。默认1。 + NeedVideo *int64 `json:"NeedVideo,omitempty" name:"NeedVideo"` + + // 是否保留音频,0:否,1:是。默认1。 + NeedAudio *int64 `json:"NeedAudio,omitempty" name:"NeedAudio"` + + // 高。0-3000。 + // 数值必须是2的倍数,0是原始宽度 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 帧率,默认0。 + // 范围0-60 + Fps *int64 `json:"Fps,omitempty" name:"Fps"` + + // 关键帧间隔,单位:秒。 + // 范围2-6 + Gop *int64 `json:"Gop,omitempty" name:"Gop"` + + // 旋转角度,默认0。 + // 可取值:0,90,180,270 + Rotate *int64 `json:"Rotate,omitempty" name:"Rotate"` + + // 编码质量: + // baseline/main/high。 + Profile *string `json:"Profile,omitempty" name:"Profile"` + + // 当设置的码率>原始码率时,是否以原始码率为准。 + // 0:否, 1:是 + // 默认 0。 + BitrateToOrig *int64 `json:"BitrateToOrig,omitempty" name:"BitrateToOrig"` + + // 当设置的高度>原始高度时,是否以原始高度为准。 + // 0:否, 1:是 + // 默认 0。 + HeightToOrig *int64 `json:"HeightToOrig,omitempty" name:"HeightToOrig"` + + // 当设置的帧率>原始帧率时,是否以原始帧率为准。 + // 0:否, 1:是 + // 默认 0。 + FpsToOrig *int64 `json:"FpsToOrig,omitempty" name:"FpsToOrig"` + + // 极速高清视频码率压缩比。 + // 极速高清目标码率=VideoBitrate * (1-AdaptBitratePercent) + // + // 取值范围:0.0到0.5 + AdaptBitratePercent *float64 `json:"AdaptBitratePercent,omitempty" name:"AdaptBitratePercent"` + + // 是否以短边作为高度,0:否,1:是。默认0。 + ShortEdgeAsHeight *int64 `json:"ShortEdgeAsHeight,omitempty" name:"ShortEdgeAsHeight"` + + // DRM 加密类型,可选值:fairplay、normalaes、widevine。 + // 不传递或着为空字符串,清空之前的DRM配置。 + DRMType *string `json:"DRMType,omitempty" name:"DRMType"` + + // DRM 加密项,可选值:AUDIO、SD、HD、UHD1、UHD2,后四个为一组,同组中的内容只能选一个。 + // 不传递或着为空字符串,清空之前的DRM配置。 + DRMTracks *string `json:"DRMTracks,omitempty" name:"DRMTracks"` +} + +func (r *ModifyLiveTranscodeTemplateRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveTranscodeTemplateRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TemplateId") + delete(f, "Vcodec") + delete(f, "Acodec") + delete(f, "AudioBitrate") + delete(f, "Description") + delete(f, "VideoBitrate") + delete(f, "Width") + delete(f, "NeedVideo") + delete(f, "NeedAudio") + delete(f, "Height") + delete(f, "Fps") + delete(f, "Gop") + delete(f, "Rotate") + delete(f, "Profile") + delete(f, "BitrateToOrig") + delete(f, "HeightToOrig") + delete(f, "FpsToOrig") + delete(f, "AdaptBitratePercent") + delete(f, "ShortEdgeAsHeight") + delete(f, "DRMType") + delete(f, "DRMTracks") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLiveTranscodeTemplateRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyLiveTranscodeTemplateResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyLiveTranscodeTemplateResponse struct { + *tchttp.BaseResponse + Response *ModifyLiveTranscodeTemplateResponseParams `json:"Response"` +} + +func (r *ModifyLiveTranscodeTemplateResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyLiveTranscodeTemplateResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyPullStreamConfigRequestParams struct { + // 配置 ID。 + // 获取来源: + // 1. 创建拉流配置接口CreatePullStreamConfig返回的配置 ID。 + // 2. 通过查询接口DescribePullStreamConfigs获取配置 ID。 + ConfigId *string `json:"ConfigId,omitempty" name:"ConfigId"` + + // 源 URL,用于拉流的地址。目前可支持直播流及点播文件。 + // 注意: + // 1. 多个点播 URL 之间使用空格拼接。 + // 2. 目前上限支持10个 URL。 + // 3. 支持拉流文件格式:FLV,RTMP,HLS,MP4。 + // 4. 使用标准三层样式,如:http://test.com/live/stream.flv。 + FromUrl *string `json:"FromUrl,omitempty" name:"FromUrl"` + + // 目的 URL,用于推流的地址,目前限制该目标地址为腾讯域名。 + // 1. 仅支持 RTMP 协议。 + // 2. 使用标准三层样式,如:http://test.com/live/stream.flv。 + ToUrl *string `json:"ToUrl,omitempty" name:"ToUrl"` + + // 区域 ID: + // 1-深圳。 + // 2-上海。 + // 3-天津。 + // 4-中国香港。 + // 如有改动,需同时传入IspId。 + AreaId *int64 `json:"AreaId,omitempty" name:"AreaId"` + + // 运营商 ID, + // 1:电信。 + // 2:移动。 + // 3:联通。 + // 4:其他。 + // AreaId为4的时候,IspId只能为其他。如有改动,需同时传入AreaId。 + IspId *int64 `json:"IspId,omitempty" name:"IspId"` + + // 开始时间。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,注意: + // 1. 结束时间必须大于开始时间; + // 2. 结束时间和开始时间必须大于当前时间; + // 3. 结束时间 和 开始时间 间隔必须小于七天。 + // + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` +} + +type ModifyPullStreamConfigRequest struct { + *tchttp.BaseRequest + + // 配置 ID。 + // 获取来源: + // 1. 创建拉流配置接口CreatePullStreamConfig返回的配置 ID。 + // 2. 通过查询接口DescribePullStreamConfigs获取配置 ID。 + ConfigId *string `json:"ConfigId,omitempty" name:"ConfigId"` + + // 源 URL,用于拉流的地址。目前可支持直播流及点播文件。 + // 注意: + // 1. 多个点播 URL 之间使用空格拼接。 + // 2. 目前上限支持10个 URL。 + // 3. 支持拉流文件格式:FLV,RTMP,HLS,MP4。 + // 4. 使用标准三层样式,如:http://test.com/live/stream.flv。 + FromUrl *string `json:"FromUrl,omitempty" name:"FromUrl"` + + // 目的 URL,用于推流的地址,目前限制该目标地址为腾讯域名。 + // 1. 仅支持 RTMP 协议。 + // 2. 使用标准三层样式,如:http://test.com/live/stream.flv。 + ToUrl *string `json:"ToUrl,omitempty" name:"ToUrl"` + + // 区域 ID: + // 1-深圳。 + // 2-上海。 + // 3-天津。 + // 4-中国香港。 + // 如有改动,需同时传入IspId。 + AreaId *int64 `json:"AreaId,omitempty" name:"AreaId"` + + // 运营商 ID, + // 1:电信。 + // 2:移动。 + // 3:联通。 + // 4:其他。 + // AreaId为4的时候,IspId只能为其他。如有改动,需同时传入AreaId。 + IspId *int64 `json:"IspId,omitempty" name:"IspId"` + + // 开始时间。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,注意: + // 1. 结束时间必须大于开始时间; + // 2. 结束时间和开始时间必须大于当前时间; + // 3. 结束时间 和 开始时间 间隔必须小于七天。 + // + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` +} + +func (r *ModifyPullStreamConfigRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyPullStreamConfigRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "ConfigId") + delete(f, "FromUrl") + delete(f, "ToUrl") + delete(f, "AreaId") + delete(f, "IspId") + delete(f, "StartTime") + delete(f, "EndTime") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyPullStreamConfigRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyPullStreamConfigResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyPullStreamConfigResponse struct { + *tchttp.BaseResponse + Response *ModifyPullStreamConfigResponseParams `json:"Response"` +} + +func (r *ModifyPullStreamConfigResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyPullStreamConfigResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyPullStreamStatusRequestParams struct { + // 配置 ID 列表。 + ConfigIds []*string `json:"ConfigIds,omitempty" name:"ConfigIds"` + + // 目标状态。0无效,2正在运行,4暂停。 + Status *string `json:"Status,omitempty" name:"Status"` +} + +type ModifyPullStreamStatusRequest struct { + *tchttp.BaseRequest + + // 配置 ID 列表。 + ConfigIds []*string `json:"ConfigIds,omitempty" name:"ConfigIds"` + + // 目标状态。0无效,2正在运行,4暂停。 + Status *string `json:"Status,omitempty" name:"Status"` +} + +func (r *ModifyPullStreamStatusRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyPullStreamStatusRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "ConfigIds") + delete(f, "Status") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyPullStreamStatusRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyPullStreamStatusResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ModifyPullStreamStatusResponse struct { + *tchttp.BaseResponse + Response *ModifyPullStreamStatusResponseParams `json:"Response"` +} + +func (r *ModifyPullStreamStatusResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyPullStreamStatusResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type MonitorStreamPlayInfo struct { + // 播放域名。 + PlayDomain *string `json:"PlayDomain,omitempty" name:"PlayDomain"` + + // 流id。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 播放码率,0表示原始码率。 + Rate *uint64 `json:"Rate,omitempty" name:"Rate"` + + // 播放协议,可选值包括 Unknown,Flv,Hls,Rtmp,Huyap2p。 + Protocol *string `json:"Protocol,omitempty" name:"Protocol"` + + // 带宽,单位是Mbps。 + Bandwidth *float64 `json:"Bandwidth,omitempty" name:"Bandwidth"` + + // 在线人数,1分钟采样一个点,统计采样点的tcp链接数目。 + Online *uint64 `json:"Online,omitempty" name:"Online"` + + // 请求数。 + Request *uint64 `json:"Request,omitempty" name:"Request"` +} + +type PlayAuthKeyInfo struct { + // 域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否启用: + // 0: 关闭。 + // 1: 启用。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 鉴权 Key。 + AuthKey *string `json:"AuthKey,omitempty" name:"AuthKey"` + + // 有效时间,单位:秒。 + AuthDelta *uint64 `json:"AuthDelta,omitempty" name:"AuthDelta"` + + // 鉴权 BackKey。 + AuthBackKey *string `json:"AuthBackKey,omitempty" name:"AuthBackKey"` +} + +type PlayCodeTotalInfo struct { + // HTTP code,可选值包括: + // 400,403,404,500,502,503,504。 + Code *string `json:"Code,omitempty" name:"Code"` + + // 总次数。 + Num *uint64 `json:"Num,omitempty" name:"Num"` +} + +type PlayDataInfoByStream struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 总流量,单位: MB。 + TotalFlux *float64 `json:"TotalFlux,omitempty" name:"TotalFlux"` +} + +type PlayStatInfo struct { + // 数据时间点。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 带宽/流量/请求数/并发连接数/下载速度的值,若没数据返回时该值为0。 + // 注意:此字段可能返回 null,表示取不到有效值。 + Value *float64 `json:"Value,omitempty" name:"Value"` +} + +type PlaySumStatInfo struct { + // 域名或流 ID。 + Name *string `json:"Name,omitempty" name:"Name"` + + // 平均下载速度, + // 单位: MB/s。 + // 计算公式: 每分钟的下载速度求平均值。 + AvgFluxPerSecond *float64 `json:"AvgFluxPerSecond,omitempty" name:"AvgFluxPerSecond"` + + // 总流量,单位: MB。 + TotalFlux *float64 `json:"TotalFlux,omitempty" name:"TotalFlux"` + + // 总请求数。 + TotalRequest *uint64 `json:"TotalRequest,omitempty" name:"TotalRequest"` +} + +type ProIspPlayCodeDataInfo struct { + // 国家或地区。 + CountryAreaName *string `json:"CountryAreaName,omitempty" name:"CountryAreaName"` + + // 省份。 + ProvinceName *string `json:"ProvinceName,omitempty" name:"ProvinceName"` + + // 运营商。 + IspName *string `json:"IspName,omitempty" name:"IspName"` + + // 错误码为2开头的次数。 + Code2xx *uint64 `json:"Code2xx,omitempty" name:"Code2xx"` + + // 错误码为3开头的次数。 + Code3xx *uint64 `json:"Code3xx,omitempty" name:"Code3xx"` + + // 错误码为4开头的次数。 + Code4xx *uint64 `json:"Code4xx,omitempty" name:"Code4xx"` + + // 错误码为5开头的次数。 + Code5xx *uint64 `json:"Code5xx,omitempty" name:"Code5xx"` +} + +type ProIspPlaySumInfo struct { + // 省份/运营商/国家或地区。 + Name *string `json:"Name,omitempty" name:"Name"` + + // 总流量,单位: MB。 + TotalFlux *float64 `json:"TotalFlux,omitempty" name:"TotalFlux"` + + // 总请求数。 + TotalRequest *uint64 `json:"TotalRequest,omitempty" name:"TotalRequest"` + + // 平均下载流量,单位: MB/s。 + AvgFluxPerSecond *float64 `json:"AvgFluxPerSecond,omitempty" name:"AvgFluxPerSecond"` +} + +type PublishTime struct { + // 推流时间。 + // UTC 格式,例如:2018-06-29T19:00:00Z。 + PublishTime *string `json:"PublishTime,omitempty" name:"PublishTime"` +} + +type PullPushWatermarkInfo struct { + // 水印图片 URL。 + // URL中禁止包含的字符: + // ;(){}$>`#"'| + PictureUrl *string `json:"PictureUrl,omitempty" name:"PictureUrl"` + + // 显示位置,X轴偏移,单位是百分比,默认 0。 + XPosition *int64 `json:"XPosition,omitempty" name:"XPosition"` + + // 显示位置,Y轴偏移,单位是百分比,默认 0。 + YPosition *int64 `json:"YPosition,omitempty" name:"YPosition"` + + // 水印宽度,占直播原始画面宽度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始宽度。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 水印高度,占直播原始画面高度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始高度。 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 水印位置,默认 0。 + // 0:左上角。 + // 1:右上角。 + // 2:右下角。 + // 3:左下角。 + Location *int64 `json:"Location,omitempty" name:"Location"` +} + +type PullStreamConfig struct { + // 拉流配置 ID。 + ConfigId *string `json:"ConfigId,omitempty" name:"ConfigId"` + + // 源 URL。 + FromUrl *string `json:"FromUrl,omitempty" name:"FromUrl"` + + // 目的 URL。 + ToUrl *string `json:"ToUrl,omitempty" name:"ToUrl"` + + // 区域名。 + AreaName *string `json:"AreaName,omitempty" name:"AreaName"` + + // 运营商名。 + IspName *string `json:"IspName,omitempty" name:"IspName"` + + // 开始时间。 + // UTC格式时间,例如: 2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间。 + // + // UTC格式时间,例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 状态: + // 0: 无效。 + // 1: 初始状态。 + // 2: 正在运行。 + // 3: 拉起失败。 + // 4: 暂停。 + Status *string `json:"Status,omitempty" name:"Status"` +} + +type PullStreamTaskInfo struct { + // 拉流任务Id。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 拉流源的类型: + // PullLivePushLive -直播, + // PullVodPushLive -点播。 + SourceType *string `json:"SourceType,omitempty" name:"SourceType"` + + // 拉流源url列表。 + // SourceType为直播(PullLiveToLive)只可以填1个, + // SourceType为点播(PullVodToLive)可以填多个,上限10个。 + SourceUrls []*string `json:"SourceUrls,omitempty" name:"SourceUrls"` + + // 推流域名。 + // 将拉到的源推到该域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + // 将拉到的源推到该路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + // 将拉到的源推到该流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流参数。 + // 推流携带的自定义参数。 + PushArgs *string `json:"PushArgs,omitempty" name:"PushArgs"` + + // 开始时间。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间,注意: + // 1. 结束时间必须大于开始时间; + // 2. 结束时间和开始时间必须大于当前时间; + // 3. 结束时间 和 开始时间 间隔必须小于七天。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 拉流源所在地域(请就近选取): + // ap-beijing - 华北地区(北京), + // ap-shanghai -华东地区(上海), + // ap-guangzhou -华南地区(广州), + // ap-mumbai - 印度。 + Region *string `json:"Region,omitempty" name:"Region"` + + // 点播拉流转推循环次数。 + // -1:无限循环,直到任务结束。 + // 0:不循环。 + // >0:具体循环次数。次数和时间以先结束的为准。 + // 注意:拉流源为点播,该配置生效。 + VodLoopTimes *int64 `json:"VodLoopTimes,omitempty" name:"VodLoopTimes"` + + // 点播更新SourceUrls后的播放方式: + // ImmediateNewSource:立即从更新的拉流源开始播放; + // ContinueBreakPoint:从上次断流url源的断点处继续,结束后再使用新的拉流源。 + // + // 注意:拉流源为点播,该配置生效。 + VodRefreshType *string `json:"VodRefreshType,omitempty" name:"VodRefreshType"` + + // 任务创建时间。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + CreateTime *string `json:"CreateTime,omitempty" name:"CreateTime"` + + // 任务更新时间。 + // 使用UTC格式时间, + // 例如:2019-01-08T10:00:00Z。 + // 注意:北京时间值为 UTC 时间值 + 8 小时,格式按照 ISO 8601 标准表示,详见 [ISO 日期格式说明](https://cloud.tencent.com/document/product/266/11732#I)。 + UpdateTime *string `json:"UpdateTime,omitempty" name:"UpdateTime"` + + // 创建任务的操作者。 + CreateBy *string `json:"CreateBy,omitempty" name:"CreateBy"` + + // 最后更新任务的操作者。 + UpdateBy *string `json:"UpdateBy,omitempty" name:"UpdateBy"` + + // 回调地址。 + CallbackUrl *string `json:"CallbackUrl,omitempty" name:"CallbackUrl"` + + // 选择需要回调的事件: + // TaskStart:任务启动回调, + // TaskExit:任务停止回调, + // VodSourceFileStart:从点播源文件开始拉流回调, + // VodSourceFileFinish:从点播源文件拉流结束回调, + // ResetTaskConfig:任务更新回调。 + CallbackEvents []*string `json:"CallbackEvents,omitempty" name:"CallbackEvents"` + + // 注意:该信息暂不返回。 + // 最后一次回调信息。 + CallbackInfo *string `json:"CallbackInfo,omitempty" name:"CallbackInfo"` + + // 注意:该信息暂不返回。 + // 错误信息。 + ErrorInfo *string `json:"ErrorInfo,omitempty" name:"ErrorInfo"` + + // 状态。 + // enable:生效中。 + // pause:暂停中。 + Status *string `json:"Status,omitempty" name:"Status"` + + // 注意:该信息仅在查询单个任务时返回。 + // 任务最新拉流信息。 + // 包含:源 url,偏移时间,上报时间。 + RecentPullInfo *RecentPullInfo `json:"RecentPullInfo,omitempty" name:"RecentPullInfo"` + + // 任务备注信息。 + Comment *string `json:"Comment,omitempty" name:"Comment"` + + // 备源类型: + // PullLivePushLive -直播, + // PullVodPushLive -点播。 + // 注意:此字段可能返回 null,表示取不到有效值。 + BackupSourceType *string `json:"BackupSourceType,omitempty" name:"BackupSourceType"` + + // 备源URL。 + // 注意:此字段可能返回 null,表示取不到有效值。 + BackupSourceUrl *string `json:"BackupSourceUrl,omitempty" name:"BackupSourceUrl"` + + // 水印信息列表。 + // 注意:此字段可能返回 null,表示取不到有效值。 + WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` +} + +type PushAuthKeyInfo struct { + // 域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否启用,0:关闭,1:启用。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 主鉴权 Key。 + MasterAuthKey *string `json:"MasterAuthKey,omitempty" name:"MasterAuthKey"` + + // 备鉴权 Key。 + BackupAuthKey *string `json:"BackupAuthKey,omitempty" name:"BackupAuthKey"` + + // 有效时间,单位:秒。 + AuthDelta *uint64 `json:"AuthDelta,omitempty" name:"AuthDelta"` +} + +type PushDataInfo struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流客户端 IP。 + ClientIp *string `json:"ClientIp,omitempty" name:"ClientIp"` + + // 接流服务器 IP。 + ServerIp *string `json:"ServerIp,omitempty" name:"ServerIp"` + + // 推流视频帧率,单位: Hz。 + VideoFps *uint64 `json:"VideoFps,omitempty" name:"VideoFps"` + + // 推流视频码率,单位: bps。 + VideoSpeed *uint64 `json:"VideoSpeed,omitempty" name:"VideoSpeed"` + + // 推流音频帧率,单位: Hz。 + AudioFps *uint64 `json:"AudioFps,omitempty" name:"AudioFps"` + + // 推流音频码率,单位: bps。 + AudioSpeed *uint64 `json:"AudioSpeed,omitempty" name:"AudioSpeed"` + + // 推流域名。 + PushDomain *string `json:"PushDomain,omitempty" name:"PushDomain"` + + // 推流开始时间。 + BeginPushTime *string `json:"BeginPushTime,omitempty" name:"BeginPushTime"` + + // 音频编码格式, + // 例:"AAC"。 + Acodec *string `json:"Acodec,omitempty" name:"Acodec"` + + // 视频编码格式, + // 例:"H264"。 + Vcodec *string `json:"Vcodec,omitempty" name:"Vcodec"` + + // 分辨率。 + Resolution *string `json:"Resolution,omitempty" name:"Resolution"` + + // 采样率。 + AsampleRate *uint64 `json:"AsampleRate,omitempty" name:"AsampleRate"` + + // metadata 中的音频码率,单位: bps。 + MetaAudioSpeed *uint64 `json:"MetaAudioSpeed,omitempty" name:"MetaAudioSpeed"` + + // metadata 中的视频码率,单位: bps。 + MetaVideoSpeed *uint64 `json:"MetaVideoSpeed,omitempty" name:"MetaVideoSpeed"` + + // metadata 中的帧率。 + MetaFps *uint64 `json:"MetaFps,omitempty" name:"MetaFps"` +} + +type PushQualityData struct { + // 数据时间,格式: %Y-%m-%d %H:%M:%S.%ms,精确到毫秒级。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 推流域名。 + PushDomain *string `json:"PushDomain,omitempty" name:"PushDomain"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流客户端 IP。 + ClientIp *string `json:"ClientIp,omitempty" name:"ClientIp"` + + // 开始推流时间,格式: %Y-%m-%d %H:%M:%S.%ms,精确到毫秒级。 + BeginPushTime *string `json:"BeginPushTime,omitempty" name:"BeginPushTime"` + + // 分辨率信息。 + Resolution *string `json:"Resolution,omitempty" name:"Resolution"` + + // 视频编码格式。 + VCodec *string `json:"VCodec,omitempty" name:"VCodec"` + + // 音频编码格式。 + ACodec *string `json:"ACodec,omitempty" name:"ACodec"` + + // 推流序列号,用来唯一的标志一次推流。 + Sequence *string `json:"Sequence,omitempty" name:"Sequence"` + + // 视频帧率。 + VideoFps *uint64 `json:"VideoFps,omitempty" name:"VideoFps"` + + // 视频码率,单位: bps。 + VideoRate *uint64 `json:"VideoRate,omitempty" name:"VideoRate"` + + // 音频帧率。 + AudioFps *uint64 `json:"AudioFps,omitempty" name:"AudioFps"` + + // 音频码率,单位: bps。 + AudioRate *uint64 `json:"AudioRate,omitempty" name:"AudioRate"` + + // 本地流逝时间,单位: ms,音视频流逝时间与本地流逝时间的差距越大表示推流质量越差,上行卡顿越严重。 + LocalTs *uint64 `json:"LocalTs,omitempty" name:"LocalTs"` + + // 视频流逝时间,单位: ms。 + VideoTs *uint64 `json:"VideoTs,omitempty" name:"VideoTs"` + + // 音频流逝时间,单位: ms。 + AudioTs *uint64 `json:"AudioTs,omitempty" name:"AudioTs"` + + // metadata 中的视频码率,单位: kbps。 + MetaVideoRate *uint64 `json:"MetaVideoRate,omitempty" name:"MetaVideoRate"` + + // metadata 中的音频码率,单位: kbps。 + MetaAudioRate *uint64 `json:"MetaAudioRate,omitempty" name:"MetaAudioRate"` + + // metadata 中的帧率。 + MateFps *uint64 `json:"MateFps,omitempty" name:"MateFps"` + + // 推流参数 + StreamParam *string `json:"StreamParam,omitempty" name:"StreamParam"` + + // 带宽,单位Mbps。 + Bandwidth *float64 `json:"Bandwidth,omitempty" name:"Bandwidth"` + + // 流量,单位MB。 + Flux *float64 `json:"Flux,omitempty" name:"Flux"` +} + +type RecentPullInfo struct { + // 当前正在拉的文件地址。 + FileUrl *string `json:"FileUrl,omitempty" name:"FileUrl"` + + // 当前正在拉的文件偏移,单位:秒。 + OffsetTime *uint64 `json:"OffsetTime,omitempty" name:"OffsetTime"` + + // 最新上报偏移信息时间。UTC格式。 + // 如:2020-07-23T03:20:39Z。 + // 注意:与北京时间相差八小时。 + ReportTime *string `json:"ReportTime,omitempty" name:"ReportTime"` + + // 已经轮播的次数。 + LoopedTimes *int64 `json:"LoopedTimes,omitempty" name:"LoopedTimes"` +} + +type RecordParam struct { + // 录制间隔。 + // 单位秒,默认:1800。 + // 取值范围:30-7200。 + // 此参数对 HLS 无效,当录制 HLS 时从推流到断流生成一个文件。 + RecordInterval *int64 `json:"RecordInterval,omitempty" name:"RecordInterval"` + + // 录制存储时长。 + // 单位秒,取值范围: 0 - 1500天。 + // 0:表示永久存储。 + StorageTime *int64 `json:"StorageTime,omitempty" name:"StorageTime"` + + // 是否开启当前格式录制,默认值为0,0:否, 1:是。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 点播子应用 ID。 + VodSubAppId *int64 `json:"VodSubAppId,omitempty" name:"VodSubAppId"` + + // 录制文件名。 + // 支持的特殊占位符有: + // {StreamID}: 流ID + // {StartYear}: 开始时间-年 + // {StartMonth}: 开始时间-月 + // {StartDay}: 开始时间-日 + // {StartHour}: 开始时间-小时 + // {StartMinute}: 开始时间-分钟 + // {StartSecond}: 开始时间-秒 + // {StartMillisecond}: 开始时间-毫秒 + // {EndYear}: 结束时间-年 + // {EndMonth}: 结束时间-月 + // {EndDay}: 结束时间-日 + // {EndHour}: 结束时间-小时 + // {EndMinute}: 结束时间-分钟 + // {EndSecond}: 结束时间-秒 + // {EndMillisecond}: 结束时间-毫秒 + // + // 若未设置默认录制文件名为{StreamID}_{StartYear}-{StartMonth}-{StartDay}-{StartHour}-{StartMinute}-{StartSecond}_{EndYear}-{EndMonth}-{EndDay}-{EndHour}-{EndMinute}-{EndSecond} + VodFileName *string `json:"VodFileName,omitempty" name:"VodFileName"` + + // 任务流 + // 注意:此字段可能返回 null,表示取不到有效值。 + Procedure *string `json:"Procedure,omitempty" name:"Procedure"` + + // 视频存储策略。 + // normal:标准存储。 + // cold:低频存储。 + // 注意:此字段可能返回 null,表示取不到有效值。 + StorageMode *string `json:"StorageMode,omitempty" name:"StorageMode"` + + // 点播应用分类 + // 注意:此字段可能返回 null,表示取不到有效值。 + ClassId *int64 `json:"ClassId,omitempty" name:"ClassId"` +} + +type RecordTask struct { + // 录制任务ID。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 任务开始时间,Unix时间戳。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 任务结束时间,Unix时间戳。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 录制模板ID。 + TemplateId *uint64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 调用 StopRecordTask 停止任务时间,Unix时间戳。值为0表示未曾调用接口停止任务。 + Stopped *uint64 `json:"Stopped,omitempty" name:"Stopped"` +} + +type RecordTemplateInfo struct { + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 模板名称。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 描述信息。 + Description *string `json:"Description,omitempty" name:"Description"` + + // FLV 录制参数。 + FlvParam *RecordParam `json:"FlvParam,omitempty" name:"FlvParam"` + + // HLS 录制参数。 + HlsParam *RecordParam `json:"HlsParam,omitempty" name:"HlsParam"` + + // MP4 录制参数。 + Mp4Param *RecordParam `json:"Mp4Param,omitempty" name:"Mp4Param"` + + // AAC 录制参数。 + AacParam *RecordParam `json:"AacParam,omitempty" name:"AacParam"` + + // 0:普通直播, + // 1:慢直播。 + IsDelayLive *int64 `json:"IsDelayLive,omitempty" name:"IsDelayLive"` + + // HLS 录制定制参数。 + HlsSpecialParam *HlsSpecialParam `json:"HlsSpecialParam,omitempty" name:"HlsSpecialParam"` + + // MP3 录制参数。 + Mp3Param *RecordParam `json:"Mp3Param,omitempty" name:"Mp3Param"` + + // 是否去除水印。 + // 注意:此字段可能返回 null,表示取不到有效值。 + RemoveWatermark *bool `json:"RemoveWatermark,omitempty" name:"RemoveWatermark"` + + // FLV 录制定制参数。 + // 注意:此字段可能返回 null,表示取不到有效值。 + FlvSpecialParam *FlvSpecialParam `json:"FlvSpecialParam,omitempty" name:"FlvSpecialParam"` +} + +type RefererAuthConfig struct { + // 域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 是否启用,0:关闭,1:启用。 + Enable *int64 `json:"Enable,omitempty" name:"Enable"` + + // 名单类型,0:黑名单,1:白名单。 + Type *int64 `json:"Type,omitempty" name:"Type"` + + // 是否允许空Referer,0:不允许,1:允许。 + AllowEmpty *int64 `json:"AllowEmpty,omitempty" name:"AllowEmpty"` + + // 名单列表,以分号(;)分隔。 + Rules *string `json:"Rules,omitempty" name:"Rules"` +} + +// Predefined struct for user +type ResumeDelayLiveStreamRequestParams struct { + // 推流路径,与推流和播放地址中的AppName保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type ResumeDelayLiveStreamRequest struct { + *tchttp.BaseRequest + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *ResumeDelayLiveStreamRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ResumeDelayLiveStreamRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "AppName") + delete(f, "DomainName") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ResumeDelayLiveStreamRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ResumeDelayLiveStreamResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ResumeDelayLiveStreamResponse struct { + *tchttp.BaseResponse + Response *ResumeDelayLiveStreamResponseParams `json:"Response"` +} + +func (r *ResumeDelayLiveStreamResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ResumeDelayLiveStreamResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ResumeLiveStreamRequestParams struct { + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type ResumeLiveStreamRequest struct { + *tchttp.BaseRequest + + // 推流路径,与推流和播放地址中的AppName保持一致,默认为 live。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 您的推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +func (r *ResumeLiveStreamRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ResumeLiveStreamRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "AppName") + delete(f, "DomainName") + delete(f, "StreamName") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ResumeLiveStreamRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ResumeLiveStreamResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type ResumeLiveStreamResponse struct { + *tchttp.BaseResponse + Response *ResumeLiveStreamResponseParams `json:"Response"` +} + +func (r *ResumeLiveStreamResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ResumeLiveStreamResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type RuleInfo struct { + // 规则创建时间。 + CreateTime *string `json:"CreateTime,omitempty" name:"CreateTime"` + + // 规则更新时间。 + UpdateTime *string `json:"UpdateTime,omitempty" name:"UpdateTime"` + + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` +} + +type ScreenshotTask struct { + // 截图任务ID。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流路径。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 任务开始时间,Unix时间戳。 + StartTime *uint64 `json:"StartTime,omitempty" name:"StartTime"` + + // 任务结束时间,Unix时间戳。 + EndTime *uint64 `json:"EndTime,omitempty" name:"EndTime"` + + // 截图模板ID。 + TemplateId *uint64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 调用 StopScreenshotTask 停止任务时间,Unix时间戳。值为0表示未曾调用接口停止任务。 + Stopped *uint64 `json:"Stopped,omitempty" name:"Stopped"` +} + +type SnapshotTemplateInfo struct { + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 模板名称。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 截图时间间隔,5-300秒。 + SnapshotInterval *int64 `json:"SnapshotInterval,omitempty" name:"SnapshotInterval"` + + // 截图宽度,范围:0-3000。 + // 0:原始宽度并适配原始比例。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 截图高度,范围:0-2000。 + // 0:原始高度并适配原始比例。 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 是否开启鉴黄,0:不开启,1:开启。 + PornFlag *int64 `json:"PornFlag,omitempty" name:"PornFlag"` + + // Cos 应用 ID。 + CosAppId *int64 `json:"CosAppId,omitempty" name:"CosAppId"` + + // Cos Bucket名称。 + CosBucket *string `json:"CosBucket,omitempty" name:"CosBucket"` + + // Cos 地域。 + CosRegion *string `json:"CosRegion,omitempty" name:"CosRegion"` + + // 模板描述。 + Description *string `json:"Description,omitempty" name:"Description"` + + // Cos Bucket文件夹前缀。 + // 注意:此字段可能返回 null,表示取不到有效值。 + CosPrefix *string `json:"CosPrefix,omitempty" name:"CosPrefix"` + + // Cos 文件名称。 + // 注意:此字段可能返回 null,表示取不到有效值。 + CosFileName *string `json:"CosFileName,omitempty" name:"CosFileName"` +} + +// Predefined struct for user +type StopLiveRecordRequestParams struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 任务ID,由CreateLiveRecord接口返回。 + TaskId *int64 `json:"TaskId,omitempty" name:"TaskId"` +} + +type StopLiveRecordRequest struct { + *tchttp.BaseRequest + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 任务ID,由CreateLiveRecord接口返回。 + TaskId *int64 `json:"TaskId,omitempty" name:"TaskId"` +} + +func (r *StopLiveRecordRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *StopLiveRecordRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "StreamName") + delete(f, "TaskId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "StopLiveRecordRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type StopLiveRecordResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type StopLiveRecordResponse struct { + *tchttp.BaseResponse + Response *StopLiveRecordResponseParams `json:"Response"` +} + +func (r *StopLiveRecordResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *StopLiveRecordResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type StopRecordTaskRequestParams struct { + // 录制任务ID。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` +} + +type StopRecordTaskRequest struct { + *tchttp.BaseRequest + + // 录制任务ID。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` +} + +func (r *StopRecordTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *StopRecordTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TaskId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "StopRecordTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type StopRecordTaskResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type StopRecordTaskResponse struct { + *tchttp.BaseResponse + Response *StopRecordTaskResponseParams `json:"Response"` +} + +func (r *StopRecordTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *StopRecordTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type StopScreenshotTaskRequestParams struct { + // 截图任务ID。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` +} + +type StopScreenshotTaskRequest struct { + *tchttp.BaseRequest + + // 截图任务ID。 + TaskId *string `json:"TaskId,omitempty" name:"TaskId"` +} + +func (r *StopScreenshotTaskRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *StopScreenshotTaskRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TaskId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "StopScreenshotTaskRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type StopScreenshotTaskResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type StopScreenshotTaskResponse struct { + *tchttp.BaseResponse + Response *StopScreenshotTaskResponseParams `json:"Response"` +} + +func (r *StopScreenshotTaskResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *StopScreenshotTaskResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type StreamEventInfo struct { + // 应用名称。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流开始时间。 + // UTC 格式时间,例如:2019-01-07T12:00:00Z。 + StreamStartTime *string `json:"StreamStartTime,omitempty" name:"StreamStartTime"` + + // 推流结束时间。 + // UTC 格式时间,例如:2019-01-07T15:00:00Z。 + StreamEndTime *string `json:"StreamEndTime,omitempty" name:"StreamEndTime"` + + // 停止原因。 + StopReason *string `json:"StopReason,omitempty" name:"StopReason"` + + // 推流持续时长,单位:秒。 + Duration *uint64 `json:"Duration,omitempty" name:"Duration"` + + // 主播 IP。 + ClientIp *string `json:"ClientIp,omitempty" name:"ClientIp"` + + // 分辨率。 + Resolution *string `json:"Resolution,omitempty" name:"Resolution"` +} + +type StreamName struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 应用名称。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 推流开始时间。 + // UTC格式时间,例如:2019-01-07T12:00:00Z。 + StreamStartTime *string `json:"StreamStartTime,omitempty" name:"StreamStartTime"` + + // 推流结束时间。 + // UTC格式时间,例如:2019-01-07T15:00:00Z。 + StreamEndTime *string `json:"StreamEndTime,omitempty" name:"StreamEndTime"` + + // 停止原因。 + StopReason *string `json:"StopReason,omitempty" name:"StopReason"` + + // 推流持续时长,单位:秒。 + Duration *uint64 `json:"Duration,omitempty" name:"Duration"` + + // 主播 IP。 + ClientIp *string `json:"ClientIp,omitempty" name:"ClientIp"` + + // 分辨率。 + Resolution *string `json:"Resolution,omitempty" name:"Resolution"` +} + +type StreamOnlineInfo struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 推流时间列表 + PublishTimeList []*PublishTime `json:"PublishTimeList,omitempty" name:"PublishTimeList"` + + // 应用名称。 + AppName *string `json:"AppName,omitempty" name:"AppName"` + + // 推流域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` +} + +type TemplateInfo struct { + // 视频编码:h264/h265/origin,默认h264。 + // + // origin: 保持原始编码格式 + Vcodec *string `json:"Vcodec,omitempty" name:"Vcodec"` + + // 视频码率。范围:0kbps - 8000kbps。 + // 0为保持原始码率。 + // 注: 转码模板有码率唯一要求,最终保存的码率可能与输入码率有所差别。 + VideoBitrate *int64 `json:"VideoBitrate,omitempty" name:"VideoBitrate"` + + // 音频编码:aac,默认aac。 + // 注意:当前该参数未生效,待后续支持! + Acodec *string `json:"Acodec,omitempty" name:"Acodec"` + + // 音频码率。取值范围:0kbps - 500kbps。 + // 默认0。 + AudioBitrate *int64 `json:"AudioBitrate,omitempty" name:"AudioBitrate"` + + // 宽,默认0。 + // 范围[0-3000] + // 数值必须是2的倍数,0是原始宽度 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 高,默认0。 + // 范围[0-3000] + // 数值必须是2的倍数,0是原始宽度 + Height *int64 `json:"Height,omitempty" name:"Height"` + + // 帧率,默认0。 + // 范围0-60fps + Fps *int64 `json:"Fps,omitempty" name:"Fps"` + + // 关键帧间隔,单位:秒。 + // 默认原始的间隔 + // 范围2-6 + Gop *int64 `json:"Gop,omitempty" name:"Gop"` + + // 旋转角度,默认0。 + // 可取值:0,90,180,270 + Rotate *int64 `json:"Rotate,omitempty" name:"Rotate"` + + // 编码质量: + // baseline/main/high。默认baseline + Profile *string `json:"Profile,omitempty" name:"Profile"` + + // 当设置的码率>原始码率时,是否以原始码率为准。 + // 0:否, 1:是 + // 默认 0。 + BitrateToOrig *int64 `json:"BitrateToOrig,omitempty" name:"BitrateToOrig"` + + // 当设置的高度>原始高度时,是否以原始高度为准。 + // 0:否, 1:是 + // 默认 0。 + HeightToOrig *int64 `json:"HeightToOrig,omitempty" name:"HeightToOrig"` + + // 当设置的帧率>原始帧率时,是否以原始帧率为准。 + // 0:否, 1:是 + // 默认 0。 + FpsToOrig *int64 `json:"FpsToOrig,omitempty" name:"FpsToOrig"` + + // 是否保留视频。0:否,1:是。 + NeedVideo *int64 `json:"NeedVideo,omitempty" name:"NeedVideo"` + + // 是否保留音频。0:否,1:是。 + NeedAudio *int64 `json:"NeedAudio,omitempty" name:"NeedAudio"` + + // 模板 ID。 + TemplateId *int64 `json:"TemplateId,omitempty" name:"TemplateId"` + + // 模板名称。 + TemplateName *string `json:"TemplateName,omitempty" name:"TemplateName"` + + // 模板描述。 + Description *string `json:"Description,omitempty" name:"Description"` + + // 是否是极速高清模板,0:否,1:是。默认0。 + AiTransCode *int64 `json:"AiTransCode,omitempty" name:"AiTransCode"` + + // 极速高清视频码率压缩比。 + // 极速高清目标码率=VideoBitrate * (1-AdaptBitratePercent) + // + // 取值范围:0.0到0.5 + AdaptBitratePercent *float64 `json:"AdaptBitratePercent,omitempty" name:"AdaptBitratePercent"` + + // 是否以短边作为高度,0:否,1:是。默认0。 + // 注意:此字段可能返回 null,表示取不到有效值。 + ShortEdgeAsHeight *int64 `json:"ShortEdgeAsHeight,omitempty" name:"ShortEdgeAsHeight"` + + // DRM 加密类型,可选值:fairplay、normalaes、widevine。 + // 注意:此字段可能返回 null,表示取不到有效值。 + DRMType *string `json:"DRMType,omitempty" name:"DRMType"` + + // DRM 加密项,多个用|分割,可选值:AUDIO、SD、HD、UHD1、UHD2,后四个为一组,同组中的内容只能选一个。 + // 注意:此字段可能返回 null,表示取不到有效值。 + DRMTracks *string `json:"DRMTracks,omitempty" name:"DRMTracks"` +} + +type TimeShiftBillData struct { + // 推流域名。 + Domain *string `json:"Domain,omitempty" name:"Domain"` + + // 时移文件时长,单位分钟。 + Duration *float64 `json:"Duration,omitempty" name:"Duration"` + + // 时移配置天数,单位天。 + StoragePeriod *float64 `json:"StoragePeriod,omitempty" name:"StoragePeriod"` + + // 时间点,格式: yyyy-mm-ddTHH:MM:SSZ。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 时移总时长,单位分钟。 + TotalDuration *float64 `json:"TotalDuration,omitempty" name:"TotalDuration"` +} + +type TimeValue struct { + // UTC 时间,时间格式:yyyy-mm-ddTHH:MM:SSZ。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 数值。 + Num *uint64 `json:"Num,omitempty" name:"Num"` +} + +type TranscodeDetailInfo struct { + // 流名称。 + StreamName *string `json:"StreamName,omitempty" name:"StreamName"` + + // 开始时间(北京时间),格式:yyyy-mm-dd HH:MM。 + StartTime *string `json:"StartTime,omitempty" name:"StartTime"` + + // 结束时间(北京时间),格式:yyyy-mm-dd HH:MM。 + EndTime *string `json:"EndTime,omitempty" name:"EndTime"` + + // 转码时长,单位:分钟。 + // 注意:因推流过程中可能有中断重推情况,此处时长为真实转码时长累加值,并非结束时间和开始时间的间隔。 + Duration *uint64 `json:"Duration,omitempty" name:"Duration"` + + // 编码方式,带模块, + // 示例: + // liveprocessor_H264:直播转码-H264, + // liveprocessor_H265: 直播转码-H265, + // topspeed_H264:极速高清-H264, + // topspeed_H265:极速高清-H265。 + ModuleCodec *string `json:"ModuleCodec,omitempty" name:"ModuleCodec"` + + // 码率。 + Bitrate *uint64 `json:"Bitrate,omitempty" name:"Bitrate"` + + // 类型,包含:转码(Transcode),混流(MixStream),水印(WaterMark),快直播(Webrtc)。 + Type *string `json:"Type,omitempty" name:"Type"` + + // 推流域名。 + PushDomain *string `json:"PushDomain,omitempty" name:"PushDomain"` + + // 分辨率。 + Resolution *string `json:"Resolution,omitempty" name:"Resolution"` + + // 地域: + // Mainland:国内。 + // Overseas:海外。 + MainlandOrOversea *string `json:"MainlandOrOversea,omitempty" name:"MainlandOrOversea"` +} + +type TranscodeTaskNum struct { + // 时间点。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 码率。 + CodeRate *uint64 `json:"CodeRate,omitempty" name:"CodeRate"` + + // 任务数。 + Num *uint64 `json:"Num,omitempty" name:"Num"` +} + +type TranscodeTotalInfo struct { + // 时间点,北京时间, + // 示例:2019-03-01 00:00:00。 + Time *string `json:"Time,omitempty" name:"Time"` + + // 转码时长,单位:分钟。 + Duration *uint64 `json:"Duration,omitempty" name:"Duration"` + + // 编码方式,带模块, + // 示例: + // liveprocessor_H264 =》直播转码-H264, + // liveprocessor_H265 =》 直播转码-H265, + // topspeed_H264 =》极速高清-H264, + // topspeed_H265 =》极速高清-H265。 + ModuleCodec *string `json:"ModuleCodec,omitempty" name:"ModuleCodec"` + + // 分辨率, + // 示例:540*480。 + Resolution *string `json:"Resolution,omitempty" name:"Resolution"` +} + +// Predefined struct for user +type UnBindLiveDomainCertRequestParams struct { + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 枚举值: + // gray: 解绑灰度规则 + // formal(默认): 解绑正式规则 + // + // 不传则为formal + Type *string `json:"Type,omitempty" name:"Type"` +} + +type UnBindLiveDomainCertRequest struct { + *tchttp.BaseRequest + + // 播放域名。 + DomainName *string `json:"DomainName,omitempty" name:"DomainName"` + + // 枚举值: + // gray: 解绑灰度规则 + // formal(默认): 解绑正式规则 + // + // 不传则为formal + Type *string `json:"Type,omitempty" name:"Type"` +} + +func (r *UnBindLiveDomainCertRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *UnBindLiveDomainCertRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "DomainName") + delete(f, "Type") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UnBindLiveDomainCertRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type UnBindLiveDomainCertResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type UnBindLiveDomainCertResponse struct { + *tchttp.BaseResponse + Response *UnBindLiveDomainCertResponseParams `json:"Response"` +} + +func (r *UnBindLiveDomainCertResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *UnBindLiveDomainCertResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type UpdateLiveWatermarkRequestParams struct { + // 水印 ID。 + // 在添加水印接口 [AddLiveWatermark](/document/product/267/30154) 调用返回值中获取水印 ID。 + WatermarkId *int64 `json:"WatermarkId,omitempty" name:"WatermarkId"` + + // 水印图片 URL。 + // URL中禁止包含的字符: + // ;(){}$>`#"\'| + PictureUrl *string `json:"PictureUrl,omitempty" name:"PictureUrl"` + + // 显示位置,X轴偏移,单位是百分比,默认 0。 + XPosition *int64 `json:"XPosition,omitempty" name:"XPosition"` + + // 显示位置,Y轴偏移,单位是百分比,默认 0。 + YPosition *int64 `json:"YPosition,omitempty" name:"YPosition"` + + // 水印名称。 + // 最长16字节。 + WatermarkName *string `json:"WatermarkName,omitempty" name:"WatermarkName"` + + // 水印宽度,占直播原始画面宽度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始宽度。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 水印高度,占直播原始画面宽度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始高度。 + Height *int64 `json:"Height,omitempty" name:"Height"` +} + +type UpdateLiveWatermarkRequest struct { + *tchttp.BaseRequest + + // 水印 ID。 + // 在添加水印接口 [AddLiveWatermark](/document/product/267/30154) 调用返回值中获取水印 ID。 + WatermarkId *int64 `json:"WatermarkId,omitempty" name:"WatermarkId"` + + // 水印图片 URL。 + // URL中禁止包含的字符: + // ;(){}$>`#"\'| + PictureUrl *string `json:"PictureUrl,omitempty" name:"PictureUrl"` + + // 显示位置,X轴偏移,单位是百分比,默认 0。 + XPosition *int64 `json:"XPosition,omitempty" name:"XPosition"` + + // 显示位置,Y轴偏移,单位是百分比,默认 0。 + YPosition *int64 `json:"YPosition,omitempty" name:"YPosition"` + + // 水印名称。 + // 最长16字节。 + WatermarkName *string `json:"WatermarkName,omitempty" name:"WatermarkName"` + + // 水印宽度,占直播原始画面宽度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始宽度。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 水印高度,占直播原始画面宽度百分比,建议高宽只设置一项,另外一项会自适应缩放,避免变形。默认原始高度。 + Height *int64 `json:"Height,omitempty" name:"Height"` +} + +func (r *UpdateLiveWatermarkRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *UpdateLiveWatermarkRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "WatermarkId") + delete(f, "PictureUrl") + delete(f, "XPosition") + delete(f, "YPosition") + delete(f, "WatermarkName") + delete(f, "Width") + delete(f, "Height") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpdateLiveWatermarkRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type UpdateLiveWatermarkResponseParams struct { + // 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type UpdateLiveWatermarkResponse struct { + *tchttp.BaseResponse + Response *UpdateLiveWatermarkResponseParams `json:"Response"` +} + +func (r *UpdateLiveWatermarkResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *UpdateLiveWatermarkResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type WatermarkInfo struct { + // 水印 ID。 + WatermarkId *int64 `json:"WatermarkId,omitempty" name:"WatermarkId"` + + // 水印图片 URL。 + PictureUrl *string `json:"PictureUrl,omitempty" name:"PictureUrl"` + + // 显示位置,X 轴偏移。 + XPosition *int64 `json:"XPosition,omitempty" name:"XPosition"` + + // 显示位置,Y 轴偏移。 + YPosition *int64 `json:"YPosition,omitempty" name:"YPosition"` + + // 水印名称。 + WatermarkName *string `json:"WatermarkName,omitempty" name:"WatermarkName"` + + // 当前状态。0:未使用,1:使用中。 + Status *int64 `json:"Status,omitempty" name:"Status"` + + // 添加时间。 + CreateTime *string `json:"CreateTime,omitempty" name:"CreateTime"` + + // 水印宽。 + Width *int64 `json:"Width,omitempty" name:"Width"` + + // 水印高。 + Height *int64 `json:"Height,omitempty" name:"Height"` +} \ No newline at end of file diff --git a/vendor/modules.txt b/vendor/modules.txt index 9163a3cf11..49372b3e3d 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -589,6 +589,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.525 +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.199 diff --git a/website/docs/r/css_pull_stream_task.html.markdown b/website/docs/r/css_pull_stream_task.html.markdown new file mode 100644 index 0000000000..51cea4a552 --- /dev/null +++ b/website/docs/r/css_pull_stream_task.html.markdown @@ -0,0 +1,105 @@ +--- +subcategory: "css" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_css_pull_stream_task" +sidebar_current: "docs-tencentcloud-resource-css_pull_stream_task" +description: |- + Provides a resource to create a css pull_stream_task +--- + +# tencentcloud_css_pull_stream_task + +Provides a resource to create a css pull_stream_task + +## Example Usage + +```hcl +resource "tencentcloud_css_pull_stream_task" "pull_stream_task" { + source_type = "PullLivePushLive" + source_urls = "" + domain_name = "" + app_name = "" + stream_name = "" + start_time = "" + end_time = "" + operator = "" + push_args = "" + callback_events = "" + vod_loop_times = "" + vod_refresh_type = "" + callback_url = "" + extra_cmd = "" + comment = "" + to_url = "" + backup_source_type = "" + backup_source_url = "" + watermark_list { + picture_url = "" + x_position = "" + y_position = "" + width = "" + height = "" + location = "" + + } + status = "" + file_index = "" + offset_time = "" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `app_name` - (Required, String) push app name. +* `domain_name` - (Required, String) push domain name. +* `end_time` - (Required, String) task end time. +* `operator` - (Required, String) desc operator user name. +* `source_type` - (Required, String) &#39;PullLivePushLive&#39;: SourceUrls live type, &#39;PullVodPushLive&#39;: SourceUrls vod type. +* `source_urls` - (Required, Set: [`String`]) Pull Source media, SourceType=PullLivePushLive only 1 value, SourceType=PullLivePushLive can input multi values. +* `start_time` - (Required, String) task begin time. +* `stream_name` - (Required, String) push stream name. +* `backup_source_type` - (Optional, String) backup pull source type. +* `backup_source_url` - (Optional, String) backup pull source. +* `callback_events` - (Optional, Set: [`String`]) defind the callback event you need, null for all. TaskStart, TaskExit, VodSourceFileStart, VodSourceFileFinish, ResetTaskConfig, PullFileUnstable, PushStreamUnstable, PullFileFailed, PushStreamFailed, FileEndEarly. +* `callback_url` - (Optional, String) task event callback url. +* `comment` - (Optional, String) desc for pull task. +* `extra_cmd` - (Optional, String) ignore_region for ignore the input region and reblance inside the server. +* `file_index` - (Optional, Int) task enable or disable. +* `offset_time` - (Optional, Int) task enable or disable. +* `push_args` - (Optional, String) other pushing args. +* `status` - (Optional, String) task enable or disable. +* `to_url` - (Optional, String) full target push url, DomainName, AppName, StreamName field must be empty. +* `vod_loop_times` - (Optional, Int) loop time for vod. +* `vod_refresh_type` - (Optional, String) vod refresh method. &#39;ImmediateNewSource&#39;: switch to new source at once, &#39;ContinueBreakPoint&#39;: switch to new source while old source finish. +* `watermark_list` - (Optional, List) watermark list, max 4 setting. + +The `watermark_list` object supports the following: + +* `height` - (Required, Int) pic height. +* `location` - (Required, Int) position type, 0:left top, 1:right top, 2:right bot, 3: left bot. +* `picture_url` - (Required, String) watermark picture url. +* `width` - (Required, Int) pic width. +* `x_position` - (Required, Int) x position. +* `y_position` - (Required, Int) y position. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. +* `create_by` - desc who create the task. +* `create_time` - create time. +* `region` - task run region. +* `update_by` - desc who update the task. +* `update_time` - update time. + + +## Import + +css pull_stream_task can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_pull_stream_task.pull_stream_task pullStreamTask_id +``` + diff --git a/website/docs/r/css_watermark.html.markdown b/website/docs/r/css_watermark.html.markdown new file mode 100644 index 0000000000..57798f5838 --- /dev/null +++ b/website/docs/r/css_watermark.html.markdown @@ -0,0 +1,52 @@ +--- +subcategory: "css" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_css_watermark" +sidebar_current: "docs-tencentcloud-resource-css_watermark" +description: |- + Provides a resource to create a css watermark +--- + +# tencentcloud_css_watermark + +Provides a resource to create a css watermark + +## Example Usage + +```hcl +resource "tencentcloud_css_watermark" "watermark" { + picture_url = "" + watermark_name = "" + x_position = "" + y_position = "" + width = "" + height = "" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `picture_url` - (Required, String) watermark url. +* `watermark_name` - (Required, String) watermark name. +* `height` - (Optional, Int) height of the picture. +* `width` - (Optional, Int) width of the picture. +* `x_position` - (Optional, Int) x position of the picture. +* `y_position` - (Optional, Int) y position of the picture. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. + + + +## Import + +css watermark can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_watermark.watermark watermark_id +``` + diff --git a/website/docs/r/css_watermark_rule.html.markdown b/website/docs/r/css_watermark_rule.html.markdown new file mode 100644 index 0000000000..14b86121ed --- /dev/null +++ b/website/docs/r/css_watermark_rule.html.markdown @@ -0,0 +1,49 @@ +--- +subcategory: "css" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_css_watermark_rule" +sidebar_current: "docs-tencentcloud-resource-css_watermark_rule" +description: |- + Provides a resource to create a css watermark_rule +--- + +# tencentcloud_css_watermark_rule + +Provides a resource to create a css watermark_rule + +## Example Usage + +```hcl +resource "tencentcloud_css_watermark_rule" "watermark_rule" { + domain_name = "" + app_name = "" + stream_name = "" + watermark_id = "" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `app_name` - (Required, String) rule app name. +* `domain_name` - (Required, String) rule domain name. +* `stream_name` - (Required, String) rule stream name. +* `watermark_id` - (Required, Int) watermark id created by AddLiveWatermark. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. +* `create_time` - create time. +* `update_time` - update time. + + +## Import + +css watermark_rule can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_watermark_rule.watermark_rule watermarkRule_id +``` + diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb index 8aa72af3c4..c1a6ffd60d 100644 --- a/website/tencentcloud.erb +++ b/website/tencentcloud.erb @@ -2157,6 +2157,26 @@ +
  • + css + +
  • <% end %> From 889bd5d3296d6670507da09e18f6e987b209367a Mon Sep 17 00:00:00 2001 From: nickyinluo Date: Fri, 11 Nov 2022 20:55:32 +0800 Subject: [PATCH 2/7] add pull stream --- go.mod | 4 +- go.sum | 4 + tencentcloud/provider.go | 12 ++- .../resource_tc_css_pull_stream_task.go | 40 +++++----- tencentcloud/resource_tc_css_watermark.go | 19 ++--- .../resource_tc_css_watermark_rule.go | 78 +++++++++---------- tencentcloud/service_tencentcloud_css.go | 7 +- 7 files changed, 81 insertions(+), 83 deletions(-) diff --git a/go.mod b/go.mod index 05830186bf..cb4fac5c69 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.445 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.199 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.412 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.532 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.535 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.445 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.488 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu v1.0.335 @@ -48,8 +48,8 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.514 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.199 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.535 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.525 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.199 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.518 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.391 diff --git a/go.sum b/go.sum index 287f6febb5..e11389b48f 100644 --- a/go.sum +++ b/go.sum @@ -509,6 +509,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.529 h1:B26P github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.529/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.532 h1:DjnGMxuX49TNNyXp6V18VO+oY9Y5Gs4/+vL0LeZ8YIo= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.532/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.535 h1:B5RVDxQ+Jxq8wrA3SoVr7j3vZ4CJfC4kfD+BDDxnUeY= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.535/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.445 h1:Bh7XD0ypNMHYyBOM8hhKsSu+y0VVKUnJVS+YKKhfpGg= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.445/go.mod h1:jMDD351efCFpT1+KVFbcpu6SbmP4TYmp4qkoCfr63nQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.488 h1:A1seXWtMf2atBjSNYvcwxyDoFzCMgqyVnsxnWzhqJEA= @@ -536,6 +538,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413 h1: github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413/go.mod h1:nG/8Iz/MtV4zBxz9ToLJ90O4ocdME9WUKwims/bitr4= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.525 h1:BXXFoizOv43lfZ/Ww8t7jvwiD3RyssckRgWDGIqjDPE= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.525/go.mod h1:Irr11PIq15N1XYyeH2c/RqtDsAbEWY4KXiMxu4BVRfI= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.535 h1:hSwG4ZbcP2Ht+AWHI81EMCvJdDTyTT7zP/qjOe/VcZg= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.535/go.mod h1:mYKqy56uKaI0aPySeUByymvwDerPTmdMJQPQKC/NU1s= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532 h1:3PCI1M2dvfAWVx+5xTqap+8qIsmG8cQ4lpvGfwmO2NM= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532/go.mod h1:lb1pdGQn9dzyXmq6+NkpN4avTVRvG+ziqFtOeL5D7y4= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.199 h1:2jsGprrewRIP3smcTsY5GpEuOuJ+qyV/BN3Py0Ivf1o= diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index 9054842242..2d928db472 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -746,6 +746,14 @@ TencentDB for MariaDB(MariaDB) tencentcloud_mariadb_log_file_retention_period tencentcloud_mariadb_security_groups +css + Resource + tencentcloud_css_watermark + tencentcloud_css_watermark_rule_attachment + tencentcloud_css_pull_stream_task + tencentcloud_css_live_transcode_template + tencentcloud_css_live_transcode_rule_attachment + */ package tencentcloud @@ -1336,8 +1344,10 @@ func Provider() terraform.ResourceProvider { "tencentcloud_mariadb_log_file_retention_period": resourceTencentCloudMariadbLogFileRetentionPeriod(), "tencentcloud_mariadb_security_groups": resourceTencentCloudMariadbSecurityGroups(), "tencentcloud_css_watermark": resourceTencentCloudCssWatermark(), - "tencentcloud_css_watermark_rule": resourceTencentCloudCssWatermarkRule(), + "tencentcloud_css_watermark_rule_attachment": resourceTencentCloudCssWatermarkRuleAttachment(), "tencentcloud_css_pull_stream_task": resourceTencentCloudCssPullStreamTask(), + // "tencentcloud_css_live_transcode_template": resourceTencentCloudCssLiveTranscodeTemplate(), + // "tencentcloud_css_live_transcode_rule_attachment": resourceTencentCloudCssLiveTranscodeRuleAttachment(), }, ConfigureFunc: providerConfigure, diff --git a/tencentcloud/resource_tc_css_pull_stream_task.go b/tencentcloud/resource_tc_css_pull_stream_task.go index d020f17599..70815b4a6d 100644 --- a/tencentcloud/resource_tc_css_pull_stream_task.go +++ b/tencentcloud/resource_tc_css_pull_stream_task.go @@ -286,7 +286,6 @@ func resourceTencentCloudCssPullStreamTaskCreate(d *schema.ResourceData, meta in ) if v, ok := d.GetOk("source_type"); ok { - request.SourceType = helper.String(v.(string)) } @@ -299,37 +298,30 @@ func resourceTencentCloudCssPullStreamTaskCreate(d *schema.ResourceData, meta in } if v, ok := d.GetOk("domain_name"); ok { - request.DomainName = helper.String(v.(string)) } if v, ok := d.GetOk("app_name"); ok { - request.AppName = helper.String(v.(string)) } if v, ok := d.GetOk("stream_name"); ok { - request.StreamName = helper.String(v.(string)) } if v, ok := d.GetOk("start_time"); ok { - request.StartTime = helper.String(v.(string)) } if v, ok := d.GetOk("end_time"); ok { - request.EndTime = helper.String(v.(string)) } if v, ok := d.GetOk("operator"); ok { - request.Operator = helper.String(v.(string)) } if v, ok := d.GetOk("push_args"); ok { - request.PushArgs = helper.String(v.(string)) } @@ -497,10 +489,18 @@ func resourceTencentCloudCssPullStreamTaskRead(d *schema.ResourceData, meta inte _ = d.Set("callback_url", pullStreamTask.CallbackUrl) } + // if pullStreamTask.ExtraCmd != nil { + // _ = d.Set("extra_cmd", pullStreamTask.ExtraCmd) + // } + if pullStreamTask.Comment != nil { _ = d.Set("comment", pullStreamTask.Comment) } + // if pullStreamTask.ToUrl != nil { + // _ = d.Set("to_url", pullStreamTask.ToUrl) + // } + if pullStreamTask.BackupSourceType != nil { _ = d.Set("backup_source_type", pullStreamTask.BackupSourceType) } @@ -581,7 +581,9 @@ func resourceTencentCloudCssPullStreamTaskUpdate(d *schema.ResourceData, meta in request := css.NewModifyLivePullStreamTaskRequest() - request.TaskId = helper.String(d.Id()) + taskId := d.Id() + + request.TaskId = &taskId if d.HasChange("source_type") { @@ -605,7 +607,6 @@ func resourceTencentCloudCssPullStreamTaskUpdate(d *schema.ResourceData, meta in if d.HasChange("app_name") { return fmt.Errorf("`app_name` do not support change now.") - } if d.HasChange("stream_name") { @@ -724,32 +725,27 @@ func resourceTencentCloudCssPullStreamTaskUpdate(d *schema.ResourceData, meta in if v, ok := dMap["location"]; ok { pullPushWatermarkInfo.Location = helper.IntInt64(v.(int)) } - request.WatermarkList = append(request.WatermarkList, &pullPushWatermarkInfo) } } - } if d.HasChange("status") { if v, ok := d.GetOk("status"); ok { request.Status = helper.String(v.(string)) } - } if d.HasChange("file_index") { if v, ok := d.GetOk("file_index"); ok { request.FileIndex = helper.IntInt64(v.(int)) } - } if d.HasChange("offset_time") { if v, ok := d.GetOk("offset_time"); ok { request.OffsetTime = helper.IntInt64(v.(int)) } - } err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { @@ -775,16 +771,16 @@ func resourceTencentCloudCssPullStreamTaskDelete(d *schema.ResourceData, meta in defer logElapsed("resource.tencentcloud_css_pull_stream_task.delete")() defer inconsistentCheck(d, meta)() - // logId := getLogId(contextNil) - // ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) - // service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} - // pullStreamTaskId := d.Id() + taskId := d.Id() - // if err := service.DeleteCssPullStreamTaskById(ctx, taskId); err != nil { - // return err - // } + if err := service.DeleteCssPullStreamTaskById(ctx, taskId); err != nil { + return err + } return nil } diff --git a/tencentcloud/resource_tc_css_watermark.go b/tencentcloud/resource_tc_css_watermark.go index 23cad43571..c00a5330b9 100644 --- a/tencentcloud/resource_tc_css_watermark.go +++ b/tencentcloud/resource_tc_css_watermark.go @@ -6,8 +6,7 @@ Example Usage ```hcl resource "tencentcloud_css_watermark" "watermark" { picture_url = "" - watermark_name = ""-+ - + watermark_name = "" x_position = "" y_position = "" width = "" @@ -93,7 +92,7 @@ func resourceTencentCloudCssWatermarkCreate(d *schema.ResourceData, meta interfa var ( request = css.NewAddLiveWatermarkRequest() response *css.AddLiveWatermarkResponse - watermarkId uint64 + watermarkId string ) if v, ok := d.GetOk("picture_url"); ok { @@ -139,9 +138,9 @@ func resourceTencentCloudCssWatermarkCreate(d *schema.ResourceData, meta interfa return err } - watermarkId = *response.Response.WatermarkId + watermarkId = helper.UInt64ToStr(*response.Response.WatermarkId) - d.SetId(helper.UInt64ToStr(watermarkId)) + d.SetId(watermarkId) return resourceTencentCloudCssWatermarkRead(d, meta) } @@ -203,50 +202,44 @@ func resourceTencentCloudCssWatermarkUpdate(d *schema.ResourceData, meta interfa request := css.NewUpdateLiveWatermarkRequest() - watermarkId := helper.StrToInt64(d.Id()) + watermarkId := d.Id() - request.WatermarkId = helper.Int64(watermarkId) + request.WatermarkId = helper.Int64(helper.StrToInt64(watermarkId)) if d.HasChange("picture_url") { if v, ok := d.GetOk("picture_url"); ok { request.PictureUrl = helper.String(v.(string)) } - } if d.HasChange("watermark_name") { if v, ok := d.GetOk("watermark_name"); ok { request.WatermarkName = helper.String(v.(string)) } - } if d.HasChange("x_position") { if v, ok := d.GetOk("x_position"); ok { request.XPosition = helper.IntInt64(v.(int)) } - } if d.HasChange("y_position") { if v, ok := d.GetOk("y_position"); ok { request.YPosition = helper.IntInt64(v.(int)) } - } if d.HasChange("width") { if v, ok := d.GetOk("width"); ok { request.Width = helper.IntInt64(v.(int)) } - } if d.HasChange("height") { if v, ok := d.GetOk("height"); ok { request.Height = helper.IntInt64(v.(int)) } - } err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { diff --git a/tencentcloud/resource_tc_css_watermark_rule.go b/tencentcloud/resource_tc_css_watermark_rule.go index 2751db50a5..9c79317b13 100644 --- a/tencentcloud/resource_tc_css_watermark_rule.go +++ b/tencentcloud/resource_tc_css_watermark_rule.go @@ -1,10 +1,10 @@ /* -Provides a resource to create a css watermark_rule +Provides a resource to create a css watermark_rule_attachment Example Usage ```hcl -resource "tencentcloud_css_watermark_rule" "watermark_rule" { +resource "tencentcloud_css_watermark_rule_attachment" "watermark_rule_attachment" { domain_name = "" app_name = "" stream_name = "" @@ -14,9 +14,9 @@ resource "tencentcloud_css_watermark_rule" "watermark_rule" { ``` Import -css watermark_rule can be imported using the id, e.g. +css watermark_rule_attachment can be imported using the id, e.g. ``` -$ terraform import tencentcloud_css_watermark_rule.watermark_rule watermarkRule_id +$ terraform import tencentcloud_css_watermark_rule_attachment.watermark_rule_attachment watermarkRuleAttachment_id ``` */ package tencentcloud @@ -33,12 +33,11 @@ import ( "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudCssWatermarkRule() *schema.Resource { +func resourceTencentCloudCssWatermarkRuleAttachment() *schema.Resource { return &schema.Resource{ - Read: resourceTencentCloudCssWatermarkRuleRead, - Create: resourceTencentCloudCssWatermarkRuleCreate, - // Update: resourceTencentCloudCssWatermarkRuleUpdate, - Delete: resourceTencentCloudCssWatermarkRuleDelete, + Read: resourceTencentCloudCssWatermarkRuleAttachmentRead, + Create: resourceTencentCloudCssWatermarkRuleAttachmentCreate, + Delete: resourceTencentCloudCssWatermarkRuleAttachmentDelete, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, }, @@ -82,8 +81,8 @@ func resourceTencentCloudCssWatermarkRule() *schema.Resource { } } -func resourceTencentCloudCssWatermarkRuleCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_css_watermark_rule.create")() +func resourceTencentCloudCssWatermarkRuleAttachmentCreate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.create")() defer inconsistentCheck(d, meta)() logId := getLogId(contextNil) @@ -112,9 +111,10 @@ func resourceTencentCloudCssWatermarkRuleCreate(d *schema.ResourceData, meta int request.StreamName = helper.String(v.(string)) } - // if v, ok := d.GetOk("watermark_id"); ok { - // request.WatermarkId = helper.IntInt64(v.(int)) - // } + if v, ok := d.GetOk("watermark_id"); ok { + watermarkId = v.(string) + request.TemplateId = helper.IntInt64(v.(int)) + } err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().CreateLiveWatermarkRule(request) @@ -124,23 +124,20 @@ func resourceTencentCloudCssWatermarkRuleCreate(d *schema.ResourceData, meta int log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } - // response = result return nil }) if err != nil { - log.Printf("[CRITAL]%s create css watermarkRule failed, reason:%+v", logId, err) + log.Printf("[CRITAL]%s create css watermarkRuleAttachment failed, reason:%+v", logId, err) return err } - watermarkId = "" //*response.Response.DomainName - d.SetId(domainName + FILED_SP + appName + FILED_SP + streamName + FILED_SP + watermarkId) - return resourceTencentCloudCssWatermarkRuleRead(d, meta) + return resourceTencentCloudCssWatermarkRuleAttachmentRead(d, meta) } -func resourceTencentCloudCssWatermarkRuleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_css_watermark_rule.read")() +func resourceTencentCloudCssWatermarkRuleAttachmentRead(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.read")() defer inconsistentCheck(d, meta)() logId := getLogId(contextNil) @@ -157,46 +154,46 @@ func resourceTencentCloudCssWatermarkRuleRead(d *schema.ResourceData, meta inter streamName := idSplit[2] watermarkId := idSplit[3] - watermarkRule, err := service.DescribeCssWatermarkRule(ctx, domainName, appName, streamName, watermarkId) + watermarkRuleAttachment, err := service.DescribeCssWatermarkRuleAttachment(ctx, domainName, appName, streamName, watermarkId) if err != nil { return err } - if watermarkRule == nil { + if watermarkRuleAttachment == nil { d.SetId("") - return fmt.Errorf("resource `watermarkRule` %s does not exist", d.Id()) + return fmt.Errorf("resource `watermarkRuleAttachment` %s does not exist", d.Id()) } - if watermarkRule.DomainName != nil { - _ = d.Set("domain_name", watermarkRule.DomainName) + if watermarkRuleAttachment.DomainName != nil { + _ = d.Set("domain_name", watermarkRuleAttachment.DomainName) } - if watermarkRule.AppName != nil { - _ = d.Set("app_name", watermarkRule.AppName) + if watermarkRuleAttachment.AppName != nil { + _ = d.Set("app_name", watermarkRuleAttachment.AppName) } - if watermarkRule.StreamName != nil { - _ = d.Set("stream_name", watermarkRule.StreamName) + if watermarkRuleAttachment.StreamName != nil { + _ = d.Set("stream_name", watermarkRuleAttachment.StreamName) } - // if watermarkRule.WatermarkId != nil { - // _ = d.Set("watermark_id", watermarkRule.WatermarkId) - // } + if watermarkRuleAttachment.TemplateId != nil { + _ = d.Set("watermark_id", watermarkRuleAttachment.TemplateId) + } - if watermarkRule.CreateTime != nil { - _ = d.Set("create_time", watermarkRule.CreateTime) + if watermarkRuleAttachment.CreateTime != nil { + _ = d.Set("create_time", watermarkRuleAttachment.CreateTime) } - if watermarkRule.UpdateTime != nil { - _ = d.Set("update_time", watermarkRule.UpdateTime) + if watermarkRuleAttachment.UpdateTime != nil { + _ = d.Set("update_time", watermarkRuleAttachment.UpdateTime) } return nil } -func resourceTencentCloudCssWatermarkRuleDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_css_watermark_rule.delete")() +func resourceTencentCloudCssWatermarkRuleAttachmentDelete(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.delete")() defer inconsistentCheck(d, meta)() logId := getLogId(contextNil) @@ -211,9 +208,8 @@ func resourceTencentCloudCssWatermarkRuleDelete(d *schema.ResourceData, meta int domainName := idSplit[0] appName := idSplit[1] streamName := idSplit[2] - watermarkId := idSplit[3] - if err := service.DeleteCssWatermarkRuleById(ctx, domainName, appName, streamName, watermarkId); err != nil { + if err := service.DetachCssWatermarkRuleAttachment(ctx, domainName, appName, streamName); err != nil { return err } diff --git a/tencentcloud/service_tencentcloud_css.go b/tencentcloud/service_tencentcloud_css.go index e7733022cc..da3bb61eaf 100644 --- a/tencentcloud/service_tencentcloud_css.go +++ b/tencentcloud/service_tencentcloud_css.go @@ -71,7 +71,7 @@ func (me *CssService) DeleteCssWatermarkById(ctx context.Context, watermarkId st return } -func (me *CssService) DescribeCssWatermarkRule(ctx context.Context, domainName, appName, streamName, watermarkId string) (watermarkRule *css.RuleInfo, errRet error) { +func (me *CssService) DescribeCssWatermarkRuleAttachment(ctx context.Context, domainName, appName, streamName, watermarkId string) (watermarkRuleAttachment *css.RuleInfo, errRet error) { var ( logId = getLogId(ctx) request = css.NewDescribeLiveWatermarkRulesRequest() @@ -100,11 +100,11 @@ func (me *CssService) DescribeCssWatermarkRule(ctx context.Context, domainName, if len(response.Response.Rules) < 1 { return } - watermarkRule = response.Response.Rules[0] + watermarkRuleAttachment = response.Response.Rules[0] return } -func (me *CssService) DeleteCssWatermarkRuleById(ctx context.Context, domainName, appName, streamName, watermarkId string) (errRet error) { +func (me *CssService) DetachCssWatermarkRuleAttachment(ctx context.Context, domainName, appName, streamName string) (errRet error) { logId := getLogId(ctx) request := css.NewDeleteLiveWatermarkRuleRequest() @@ -112,7 +112,6 @@ func (me *CssService) DeleteCssWatermarkRuleById(ctx context.Context, domainName request.DomainName = &domainName request.AppName = &appName request.StreamName = &streamName - // request.WatermarkId = &watermarkId defer func() { if errRet != nil { From 70cc990c2157fc4c0b66d923927771037d37019b Mon Sep 17 00:00:00 2001 From: nickyinluo Date: Wed, 16 Nov 2022 18:02:33 +0800 Subject: [PATCH 3/7] add pull stream e2e case --- go.sum | 1 + tencentcloud/provider.go | 18 +- ...e_tc_css_live_transcode_rule_attachment.go | 219 +++++++ ...css_live_transcode_rule_attachment_test.go | 40 ++ ...resource_tc_css_live_transcode_template.go | 617 ++++++++++++++++++ ...rce_tc_css_live_transcode_template_test.go | 58 ++ .../resource_tc_css_pull_stream_task.go | 7 +- .../resource_tc_css_pull_stream_task_test.go | 157 ++++- .../resource_tc_css_watermark_rule.go | 217 ------ .../resource_tc_css_watermark_rule_test.go | 40 -- tencentcloud/service_tencentcloud_css.go | 170 ++++- 11 files changed, 1234 insertions(+), 310 deletions(-) create mode 100644 tencentcloud/resource_tc_css_live_transcode_rule_attachment.go create mode 100644 tencentcloud/resource_tc_css_live_transcode_rule_attachment_test.go create mode 100644 tencentcloud/resource_tc_css_live_transcode_template.go create mode 100644 tencentcloud/resource_tc_css_live_transcode_template_test.go delete mode 100644 tencentcloud/resource_tc_css_watermark_rule.go delete mode 100644 tencentcloud/resource_tc_css_watermark_rule_test.go diff --git a/go.sum b/go.sum index 4d31a7d0ed..14c20dfbea 100644 --- a/go.sum +++ b/go.sum @@ -509,6 +509,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.529 h1:B26P github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.529/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.532 h1:DjnGMxuX49TNNyXp6V18VO+oY9Y5Gs4/+vL0LeZ8YIo= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.532/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.533/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.535 h1:B5RVDxQ+Jxq8wrA3SoVr7j3vZ4CJfC4kfD+BDDxnUeY= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.535/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.445 h1:Bh7XD0ypNMHYyBOM8hhKsSu+y0VVKUnJVS+YKKhfpGg= diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index fa3b9b361e..75a98ce201 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -1353,16 +1353,16 @@ func Provider() terraform.ResourceProvider { "tencentcloud_mariadb_log_file_retention_period": resourceTencentCloudMariadbLogFileRetentionPeriod(), "tencentcloud_mariadb_security_groups": resourceTencentCloudMariadbSecurityGroups(), "tencentcloud_css_watermark": resourceTencentCloudCssWatermark(), - "tencentcloud_css_watermark_rule_attachment": resourceTencentCloudCssWatermarkRuleAttachment(), + // "tencentcloud_css_watermark_rule_attachment": resourceTencentCloudCssWatermarkRuleAttachment(), "tencentcloud_css_pull_stream_task": resourceTencentCloudCssPullStreamTask(), - // "tencentcloud_css_live_transcode_template": resourceTencentCloudCssLiveTranscodeTemplate(), - // "tencentcloud_css_live_transcode_rule_attachment": resourceTencentCloudCssLiveTranscodeRuleAttachment(), - "tencentcloud_pts_project": resourceTencentCloudPtsProject(), - "tencentcloud_pts_alert_channel": resourceTencentCloudPtsAlertChannel(), - "tencentcloud_pts_scenario": resourceTencentCloudPtsScenario(), - "tencentcloud_pts_file": resourceTencentCloudPtsFile(), - "tencentcloud_pts_job": resourceTencentCloudPtsJob(), - "tencentcloud_pts_cron_job": resourceTencentCloudPtsCronJob(), + "tencentcloud_css_live_transcode_template": resourceTencentCloudCssLiveTranscodeTemplate(), + "tencentcloud_css_live_transcode_rule_attachment": resourceTencentCloudCssLiveTranscodeRuleAttachment(), + "tencentcloud_pts_project": resourceTencentCloudPtsProject(), + "tencentcloud_pts_alert_channel": resourceTencentCloudPtsAlertChannel(), + "tencentcloud_pts_scenario": resourceTencentCloudPtsScenario(), + "tencentcloud_pts_file": resourceTencentCloudPtsFile(), + "tencentcloud_pts_job": resourceTencentCloudPtsJob(), + "tencentcloud_pts_cron_job": resourceTencentCloudPtsCronJob(), }, ConfigureFunc: providerConfigure, diff --git a/tencentcloud/resource_tc_css_live_transcode_rule_attachment.go b/tencentcloud/resource_tc_css_live_transcode_rule_attachment.go new file mode 100644 index 0000000000..52c23a980c --- /dev/null +++ b/tencentcloud/resource_tc_css_live_transcode_rule_attachment.go @@ -0,0 +1,219 @@ +/* +Provides a resource to create a css live_transcode_rule_attachment + +Example Usage + +```hcl +resource "tencentcloud_css_live_transcode_rule_attachment" "live_transcode_rule_attachment" { + domain_name = "" + app_name = "" + stream_name = "" + template_id = "" + } + +``` +Import + +css live_transcode_rule_attachment can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment liveTranscodeRuleAttachment_id +``` +*/ +package tencentcloud + +import ( + "context" + "fmt" + "log" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func resourceTencentCloudCssLiveTranscodeRuleAttachment() *schema.Resource { + return &schema.Resource{ + Read: resourceTencentCloudCssLiveTranscodeRuleAttachmentRead, + Create: resourceTencentCloudCssLiveTranscodeRuleAttachmentCreate, + Delete: resourceTencentCloudCssLiveTranscodeRuleAttachmentDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "domain_name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "domain name hich you want to bind the transcode template.", + }, + + "app_name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "app name which you want to bind, can be empty string if not binding specific app name.", + }, + + "stream_name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "stream name which you want to bind, can be empty string if not binding specific stream.", + }, + + "template_id": { + Type: schema.TypeInt, + Required: true, + ForceNew: true, + Description: "template created by css_live_transcode_template.", + }, + + "create_time": { + Type: schema.TypeInt, + Computed: true, + Description: "create time.", + }, + + "update_time": { + Type: schema.TypeString, + Computed: true, + Description: "update time.", + }, + }, + } +} + +func resourceTencentCloudCssLiveTranscodeRuleAttachmentCreate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_live_transcode_rule_attachment.create")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + + var ( + request = css.NewCreateLiveTranscodeRuleRequest() + domainName string + appName string + streamName string + templateId int64 + ) + + if v, ok := d.GetOk("domain_name"); ok { + domainName = v.(string) + request.DomainName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("app_name"); ok { + appName = v.(string) + request.AppName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("stream_name"); ok { + streamName = v.(string) + request.StreamName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("template_id"); ok { + templateId = (int64)(v.(int)) + request.TemplateId = helper.IntInt64(v.(int)) + } + + err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().CreateLiveTranscodeRule(request) + if e != nil { + return retryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create css liveTranscodeRuleAttachment failed, reason:%+v", logId, err) + return err + } + + d.SetId(domainName + FILED_SP + appName + FILED_SP + streamName + FILED_SP + helper.Int64ToStr(templateId)) + return resourceTencentCloudCssLiveTranscodeRuleAttachmentRead(d, meta) +} + +func resourceTencentCloudCssLiveTranscodeRuleAttachmentRead(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_live_transcode_rule_attachment.read")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + idSplit := strings.Split(d.Id(), FILED_SP) + if len(idSplit) != 4 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + domainName := idSplit[0] + templateId := idSplit[3] + + liveTranscodeRuleAttachment, err := service.DescribeCssLiveTranscodeRuleAttachment(ctx, helper.String(domainName), helper.String(templateId)) + + if err != nil { + return err + } + + if liveTranscodeRuleAttachment == nil { + d.SetId("") + return fmt.Errorf("resource `liveTranscodeRuleAttachment` %s does not exist", d.Id()) + } + + if liveTranscodeRuleAttachment.DomainName != nil { + _ = d.Set("domain_name", liveTranscodeRuleAttachment.DomainName) + } + + if liveTranscodeRuleAttachment.AppName != nil { + _ = d.Set("app_name", liveTranscodeRuleAttachment.AppName) + } + + if liveTranscodeRuleAttachment.StreamName != nil { + _ = d.Set("stream_name", liveTranscodeRuleAttachment.StreamName) + } + + if liveTranscodeRuleAttachment.TemplateId != nil { + _ = d.Set("template_id", liveTranscodeRuleAttachment.TemplateId) + } + + if liveTranscodeRuleAttachment.CreateTime != nil { + _ = d.Set("create_time", liveTranscodeRuleAttachment.CreateTime) + } + + if liveTranscodeRuleAttachment.UpdateTime != nil { + _ = d.Set("update_time", liveTranscodeRuleAttachment.UpdateTime) + } + + return nil +} + +func resourceTencentCloudCssLiveTranscodeRuleAttachmentDelete(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_live_transcode_rule_attachment.delete")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + idSplit := strings.Split(d.Id(), FILED_SP) + if len(idSplit) != 4 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + domainName := idSplit[0] + appName := idSplit[1] + streamName := idSplit[2] + templateId := idSplit[3] + + if err := service.DeleteCssLiveTranscodeRuleAttachmentById(ctx, helper.String(domainName), helper.String(appName), helper.String(streamName), helper.String(templateId)); err != nil { + return err + } + + return nil +} diff --git a/tencentcloud/resource_tc_css_live_transcode_rule_attachment_test.go b/tencentcloud/resource_tc_css_live_transcode_rule_attachment_test.go new file mode 100644 index 0000000000..a98baf7697 --- /dev/null +++ b/tencentcloud/resource_tc_css_live_transcode_rule_attachment_test.go @@ -0,0 +1,40 @@ +package tencentcloud + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +func TestAccTencentCloudCssLiveTranscodeRuleAttachment_basic(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCssLiveTranscodeRuleAttachment, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment", "id"), + ), + }, + { + ResourceName: "tencentcloud_css_live_transcode_rule_attachment.liveTranscodeRuleAttachment", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +const testAccCssLiveTranscodeRuleAttachment = ` + +resource "tencentcloud_css_live_transcode_rule_attachment" "live_transcode_rule_attachment" { + domain_name = "" + app_name = "" + stream_name = "" + template_id = "" + } + +` diff --git a/tencentcloud/resource_tc_css_live_transcode_template.go b/tencentcloud/resource_tc_css_live_transcode_template.go new file mode 100644 index 0000000000..5aab5749ae --- /dev/null +++ b/tencentcloud/resource_tc_css_live_transcode_template.go @@ -0,0 +1,617 @@ +/* +Provides a resource to create a css live_transcode_template + +Example Usage + +```hcl +resource "tencentcloud_css_live_transcode_template" "live_transcode_template" { + template_name = "" + video_bitrate = "" + acodec = "" + audio_bitrate = "" + vcodec = "" + description = "" + need_video = "" + width = "" + need_audio = "" + height = "" + fps = "" + gop = "" + rotate = "" + profile = "" + bitrate_to_orig = "" + height_to_orig = "" + fps_to_orig = "" + ai_trans_code = "" + adapt_bitrate_percent = "" + short_edge_as_height = "" + d_r_m_type = "" + d_r_m_tracks = "" +} + +``` +Import + +css live_transcode_template can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_live_transcode_template.live_transcode_template liveTranscodeTemplate_id +``` +*/ +package tencentcloud + +import ( + "context" + "fmt" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func resourceTencentCloudCssLiveTranscodeTemplate() *schema.Resource { + return &schema.Resource{ + Read: resourceTencentCloudCssLiveTranscodeTemplateRead, + Create: resourceTencentCloudCssLiveTranscodeTemplateCreate, + Update: resourceTencentCloudCssLiveTranscodeTemplateUpdate, + Delete: resourceTencentCloudCssLiveTranscodeTemplateDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "template_name": { + Type: schema.TypeString, + Required: true, + Description: "template name, only support 0-9 and a-z.", + }, + + "video_bitrate": { + Type: schema.TypeInt, + Required: true, + Description: "video bitrate, 0 for origin, range 0kbps - 8000kbps.", + }, + + "acodec": { + Type: schema.TypeString, + Optional: true, + Description: "default acc, not support now.", + }, + + "audio_bitrate": { + Type: schema.TypeInt, + Optional: true, + Description: "default 0, range 0 - 500.", + }, + + "vcodec": { + Type: schema.TypeString, + Optional: true, + Description: "video codec, default origin, support h264/h265/origin.", + }, + + "description": { + Type: schema.TypeString, + Optional: true, + Description: "template desc.", + }, + + "need_video": { + Type: schema.TypeInt, + Optional: true, + Description: "keep video or not, default 1 for yes, 0 for no.", + }, + + "width": { + Type: schema.TypeInt, + Optional: true, + Description: "template width, default 0, range 0 - 3000, must be pow of 2.", + }, + + "need_audio": { + Type: schema.TypeInt, + Optional: true, + Description: "keep audio or not, default 1 for yes, 0 for no.", + }, + + "height": { + Type: schema.TypeInt, + Optional: true, + Description: "template height, default 0, range 0 - 3000, must be pow of 2, needed while AiTransCode = 1.", + }, + + "fps": { + Type: schema.TypeInt, + Optional: true, + Description: "video fps, default 0, range 0 - 60.", + }, + + "gop": { + Type: schema.TypeInt, + Optional: true, + Description: "gop of the video, second, default origin of the video, range 2 - 6.", + }, + + "rotate": { + Type: schema.TypeInt, + Optional: true, + Description: "roate degree, default 0, support 0/90/180/270.", + }, + + "profile": { + Type: schema.TypeString, + Optional: true, + Description: "quality of the video, default baseline, support baseline/main/high.", + }, + + "bitrate_to_orig": { + Type: schema.TypeInt, + Optional: true, + Description: "base on origin bitrate if origin bitrate is lower than the setting bitrate. default 0, 1 for yes, 0 for no.", + }, + + "height_to_orig": { + Type: schema.TypeInt, + Optional: true, + Description: "base on origin height if origin height is lower than the setting height. default 0, 1 for yes, 0 for no.", + }, + + "fps_to_orig": { + Type: schema.TypeInt, + Optional: true, + Description: "base on origin fps if origin fps is lower than the setting fps. default 0, 1 for yes, 0 for no.", + }, + + "ai_trans_code": { + Type: schema.TypeInt, + Optional: true, + Description: "enable high speed mode, default 0, 1 for enable, 0 for no.", + }, + + "adapt_bitrate_percent": { + Type: schema.TypeFloat, + Optional: true, + Description: "high speed mode adapt bitrate, support 0 - 0.5.", + }, + + "short_edge_as_height": { + Type: schema.TypeInt, + Optional: true, + Description: "let the short edge as the height.", + }, + + "d_r_m_type": { + Type: schema.TypeString, + Optional: true, + Description: "DRM type, support fairplay/normalaes/widevine.", + }, + + "d_r_m_tracks": { + Type: schema.TypeString, + Optional: true, + Description: "DRM tracks, support AUDIO/SD/HD/UHD1/UHD2.", + }, + }, + } +} + +func resourceTencentCloudCssLiveTranscodeTemplateCreate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_live_transcode_template.create")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + + var ( + request = css.NewCreateLiveTranscodeTemplateRequest() + response *css.CreateLiveTranscodeTemplateResponse + templateId string + ) + + if v, ok := d.GetOk("template_name"); ok { + + request.TemplateName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("video_bitrate"); ok { + request.VideoBitrate = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("acodec"); ok { + + request.Acodec = helper.String(v.(string)) + } + + if v, ok := d.GetOk("audio_bitrate"); ok { + request.AudioBitrate = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("vcodec"); ok { + + request.Vcodec = helper.String(v.(string)) + } + + if v, ok := d.GetOk("description"); ok { + + request.Description = helper.String(v.(string)) + } + + if v, ok := d.GetOk("need_video"); ok { + request.NeedVideo = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("width"); ok { + request.Width = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("need_audio"); ok { + request.NeedAudio = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("height"); ok { + request.Height = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("fps"); ok { + request.Fps = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("gop"); ok { + request.Gop = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("rotate"); ok { + request.Rotate = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("profile"); ok { + + request.Profile = helper.String(v.(string)) + } + + if v, ok := d.GetOk("bitrate_to_orig"); ok { + request.BitrateToOrig = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("height_to_orig"); ok { + request.HeightToOrig = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("fps_to_orig"); ok { + request.FpsToOrig = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("ai_trans_code"); ok { + request.AiTransCode = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("adapt_bitrate_percent"); ok { + request.AdaptBitratePercent = helper.Float64(v.(float64)) + } + + if v, ok := d.GetOk("short_edge_as_height"); ok { + request.ShortEdgeAsHeight = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("d_r_m_type"); ok { + request.DRMType = helper.String(v.(string)) + } + + if v, ok := d.GetOk("d_r_m_tracks"); ok { + request.DRMTracks = helper.String(v.(string)) + } + + err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().CreateLiveTranscodeTemplate(request) + if e != nil { + return retryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + response = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create css liveTranscodeTemplate failed, reason:%+v", logId, err) + return err + } + + templateId = helper.Int64ToStr(*response.Response.TemplateId) + + d.SetId(templateId) + return resourceTencentCloudCssLiveTranscodeTemplateRead(d, meta) +} + +func resourceTencentCloudCssLiveTranscodeTemplateRead(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_live_transcode_template.read")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + templateId := d.Id() + + liveTranscodeTemplate, err := service.DescribeCssLiveTranscodeTemplate(ctx, helper.Int64(helper.StrToInt64(templateId))) + + if err != nil { + return err + } + + if liveTranscodeTemplate == nil { + d.SetId("") + return fmt.Errorf("resource `liveTranscodeTemplate` %s does not exist", templateId) + } + + if liveTranscodeTemplate.TemplateName != nil { + _ = d.Set("template_name", liveTranscodeTemplate.TemplateName) + } + + if liveTranscodeTemplate.VideoBitrate != nil { + _ = d.Set("video_bitrate", liveTranscodeTemplate.VideoBitrate) + } + + if liveTranscodeTemplate.Acodec != nil { + _ = d.Set("acodec", liveTranscodeTemplate.Acodec) + } + + if liveTranscodeTemplate.AudioBitrate != nil { + _ = d.Set("audio_bitrate", liveTranscodeTemplate.AudioBitrate) + } + + if liveTranscodeTemplate.Vcodec != nil { + _ = d.Set("vcodec", liveTranscodeTemplate.Vcodec) + } + + if liveTranscodeTemplate.Description != nil { + _ = d.Set("description", liveTranscodeTemplate.Description) + } + + if liveTranscodeTemplate.NeedVideo != nil { + _ = d.Set("need_video", liveTranscodeTemplate.NeedVideo) + } + + if liveTranscodeTemplate.Width != nil { + _ = d.Set("width", liveTranscodeTemplate.Width) + } + + if liveTranscodeTemplate.NeedAudio != nil { + _ = d.Set("need_audio", liveTranscodeTemplate.NeedAudio) + } + + if liveTranscodeTemplate.Height != nil { + _ = d.Set("height", liveTranscodeTemplate.Height) + } + + if liveTranscodeTemplate.Fps != nil { + _ = d.Set("fps", liveTranscodeTemplate.Fps) + } + + if liveTranscodeTemplate.Gop != nil { + _ = d.Set("gop", liveTranscodeTemplate.Gop) + } + + if liveTranscodeTemplate.Rotate != nil { + _ = d.Set("rotate", liveTranscodeTemplate.Rotate) + } + + if liveTranscodeTemplate.Profile != nil { + _ = d.Set("profile", liveTranscodeTemplate.Profile) + } + + if liveTranscodeTemplate.BitrateToOrig != nil { + _ = d.Set("bitrate_to_orig", liveTranscodeTemplate.BitrateToOrig) + } + + if liveTranscodeTemplate.HeightToOrig != nil { + _ = d.Set("height_to_orig", liveTranscodeTemplate.HeightToOrig) + } + + if liveTranscodeTemplate.FpsToOrig != nil { + _ = d.Set("fps_to_orig", liveTranscodeTemplate.FpsToOrig) + } + + if liveTranscodeTemplate.AiTransCode != nil { + _ = d.Set("ai_trans_code", liveTranscodeTemplate.AiTransCode) + } + + if liveTranscodeTemplate.AdaptBitratePercent != nil { + _ = d.Set("adapt_bitrate_percent", liveTranscodeTemplate.AdaptBitratePercent) + } + + if liveTranscodeTemplate.ShortEdgeAsHeight != nil { + _ = d.Set("short_edge_as_height", liveTranscodeTemplate.ShortEdgeAsHeight) + } + + if liveTranscodeTemplate.DRMType != nil { + _ = d.Set("d_r_m_type", liveTranscodeTemplate.DRMType) + } + + if liveTranscodeTemplate.DRMTracks != nil { + _ = d.Set("d_r_m_tracks", liveTranscodeTemplate.DRMTracks) + } + + return nil +} + +func resourceTencentCloudCssLiveTranscodeTemplateUpdate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_live_transcode_template.update")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + // ctx := context.WithValue(context.TODO(), logIdKey, logId) + + request := css.NewModifyLiveTranscodeTemplateRequest() + + request.TemplateId = helper.Int64(helper.StrToInt64(d.Id())) + + if d.HasChange("template_name") { + + return fmt.Errorf("`template_name` do not support change now.") + + } + + if d.HasChange("video_bitrate") { + if v, ok := d.GetOk("video_bitrate"); ok { + request.VideoBitrate = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("acodec") { + if v, ok := d.GetOk("acodec"); ok { + request.Acodec = helper.String(v.(string)) + } + } + + if d.HasChange("audio_bitrate") { + return fmt.Errorf("`audio_bitrate` do not support change now.") + } + + if d.HasChange("vcodec") { + if v, ok := d.GetOk("vcodec"); ok { + request.Vcodec = helper.String(v.(string)) + } + } + + if d.HasChange("description") { + if v, ok := d.GetOk("description"); ok { + request.Description = helper.String(v.(string)) + } + } + + if d.HasChange("need_video") { + if v, ok := d.GetOk("need_video"); ok { + request.NeedVideo = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("width") { + if v, ok := d.GetOk("width"); ok { + request.Width = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("need_audio") { + if v, ok := d.GetOk("need_audio"); ok { + request.NeedAudio = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("height") { + if v, ok := d.GetOk("height"); ok { + request.Height = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("fps") { + if v, ok := d.GetOk("fps"); ok { + request.Fps = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("gop") { + if v, ok := d.GetOk("gop"); ok { + request.Gop = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("rotate") { + if v, ok := d.GetOk("rotate"); ok { + request.Rotate = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("profile") { + if v, ok := d.GetOk("profile"); ok { + request.Profile = helper.String(v.(string)) + } + } + + if d.HasChange("bitrate_to_orig") { + if v, ok := d.GetOk("bitrate_to_orig"); ok { + request.BitrateToOrig = helper.IntInt64(v.(int)) + } + + } + + if d.HasChange("height_to_orig") { + if v, ok := d.GetOk("height_to_orig"); ok { + request.HeightToOrig = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("fps_to_orig") { + if v, ok := d.GetOk("fps_to_orig"); ok { + request.FpsToOrig = helper.IntInt64(v.(int)) + } + } + + if d.HasChange("ai_trans_code") { + return fmt.Errorf("`ai_trans_code` do not support change now.") + } + + if d.HasChange("adapt_bitrate_percent") { + if v, ok := d.GetOk("adapt_bitrate_percent"); ok { + request.AdaptBitratePercent = helper.Float64(v.(float64)) + } + } + + if d.HasChange("short_edge_as_height") { + if v, ok := d.GetOk("short_edge_as_height"); ok { + request.ShortEdgeAsHeight = helper.IntInt64(v.(int)) + } + + } + + if d.HasChange("d_r_m_type") { + if v, ok := d.GetOk("d_r_m_type"); ok { + request.DRMType = helper.String(v.(string)) + } + + } + + if d.HasChange("d_r_m_tracks") { + if v, ok := d.GetOk("d_r_m_tracks"); ok { + request.DRMTracks = helper.String(v.(string)) + } + + } + + err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().ModifyLiveTranscodeTemplate(request) + if e != nil { + return retryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create css liveTranscodeTemplate failed, reason:%+v", logId, err) + return err + } + + return resourceTencentCloudCssLiveTranscodeTemplateRead(d, meta) +} + +func resourceTencentCloudCssLiveTranscodeTemplateDelete(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_live_transcode_template.delete")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + templateId := d.Id() + + if err := service.DeleteCssLiveTranscodeTemplateById(ctx, helper.Int64(helper.StrToInt64(templateId))); err != nil { + return err + } + + return nil +} diff --git a/tencentcloud/resource_tc_css_live_transcode_template_test.go b/tencentcloud/resource_tc_css_live_transcode_template_test.go new file mode 100644 index 0000000000..d472efb194 --- /dev/null +++ b/tencentcloud/resource_tc_css_live_transcode_template_test.go @@ -0,0 +1,58 @@ +package tencentcloud + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +func TestAccTencentCloudCSSLiveTranscodeTemplate_basic(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCssLiveTranscodeTemplate, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_template.live_transcode_template", "id"), + ), + }, + { + ResourceName: "tencentcloud_css_live_transcode_template.liveTranscodeTemplate", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +const testAccCssLiveTranscodeTemplate = ` + +resource "tencentcloud_css_live_transcode_template" "live_transcode_template" { + template_name = "" + video_bitrate = "" + acodec = "" + audio_bitrate = "" + vcodec = "" + description = "" + need_video = "" + width = "" + need_audio = "" + height = "" + fps = "" + gop = "" + rotate = "" + profile = "" + bitrate_to_orig = "" + height_to_orig = "" + fps_to_orig = "" + ai_trans_code = "" + adapt_bitrate_percent = "" + short_edge_as_height = "" + d_r_m_type = "" + d_r_m_tracks = "" +} + +` diff --git a/tencentcloud/resource_tc_css_pull_stream_task.go b/tencentcloud/resource_tc_css_pull_stream_task.go index 70815b4a6d..a7ade37fb6 100644 --- a/tencentcloud/resource_tc_css_pull_stream_task.go +++ b/tencentcloud/resource_tc_css_pull_stream_task.go @@ -8,7 +8,7 @@ resource "tencentcloud_css_pull_stream_task" "pull_stream_task" { source_type = "PullLivePushLive" source_urls = "" domain_name = "" - app_name = "" + app_name = "live" stream_name = "" start_time = "" end_time = "" @@ -426,17 +426,18 @@ func resourceTencentCloudCssPullStreamTaskRead(d *schema.ResourceData, meta inte taskId := d.Id() - pullStreamTask, err := service.DescribeCssPullStreamTask(ctx, taskId) + result, err := service.DescribeCssPullStreamTask(ctx, taskId) if err != nil { return err } - if pullStreamTask == nil { + if result == nil || len(result) < 1 { d.SetId("") return fmt.Errorf("resource `pullStreamTask` %s does not exist", taskId) } + pullStreamTask := result[0] if pullStreamTask.SourceType != nil { _ = d.Set("source_type", pullStreamTask.SourceType) } diff --git a/tencentcloud/resource_tc_css_pull_stream_task_test.go b/tencentcloud/resource_tc_css_pull_stream_task_test.go index e6031b13c8..72866e7676 100644 --- a/tencentcloud/resource_tc_css_pull_stream_task_test.go +++ b/tencentcloud/resource_tc_css_pull_stream_task_test.go @@ -1,22 +1,87 @@ package tencentcloud import ( + "context" + "fmt" + "strings" "testing" + "time" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) -func TestAccTencentCloudCssPullStreamTask_basic(t *testing.T) { +func init() { + resource.AddTestSweepers("tencentcloud_css_pull_stream_task", &resource.Sweeper{ + Name: "tencentcloud_css_pull_stream_task", + F: testSweepCSSPullStreamTask, + }) +} + +// go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_css_pull_stream_task +func testSweepCSSPullStreamTask(r string) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + cli, _ := sharedClientForRegion(r) + cssService := CssService{client: cli.(*TencentCloudClient).apiV3Conn} + + info, err := cssService.DescribeCssPullStreamTask(ctx, "") + if err != nil { + return err + } + if info == nil { + return fmt.Errorf("instance not exists.") + } + + for _, v := range info { + delName :=*v.StreamName + delId:=*v.TaskId + + if strings.HasPrefix(delName, "test_") { + err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := cssService.DeleteCssPullStreamTaskById(ctx, delId) + if err != nil { + return retryError(err) + } + return nil + }) + if err != nil { + return fmt.Errorf("[ERROR] instance %s:%s failed! reason:[%s]", delName,delId, err.Error()) + } + } + } + return nil +} + +func TestAccTencentCloudCSSPullStreamTaskResource_basic(t *testing.T) { t.Parallel() + startTime := time.Now().Add(2*time.Hour).Format("2006-01-02T15:04:05+08:00") + endTime := time.Now().Add(4*time.Hour).Format("2006-01-02T15:04:05+08:00") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, + CheckDestroy: testAccCheckCssPullStreamTaskDestroy, Steps: []resource.TestStep{ { - Config: testAccCssPullStreamTask, + PreventDiskCleanup: false, + Config: fmt.Sprintf(testAccCssPullStreamTask, startTime, endTime), Check: resource.ComposeTestCheckFunc( + testAccCheckCssPullStreamTaskExists("tencentcloud_css_pull_stream_task.pull_stream_task"), resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "id"), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "app_name", "live"), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "stream_name", "test_stream_name"), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "domain_name", "177154.push.tlivecloud.com"), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "comment", "This is a e2e test case."), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "source_type", "PullLivePushLive"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "start_time"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "end_time"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "callback_events.#"), + + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "source_urls.#"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "create_by"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "push_args"), + ), }, { @@ -28,39 +93,65 @@ func TestAccTencentCloudCssPullStreamTask_basic(t *testing.T) { }) } +func testAccCheckCssPullStreamTaskDestroy(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + cssService := CssService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + for _, rs := range s.RootModule().Resources { + if rs.Type != "tencentcloud_css_pull_stream_task" { + continue + } + + tasks, err := cssService.DescribeCssPullStreamTask(ctx, rs.Primary.ID) + if err != nil { + return err + } + + if len(tasks) > 0 { + return fmt.Errorf("css pull stream task still exist, taskId: %v", rs.Primary.ID) + } + } + return nil +} + +func testAccCheckCssPullStreamTaskExists(re string) resource.TestCheckFunc { + return func(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + rs, ok := s.RootModule().Resources[re] + if !ok { + return fmt.Errorf("css pull stream task %s is not found", re) + } + if rs.Primary.ID == "" { + return fmt.Errorf("css pull stream task id is not set") + } + + cssService := CssService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + tasks, err := cssService.DescribeCssPullStreamTask(ctx, rs.Primary.ID) + if err != nil { + return err + } + + if len(tasks) == 0 { + return fmt.Errorf("css pull stream task not found, taskId: %v", rs.Primary.ID) + } + return nil + } +} + const testAccCssPullStreamTask = ` resource "tencentcloud_css_pull_stream_task" "pull_stream_task" { source_type = "PullLivePushLive" - source_urls = "" - domain_name = "" - app_name = "" - stream_name = "" - start_time = "" - end_time = "" - operator = "" - push_args = "" - callback_events = "" - vod_loop_times = "" - vod_refresh_type = "" - callback_url = "" - extra_cmd = "" - comment = "" - to_url = "" - backup_source_type = "" - backup_source_url = "" - watermark_list { - picture_url = "" - x_position = "" - y_position = "" - width = "" - height = "" - location = "" - - } - status = "" - file_index = "" - offset_time = "" - } - + source_urls = ["rtmp://5000.liveplay.myqcloud.com/live/stream1"] + domain_name = "177154.push.tlivecloud.com" + app_name = "live" + stream_name = "test_stream_name" + start_time = "%s" + end_time = "%s" + operator = "tf_admin" + comment = "This is a e2e test case." +} ` diff --git a/tencentcloud/resource_tc_css_watermark_rule.go b/tencentcloud/resource_tc_css_watermark_rule.go deleted file mode 100644 index 9c79317b13..0000000000 --- a/tencentcloud/resource_tc_css_watermark_rule.go +++ /dev/null @@ -1,217 +0,0 @@ -/* -Provides a resource to create a css watermark_rule_attachment - -Example Usage - -```hcl -resource "tencentcloud_css_watermark_rule_attachment" "watermark_rule_attachment" { - domain_name = "" - app_name = "" - stream_name = "" - watermark_id = "" - } - -``` -Import - -css watermark_rule_attachment can be imported using the id, e.g. -``` -$ terraform import tencentcloud_css_watermark_rule_attachment.watermark_rule_attachment watermarkRuleAttachment_id -``` -*/ -package tencentcloud - -import ( - "context" - "fmt" - "log" - "strings" - - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" - "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" -) - -func resourceTencentCloudCssWatermarkRuleAttachment() *schema.Resource { - return &schema.Resource{ - Read: resourceTencentCloudCssWatermarkRuleAttachmentRead, - Create: resourceTencentCloudCssWatermarkRuleAttachmentCreate, - Delete: resourceTencentCloudCssWatermarkRuleAttachmentDelete, - Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, - }, - Schema: map[string]*schema.Schema{ - "domain_name": { - Type: schema.TypeString, - Required: true, - Description: "rule domain name.", - }, - - "app_name": { - Type: schema.TypeString, - Required: true, - Description: "rule app name.", - }, - - "stream_name": { - Type: schema.TypeString, - Required: true, - Description: "rule stream name.", - }, - - "watermark_id": { - Type: schema.TypeInt, - Required: true, - Description: "watermark id created by AddLiveWatermark.", - }, - - "create_time": { - Type: schema.TypeInt, - Computed: true, - Description: "create time.", - }, - - "update_time": { - Type: schema.TypeString, - Computed: true, - Description: "update time.", - }, - }, - } -} - -func resourceTencentCloudCssWatermarkRuleAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.create")() - defer inconsistentCheck(d, meta)() - - logId := getLogId(contextNil) - - var ( - request = css.NewCreateLiveWatermarkRuleRequest() - // response *css.CreateLiveWatermarkRuleResponse - domainName string - appName string - streamName string - watermarkId string - ) - - if v, ok := d.GetOk("domain_name"); ok { - domainName = v.(string) - request.DomainName = helper.String(v.(string)) - } - - if v, ok := d.GetOk("app_name"); ok { - appName = v.(string) - request.AppName = helper.String(v.(string)) - } - - if v, ok := d.GetOk("stream_name"); ok { - streamName = v.(string) - request.StreamName = helper.String(v.(string)) - } - - if v, ok := d.GetOk("watermark_id"); ok { - watermarkId = v.(string) - request.TemplateId = helper.IntInt64(v.(int)) - } - - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().CreateLiveWatermarkRule(request) - if e != nil { - return retryError(e) - } else { - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", - logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) - } - return nil - }) - - if err != nil { - log.Printf("[CRITAL]%s create css watermarkRuleAttachment failed, reason:%+v", logId, err) - return err - } - - d.SetId(domainName + FILED_SP + appName + FILED_SP + streamName + FILED_SP + watermarkId) - return resourceTencentCloudCssWatermarkRuleAttachmentRead(d, meta) -} - -func resourceTencentCloudCssWatermarkRuleAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.read")() - defer inconsistentCheck(d, meta)() - - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - - service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} - - idSplit := strings.Split(d.Id(), FILED_SP) - if len(idSplit) != 4 { - return fmt.Errorf("id is broken,%s", d.Id()) - } - domainName := idSplit[0] - appName := idSplit[1] - streamName := idSplit[2] - watermarkId := idSplit[3] - - watermarkRuleAttachment, err := service.DescribeCssWatermarkRuleAttachment(ctx, domainName, appName, streamName, watermarkId) - - if err != nil { - return err - } - - if watermarkRuleAttachment == nil { - d.SetId("") - return fmt.Errorf("resource `watermarkRuleAttachment` %s does not exist", d.Id()) - } - - if watermarkRuleAttachment.DomainName != nil { - _ = d.Set("domain_name", watermarkRuleAttachment.DomainName) - } - - if watermarkRuleAttachment.AppName != nil { - _ = d.Set("app_name", watermarkRuleAttachment.AppName) - } - - if watermarkRuleAttachment.StreamName != nil { - _ = d.Set("stream_name", watermarkRuleAttachment.StreamName) - } - - if watermarkRuleAttachment.TemplateId != nil { - _ = d.Set("watermark_id", watermarkRuleAttachment.TemplateId) - } - - if watermarkRuleAttachment.CreateTime != nil { - _ = d.Set("create_time", watermarkRuleAttachment.CreateTime) - } - - if watermarkRuleAttachment.UpdateTime != nil { - _ = d.Set("update_time", watermarkRuleAttachment.UpdateTime) - } - - return nil -} - -func resourceTencentCloudCssWatermarkRuleAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.delete")() - defer inconsistentCheck(d, meta)() - - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - - service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} - - idSplit := strings.Split(d.Id(), FILED_SP) - if len(idSplit) != 4 { - return fmt.Errorf("id is broken,%s", d.Id()) - } - domainName := idSplit[0] - appName := idSplit[1] - streamName := idSplit[2] - - if err := service.DetachCssWatermarkRuleAttachment(ctx, domainName, appName, streamName); err != nil { - return err - } - - return nil -} diff --git a/tencentcloud/resource_tc_css_watermark_rule_test.go b/tencentcloud/resource_tc_css_watermark_rule_test.go deleted file mode 100644 index 00dbeed632..0000000000 --- a/tencentcloud/resource_tc_css_watermark_rule_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package tencentcloud - -import ( - "testing" - - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" -) - -func TestAccTencentCloudCssWatermarkRule_basic(t *testing.T) { - t.Parallel() - - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccCssWatermarkRule, - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet("tencentcloud_css_watermark_rule.watermark_rule", "id"), - ), - }, - { - ResourceName: "tencentcloud_css_watermark_rule.watermarkRule", - ImportState: true, - ImportStateVerify: true, - }, - }, - }) -} - -const testAccCssWatermarkRule = ` - -resource "tencentcloud_css_watermark_rule" "watermark_rule" { - domain_name = "" - app_name = "" - stream_name = "" - watermark_id = "" - } - -` diff --git a/tencentcloud/service_tencentcloud_css.go b/tencentcloud/service_tencentcloud_css.go index da3bb61eaf..2a7e2fe06c 100644 --- a/tencentcloud/service_tencentcloud_css.go +++ b/tencentcloud/service_tencentcloud_css.go @@ -26,7 +26,7 @@ func (me *CssService) DescribeCssWatermark(ctx context.Context, watermarkId stri logId, "query object", request.ToJsonString(), errRet.Error()) } }() - + request.WatermarkId = helper.Int64Uint64(helper.StrToInt64(watermarkId)) response, err := me.client.UseCssClient().DescribeLiveWatermark(request) @@ -109,9 +109,9 @@ func (me *CssService) DetachCssWatermarkRuleAttachment(ctx context.Context, doma request := css.NewDeleteLiveWatermarkRuleRequest() - request.DomainName = &domainName - request.AppName = &appName - request.StreamName = &streamName + request.DomainName = helper.String(domainName) + request.AppName = helper.String(appName) + request.StreamName = helper.String(streamName) defer func() { if errRet != nil { @@ -132,7 +132,7 @@ func (me *CssService) DetachCssWatermarkRuleAttachment(ctx context.Context, doma return } -func (me *CssService) DescribeCssPullStreamTask(ctx context.Context, taskId string) (pullStreamTask *css.PullStreamTaskInfo, errRet error) { +func (me *CssService) DescribeCssPullStreamTask(ctx context.Context, taskId string) (tasks []*css.PullStreamTaskInfo, errRet error) { var ( logId = getLogId(ctx) request = css.NewDescribeLivePullStreamTasksRequest() @@ -144,7 +144,10 @@ func (me *CssService) DescribeCssPullStreamTask(ctx context.Context, taskId stri logId, "query object", request.ToJsonString(), errRet.Error()) } }() - request.TaskId = &taskId + + if taskId != "" { + request.TaskId = &taskId + } response, err := me.client.UseCssClient().DescribeLivePullStreamTasks(request) if err != nil { @@ -155,10 +158,10 @@ func (me *CssService) DescribeCssPullStreamTask(ctx context.Context, taskId stri } log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) - if len(response.Response.TaskInfos) < 1 { + if response.Response.TaskInfos != nil || len(response.Response.TaskInfos) < 1 { return } - pullStreamTask = response.Response.TaskInfos[0] + tasks = response.Response.TaskInfos return } @@ -187,3 +190,154 @@ func (me *CssService) DeleteCssPullStreamTaskById(ctx context.Context, taskId st return } + +func (me *CssService) DescribeCssLiveTranscodeTemplate(ctx context.Context, templateId *int64) (liveTranscodeTemplate *css.TemplateInfo, errRet error) { + var ( + logId = getLogId(ctx) + request = css.NewDescribeLiveTranscodeTemplateRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.TemplateId = templateId + + response, err := me.client.UseCssClient().DescribeLiveTranscodeTemplate(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response.Response.Template == nil { + return + } + liveTranscodeTemplate = response.Response.Template + return +} + +func (me *CssService) DescribeCssLiveTranscodeTemplates(ctx context.Context) (temps []*css.TemplateInfo, errRet error) { + var ( + logId = getLogId(ctx) + request = css.NewDescribeLiveTranscodeTemplatesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + response, err := me.client.UseCssClient().DescribeLiveTranscodeTemplates(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response.Response.Templates == nil || len(response.Response.Templates) < 1 { + return + } + temps = response.Response.Templates + return +} + +func (me *CssService) DeleteCssLiveTranscodeTemplateById(ctx context.Context, templateId *int64) (errRet error) { + logId := getLogId(ctx) + + request := css.NewDeleteLiveTranscodeTemplateRequest() + + request.TemplateId = templateId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseCssClient().DeleteLiveTranscodeTemplate(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *CssService) DescribeCssLiveTranscodeRuleAttachment(ctx context.Context, domainName, templateId *string) (liveTranscodeRuleAttachment *css.RuleInfo, errRet error) { + var ( + logId = getLogId(ctx) + request = css.NewDescribeLiveTranscodeRulesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + if domainName != nil { + request.DomainNames = []*string{domainName} + } + + if templateId != nil { + request.TemplateIds = []*int64{helper.Int64(helper.StrToInt64(*templateId))} + } + + response, err := me.client.UseCssClient().DescribeLiveTranscodeRules(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if len(response.Response.Rules) < 1 { + return + } + liveTranscodeRuleAttachment = response.Response.Rules[0] + return +} + +func (me *CssService) DeleteCssLiveTranscodeRuleAttachmentById(ctx context.Context, domainName, appName, streamName, templateId *string) (errRet error) { + logId := getLogId(ctx) + + request := css.NewDeleteLiveTranscodeRuleRequest() + + request.DomainName = domainName + request.AppName = appName + request.StreamName = streamName + request.TemplateId = helper.Int64(helper.StrToInt64(*templateId)) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseCssClient().DeleteLiveTranscodeRule(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} From c4e54d34863fc36ba23c6e52a1d1c5cafa024d5f Mon Sep 17 00:00:00 2001 From: nickyinluo Date: Wed, 16 Nov 2022 23:24:58 +0800 Subject: [PATCH 4/7] pull stream passed e2e case --- tencentcloud/basic_test.go | 13 ++ .../resource_tc_css_pull_stream_task.go | 33 ++- .../resource_tc_css_pull_stream_task_test.go | 101 +++++--- ...source_tc_css_watermark_rule_attachment.go | 221 ++++++++++++++++++ ...e_tc_css_watermark_rule_attachment_test.go | 40 ++++ tencentcloud/service_tencentcloud_css.go | 41 ++-- 6 files changed, 379 insertions(+), 70 deletions(-) create mode 100644 tencentcloud/resource_tc_css_watermark_rule_attachment.go create mode 100644 tencentcloud/resource_tc_css_watermark_rule_attachment_test.go diff --git a/tencentcloud/basic_test.go b/tencentcloud/basic_test.go index d9831f27ae..2b3cb590de 100644 --- a/tencentcloud/basic_test.go +++ b/tencentcloud/basic_test.go @@ -795,3 +795,16 @@ const ( ) // End of PTS + +// CSS +const ( + defaultCSSLiveType = "PullLivePushLive" + defaultCSSVodType = "PullVodPushLive" + defaultCSSDomainName = "177154.push.tlivecloud.com" + defaultCSSStreamName = "test_stream_name" + defaultCSSAppName = "live" + defaultCSSOperator = "tf_admin" + +) + +// End of CSS diff --git a/tencentcloud/resource_tc_css_pull_stream_task.go b/tencentcloud/resource_tc_css_pull_stream_task.go index a7ade37fb6..b5d2ec5048 100644 --- a/tencentcloud/resource_tc_css_pull_stream_task.go +++ b/tencentcloud/resource_tc_css_pull_stream_task.go @@ -115,7 +115,7 @@ func resourceTencentCloudCssPullStreamTask() *schema.Resource { "operator": { Type: schema.TypeString, - Required: true, + Optional: true, Description: "desc operator user name.", }, @@ -131,18 +131,21 @@ func resourceTencentCloudCssPullStreamTask() *schema.Resource { Type: schema.TypeString, }, Optional: true, + Computed: true, Description: "defind the callback event you need, null for all. TaskStart, TaskExit, VodSourceFileStart, VodSourceFileFinish, ResetTaskConfig, PullFileUnstable, PushStreamUnstable, PullFileFailed, PushStreamFailed, FileEndEarly.", }, "vod_loop_times": { Type: schema.TypeInt, Optional: true, + Computed: true, Description: "loop time for vod.", }, "vod_refresh_type": { Type: schema.TypeString, Optional: true, + Computed: true, Description: "vod refresh method. &#39;ImmediateNewSource&#39;: switch to new source at once, &#39;ContinueBreakPoint&#39;: switch to new source while old source finish.", }, @@ -225,6 +228,7 @@ func resourceTencentCloudCssPullStreamTask() *schema.Resource { "status": { Type: schema.TypeString, Optional: true, + Computed: true, Description: "task enable or disable.", }, @@ -405,7 +409,7 @@ func resourceTencentCloudCssPullStreamTaskCreate(d *schema.ResourceData, meta in }) if err != nil { - log.Printf("[CRITAL]%s create css pullStreamTask failed, reason:%+v", logId, err) + log.Printf("[CRITICAL]%s create css pullStreamTask failed, reason:%+v", logId, err) return err } @@ -431,7 +435,7 @@ func resourceTencentCloudCssPullStreamTaskRead(d *schema.ResourceData, meta inte if err != nil { return err } - + log.Printf("[CRITICAL]##########%v ", len(result)) if result == nil || len(result) < 1 { d.SetId("") return fmt.Errorf("resource `pullStreamTask` %s does not exist", taskId) @@ -587,9 +591,7 @@ func resourceTencentCloudCssPullStreamTaskUpdate(d *schema.ResourceData, meta in request.TaskId = &taskId if d.HasChange("source_type") { - return fmt.Errorf("`source_type` do not support change now.") - } if d.HasChange("source_urls") { @@ -633,9 +635,7 @@ func resourceTencentCloudCssPullStreamTaskUpdate(d *schema.ResourceData, meta in } if d.HasChange("push_args") { - return fmt.Errorf("`push_args` do not support change now.") - } if d.HasChange("callback_events") { @@ -646,61 +646,50 @@ func resourceTencentCloudCssPullStreamTaskUpdate(d *schema.ResourceData, meta in request.CallbackEvents = append(request.CallbackEvents, &callbackEvents) } } - } if d.HasChange("vod_loop_times") { if v, ok := d.GetOk("vod_loop_times"); ok { request.VodLoopTimes = helper.IntInt64(v.(int)) } - } if d.HasChange("vod_refresh_type") { if v, ok := d.GetOk("vod_refresh_type"); ok { request.VodRefreshType = helper.String(v.(string)) } - } if d.HasChange("callback_url") { if v, ok := d.GetOk("callback_url"); ok { request.CallbackUrl = helper.String(v.(string)) } - } if d.HasChange("extra_cmd") { - return fmt.Errorf("`extra_cmd` do not support change now.") - } if d.HasChange("comment") { if v, ok := d.GetOk("comment"); ok { request.Comment = helper.String(v.(string)) } - } if d.HasChange("to_url") { - return fmt.Errorf("`to_url` do not support change now.") - } if d.HasChange("backup_source_type") { if v, ok := d.GetOk("backup_source_type"); ok { request.BackupSourceType = helper.String(v.(string)) } - } if d.HasChange("backup_source_url") { if v, ok := d.GetOk("backup_source_url"); ok { request.BackupSourceUrl = helper.String(v.(string)) } - } if d.HasChange("watermark_list") { @@ -761,7 +750,7 @@ func resourceTencentCloudCssPullStreamTaskUpdate(d *schema.ResourceData, meta in }) if err != nil { - log.Printf("[CRITAL]%s create css pullStreamTask failed, reason:%+v", logId, err) + log.Printf("[CRITICAL]%s create css pullStreamTask failed, reason:%+v", logId, err) return err } @@ -772,14 +761,18 @@ func resourceTencentCloudCssPullStreamTaskDelete(d *schema.ResourceData, meta in defer logElapsed("resource.tencentcloud_css_pull_stream_task.delete")() defer inconsistentCheck(d, meta)() + var operator *string logId := getLogId(contextNil) ctx := context.WithValue(context.TODO(), logIdKey, logId) service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} taskId := d.Id() + if v, ok := d.GetOk("operator"); ok { + operator = helper.String(v.(string)) + } - if err := service.DeleteCssPullStreamTaskById(ctx, taskId); err != nil { + if err := service.DeleteCssPullStreamTaskById(ctx, helper.String(taskId), operator); err != nil { return err } diff --git a/tencentcloud/resource_tc_css_pull_stream_task_test.go b/tencentcloud/resource_tc_css_pull_stream_task_test.go index 72866e7676..5b62c62ec8 100644 --- a/tencentcloud/resource_tc_css_pull_stream_task_test.go +++ b/tencentcloud/resource_tc_css_pull_stream_task_test.go @@ -9,6 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) func init() { @@ -34,19 +35,19 @@ func testSweepCSSPullStreamTask(r string) error { } for _, v := range info { - delName :=*v.StreamName - delId:=*v.TaskId + delName := v.StreamName + delId := v.TaskId - if strings.HasPrefix(delName, "test_") { + if strings.HasPrefix(*delName, "test_") { err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - err := cssService.DeleteCssPullStreamTaskById(ctx, delId) + err := cssService.DeleteCssPullStreamTaskById(ctx, delId, helper.String(defaultCSSOperator)) if err != nil { return retryError(err) } return nil }) if err != nil { - return fmt.Errorf("[ERROR] instance %s:%s failed! reason:[%s]", delName,delId, err.Error()) + return fmt.Errorf("[ERROR] instance %s:%s failed! reason:[%s]", *delName, *delId, err.Error()) } } } @@ -55,39 +56,64 @@ func testSweepCSSPullStreamTask(r string) error { func TestAccTencentCloudCSSPullStreamTaskResource_basic(t *testing.T) { t.Parallel() - startTime := time.Now().Add(2*time.Hour).Format("2006-01-02T15:04:05+08:00") - endTime := time.Now().Add(4*time.Hour).Format("2006-01-02T15:04:05+08:00") + baseTime := time.Now().UTC().Add(10 * time.Hour) + startTime := baseTime.Format(time.RFC3339) + endTime := baseTime.Add(1 * time.Hour).Format(time.RFC3339) + startTimeNew := baseTime.Add(30 * time.Minute).Format(time.RFC3339) + endTimeNew := baseTime.Add(2 * time.Hour).Format(time.RFC3339) + liveUrl := "rtmp://5000.liveplay.myqcloud.com/live/stream1" + // vodUrl := "https://main.qcloudimg.com/video/TVP_HOME.mp4" resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, CheckDestroy: testAccCheckCssPullStreamTaskDestroy, Steps: []resource.TestStep{ { - PreventDiskCleanup: false, - Config: fmt.Sprintf(testAccCssPullStreamTask, startTime, endTime), - Check: resource.ComposeTestCheckFunc( + // PreventDiskCleanup: false, + Config: fmt.Sprintf(testAccCssPullStreamTask, defaultCSSLiveType, liveUrl, defaultCSSDomainName, defaultCSSAppName, defaultCSSStreamName, startTime, endTime, defaultCSSOperator), + Check: resource.ComposeAggregateTestCheckFunc( testAccCheckCssPullStreamTaskExists("tencentcloud_css_pull_stream_task.pull_stream_task"), resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "id"), - resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "app_name", "live"), - resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "stream_name", "test_stream_name"), - resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "domain_name", "177154.push.tlivecloud.com"), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "app_name", defaultCSSAppName), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "stream_name", defaultCSSStreamName), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "domain_name", defaultCSSDomainName), resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "comment", "This is a e2e test case."), - resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "source_type", "PullLivePushLive"), - resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "start_time"), - resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "end_time"), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "source_type", defaultCSSLiveType), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "start_time", startTime), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "end_time", endTime), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "create_time"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "update_time"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "callback_events.#"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "source_urls.#"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "create_by"), + ), + }, + { + // update + Config: fmt.Sprintf(testAccCssPullStreamTask_update, defaultCSSLiveType, liveUrl, defaultCSSDomainName, defaultCSSAppName, defaultCSSStreamName, startTimeNew, endTimeNew, defaultCSSOperator), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCssPullStreamTaskExists("tencentcloud_css_pull_stream_task.pull_stream_task"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "id"), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "app_name", defaultCSSAppName), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "stream_name", defaultCSSStreamName), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "domain_name", defaultCSSDomainName), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "comment", "This is a e2e test case_changed."), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "source_type", defaultCSSLiveType), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "start_time", startTimeNew), + resource.TestCheckResourceAttr("tencentcloud_css_pull_stream_task.pull_stream_task", "end_time", endTimeNew), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "create_time"), + resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "update_time"), resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "callback_events.#"), - resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "source_urls.#"), resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "create_by"), - resource.TestCheckResourceAttrSet("tencentcloud_css_pull_stream_task.pull_stream_task", "push_args"), - ), }, { - ResourceName: "tencentcloud_css_pull_stream_task.pullStreamTask", - ImportState: true, - ImportStateVerify: true, + ResourceName: "tencentcloud_css_pull_stream_task.pull_stream_task", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"operator"}, }, }, }) @@ -144,14 +170,29 @@ func testAccCheckCssPullStreamTaskExists(re string) resource.TestCheckFunc { const testAccCssPullStreamTask = ` resource "tencentcloud_css_pull_stream_task" "pull_stream_task" { - source_type = "PullLivePushLive" - source_urls = ["rtmp://5000.liveplay.myqcloud.com/live/stream1"] - domain_name = "177154.push.tlivecloud.com" - app_name = "live" - stream_name = "test_stream_name" + source_type = "%s" + source_urls = ["%s"] + domain_name = "%s" + app_name = "%s" + stream_name = "%s" start_time = "%s" end_time = "%s" - operator = "tf_admin" + operator = "%s" comment = "This is a e2e test case." } ` + +const testAccCssPullStreamTask_update = ` + +resource "tencentcloud_css_pull_stream_task" "pull_stream_task" { + source_type = "%s" + source_urls = ["%s"] + domain_name = "%s" + app_name = "%s" + stream_name = "%s" + start_time = "%s" + end_time = "%s" + operator = "%s_changed" + comment = "This is a e2e test case_changed." +} +` diff --git a/tencentcloud/resource_tc_css_watermark_rule_attachment.go b/tencentcloud/resource_tc_css_watermark_rule_attachment.go new file mode 100644 index 0000000000..4c8c8841de --- /dev/null +++ b/tencentcloud/resource_tc_css_watermark_rule_attachment.go @@ -0,0 +1,221 @@ +/* +Provides a resource to create a css watermark_rule_attachment + +Example Usage + +```hcl +resource "tencentcloud_css_watermark_rule_attachment" "watermark_rule_attachment" { + domain_name = "" + app_name = "" + stream_name = "" + watermark_id = "" + } + +``` +Import + +css watermark_rule_attachment can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_watermark_rule_attachment.watermark_rule_attachment watermarkRuleAttachment_id +``` +*/ +package tencentcloud + +import ( + "context" + "fmt" + "log" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func resourceTencentCloudCssWatermarkRuleAttachment() *schema.Resource { + return &schema.Resource{ + Read: resourceTencentCloudCssWatermarkRuleAttachmentRead, + Create: resourceTencentCloudCssWatermarkRuleAttachmentCreate, + Delete: resourceTencentCloudCssWatermarkRuleAttachmentDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "domain_name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "rule domain name.", + }, + + "app_name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "rule app name.", + }, + + "stream_name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "rule stream name.", + }, + + "watermark_id": { + Type: schema.TypeInt, + Required: true, + ForceNew: true, + Description: "watermark id created by AddLiveWatermark.", + }, + + "create_time": { + Type: schema.TypeInt, + Computed: true, + Description: "create time.", + }, + + "update_time": { + Type: schema.TypeString, + Computed: true, + Description: "update time.", + }, + }, + } +} + +func resourceTencentCloudCssWatermarkRuleAttachmentCreate(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.create")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + + var ( + request = css.NewCreateLiveWatermarkRuleRequest() + // response *css.CreateLiveWatermarkRuleResponse + domainName string + appName string + streamName string + watermarkId string + ) + + if v, ok := d.GetOk("domain_name"); ok { + domainName = v.(string) + request.DomainName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("app_name"); ok { + appName = v.(string) + request.AppName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("stream_name"); ok { + streamName = v.(string) + request.StreamName = helper.String(v.(string)) + } + + if v, ok := d.GetOk("watermark_id"); ok { + watermarkId = v.(string) + request.TemplateId = helper.IntInt64(v.(int)) + } + + err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().CreateLiveWatermarkRule(request) + if e != nil { + return retryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create css watermarkRuleAttachment failed, reason:%+v", logId, err) + return err + } + + d.SetId(domainName + FILED_SP + appName + FILED_SP + streamName + FILED_SP + watermarkId) + return resourceTencentCloudCssWatermarkRuleAttachmentRead(d, meta) +} + +func resourceTencentCloudCssWatermarkRuleAttachmentRead(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.read")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + idSplit := strings.Split(d.Id(), FILED_SP) + if len(idSplit) != 4 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + domainName := idSplit[0] + appName := idSplit[1] + streamName := idSplit[2] + watermarkId := idSplit[3] + + watermarkRuleAttachment, err := service.DescribeCssWatermarkRuleAttachment(ctx, domainName, appName, streamName, watermarkId) + + if err != nil { + return err + } + + if watermarkRuleAttachment == nil { + d.SetId("") + return fmt.Errorf("resource `watermarkRuleAttachment` %s does not exist", d.Id()) + } + + if watermarkRuleAttachment.DomainName != nil { + _ = d.Set("domain_name", watermarkRuleAttachment.DomainName) + } + + if watermarkRuleAttachment.AppName != nil { + _ = d.Set("app_name", watermarkRuleAttachment.AppName) + } + + if watermarkRuleAttachment.StreamName != nil { + _ = d.Set("stream_name", watermarkRuleAttachment.StreamName) + } + + if watermarkRuleAttachment.TemplateId != nil { + _ = d.Set("watermark_id", watermarkRuleAttachment.TemplateId) + } + + if watermarkRuleAttachment.CreateTime != nil { + _ = d.Set("create_time", watermarkRuleAttachment.CreateTime) + } + + if watermarkRuleAttachment.UpdateTime != nil { + _ = d.Set("update_time", watermarkRuleAttachment.UpdateTime) + } + + return nil +} + +func resourceTencentCloudCssWatermarkRuleAttachmentDelete(d *schema.ResourceData, meta interface{}) error { + defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.delete")() + defer inconsistentCheck(d, meta)() + + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} + + idSplit := strings.Split(d.Id(), FILED_SP) + if len(idSplit) != 4 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + domainName := idSplit[0] + appName := idSplit[1] + streamName := idSplit[2] + + if err := service.DetachCssWatermarkRuleAttachment(ctx, domainName, appName, streamName); err != nil { + return err + } + + return nil +} diff --git a/tencentcloud/resource_tc_css_watermark_rule_attachment_test.go b/tencentcloud/resource_tc_css_watermark_rule_attachment_test.go new file mode 100644 index 0000000000..00dbeed632 --- /dev/null +++ b/tencentcloud/resource_tc_css_watermark_rule_attachment_test.go @@ -0,0 +1,40 @@ +package tencentcloud + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +func TestAccTencentCloudCssWatermarkRule_basic(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCssWatermarkRule, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark_rule.watermark_rule", "id"), + ), + }, + { + ResourceName: "tencentcloud_css_watermark_rule.watermarkRule", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +const testAccCssWatermarkRule = ` + +resource "tencentcloud_css_watermark_rule" "watermark_rule" { + domain_name = "" + app_name = "" + stream_name = "" + watermark_id = "" + } + +` diff --git a/tencentcloud/service_tencentcloud_css.go b/tencentcloud/service_tencentcloud_css.go index 2a7e2fe06c..040fbe4e37 100644 --- a/tencentcloud/service_tencentcloud_css.go +++ b/tencentcloud/service_tencentcloud_css.go @@ -22,7 +22,7 @@ func (me *CssService) DescribeCssWatermark(ctx context.Context, watermarkId stri defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "query object", request.ToJsonString(), errRet.Error()) } }() @@ -31,7 +31,7 @@ func (me *CssService) DescribeCssWatermark(ctx context.Context, watermarkId stri response, err := me.client.UseCssClient().DescribeLiveWatermark(request) if err != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) errRet = err return @@ -54,7 +54,7 @@ func (me *CssService) DeleteCssWatermarkById(ctx context.Context, watermarkId st defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "delete object", request.ToJsonString(), errRet.Error()) } }() @@ -79,7 +79,7 @@ func (me *CssService) DescribeCssWatermarkRuleAttachment(ctx context.Context, do defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "query object", request.ToJsonString(), errRet.Error()) } }() @@ -90,7 +90,7 @@ func (me *CssService) DescribeCssWatermarkRuleAttachment(ctx context.Context, do response, err := me.client.UseCssClient().DescribeLiveWatermarkRules(request) if err != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) errRet = err return @@ -115,7 +115,7 @@ func (me *CssService) DetachCssWatermarkRuleAttachment(ctx context.Context, doma defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "delete object", request.ToJsonString(), errRet.Error()) } }() @@ -140,7 +140,7 @@ func (me *CssService) DescribeCssPullStreamTask(ctx context.Context, taskId stri defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "query object", request.ToJsonString(), errRet.Error()) } }() @@ -151,30 +151,31 @@ func (me *CssService) DescribeCssPullStreamTask(ctx context.Context, taskId stri response, err := me.client.UseCssClient().DescribeLivePullStreamTasks(request) if err != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) errRet = err return } log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) - if response.Response.TaskInfos != nil || len(response.Response.TaskInfos) < 1 { + if response.Response == nil || *response.Response.TotalNum < 1 { return } tasks = response.Response.TaskInfos return } -func (me *CssService) DeleteCssPullStreamTaskById(ctx context.Context, taskId string) (errRet error) { +func (me *CssService) DeleteCssPullStreamTaskById(ctx context.Context, taskId, operator *string) (errRet error) { logId := getLogId(ctx) request := css.NewDeleteLivePullStreamTaskRequest() - request.TaskId = &taskId + request.TaskId = taskId + request.Operator = operator defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "delete object", request.ToJsonString(), errRet.Error()) } }() @@ -199,7 +200,7 @@ func (me *CssService) DescribeCssLiveTranscodeTemplate(ctx context.Context, temp defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "query object", request.ToJsonString(), errRet.Error()) } }() @@ -207,7 +208,7 @@ func (me *CssService) DescribeCssLiveTranscodeTemplate(ctx context.Context, temp response, err := me.client.UseCssClient().DescribeLiveTranscodeTemplate(request) if err != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) errRet = err return @@ -229,14 +230,14 @@ func (me *CssService) DescribeCssLiveTranscodeTemplates(ctx context.Context) (te defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "query object", request.ToJsonString(), errRet.Error()) } }() response, err := me.client.UseCssClient().DescribeLiveTranscodeTemplates(request) if err != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) errRet = err return @@ -259,7 +260,7 @@ func (me *CssService) DeleteCssLiveTranscodeTemplateById(ctx context.Context, te defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "delete object", request.ToJsonString(), errRet.Error()) } }() @@ -284,7 +285,7 @@ func (me *CssService) DescribeCssLiveTranscodeRuleAttachment(ctx context.Context defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "query object", request.ToJsonString(), errRet.Error()) } }() @@ -299,7 +300,7 @@ func (me *CssService) DescribeCssLiveTranscodeRuleAttachment(ctx context.Context response, err := me.client.UseCssClient().DescribeLiveTranscodeRules(request) if err != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) errRet = err return @@ -325,7 +326,7 @@ func (me *CssService) DeleteCssLiveTranscodeRuleAttachmentById(ctx context.Conte defer func() { if errRet != nil { - log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, "delete object", request.ToJsonString(), errRet.Error()) } }() From 54fc223aa223d63dd246d46d8e3add98ab6b6254 Mon Sep 17 00:00:00 2001 From: nickyinluo Date: Thu, 17 Nov 2022 00:34:45 +0800 Subject: [PATCH 5/7] watermark passed e2e case --- tencentcloud/basic_test.go | 14 +- .../resource_tc_css_pull_stream_task_test.go | 4 +- tencentcloud/resource_tc_css_watermark.go | 12 +- .../resource_tc_css_watermark_test.go | 153 ++++++++++++++++-- tencentcloud/service_tencentcloud_css.go | 37 ++++- 5 files changed, 195 insertions(+), 25 deletions(-) diff --git a/tencentcloud/basic_test.go b/tencentcloud/basic_test.go index 2b3cb590de..98b503da07 100644 --- a/tencentcloud/basic_test.go +++ b/tencentcloud/basic_test.go @@ -798,13 +798,13 @@ const ( // CSS const ( - defaultCSSLiveType = "PullLivePushLive" - defaultCSSVodType = "PullVodPushLive" - defaultCSSDomainName = "177154.push.tlivecloud.com" - defaultCSSStreamName = "test_stream_name" - defaultCSSAppName = "live" - defaultCSSOperator = "tf_admin" - + defaultCSSLiveType = "PullLivePushLive" + defaultCSSVodType = "PullVodPushLive" + defaultCSSDomainName = "177154.push.tlivecloud.com" + defaultCSSStreamName = defaultCSSPrefix + "test_stream_name" + defaultCSSAppName = "live" + defaultCSSOperator = "tf_admin" + defaultCSSPrefix = "tf_css_" ) // End of CSS diff --git a/tencentcloud/resource_tc_css_pull_stream_task_test.go b/tencentcloud/resource_tc_css_pull_stream_task_test.go index 5b62c62ec8..d612c1f742 100644 --- a/tencentcloud/resource_tc_css_pull_stream_task_test.go +++ b/tencentcloud/resource_tc_css_pull_stream_task_test.go @@ -38,7 +38,7 @@ func testSweepCSSPullStreamTask(r string) error { delName := v.StreamName delId := v.TaskId - if strings.HasPrefix(*delName, "test_") { + if strings.HasPrefix(*delName, defaultCSSPrefix) { err := resource.Retry(readRetryTimeout, func() *resource.RetryError { err := cssService.DeleteCssPullStreamTaskById(ctx, delId, helper.String(defaultCSSOperator)) if err != nil { @@ -47,7 +47,7 @@ func testSweepCSSPullStreamTask(r string) error { return nil }) if err != nil { - return fmt.Errorf("[ERROR] instance %s:%s failed! reason:[%s]", *delName, *delId, err.Error()) + return fmt.Errorf("[ERROR] sweeper instance %s:%s failed! reason:[%s]", *delName, *delId, err.Error()) } } } diff --git a/tencentcloud/resource_tc_css_watermark.go b/tencentcloud/resource_tc_css_watermark.go index c00a5330b9..3f6a1532da 100644 --- a/tencentcloud/resource_tc_css_watermark.go +++ b/tencentcloud/resource_tc_css_watermark.go @@ -79,6 +79,12 @@ func resourceTencentCloudCssWatermark() *schema.Resource { Optional: true, Description: "height of the picture.", }, + + "status": { + Type: schema.TypeInt, + Computed: true, + Description: "status. 0: not used, 1: used.", + }, }, } } @@ -190,6 +196,10 @@ func resourceTencentCloudCssWatermarkRead(d *schema.ResourceData, meta interface _ = d.Set("height", watermark.Height) } + if watermark.Status != nil { + _ = d.Set("status", watermark.Status) + } + return nil } @@ -272,7 +282,7 @@ func resourceTencentCloudCssWatermarkDelete(d *schema.ResourceData, meta interfa watermarkId := d.Id() - if err := service.DeleteCssWatermarkById(ctx, watermarkId); err != nil { + if err := service.DeleteCssWatermarkById(ctx, helper.Int64(helper.StrToInt64(watermarkId))); err != nil { return err } diff --git a/tencentcloud/resource_tc_css_watermark_test.go b/tencentcloud/resource_tc_css_watermark_test.go index 5d65274c82..2f3f4e6dd5 100644 --- a/tencentcloud/resource_tc_css_watermark_test.go +++ b/tencentcloud/resource_tc_css_watermark_test.go @@ -1,22 +1,92 @@ package tencentcloud import ( + "context" + "fmt" + "regexp" + "strings" "testing" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) -func TestAccTencentCloudCssWatermark_basic(t *testing.T) { +func init() { + resource.AddTestSweepers("tencentcloud_css_watermark", &resource.Sweeper{ + Name: "tencentcloud_css_watermark", + F: testSweepCSSWatermarkTask, + }) +} + +// go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_css_watermark +func testSweepCSSWatermarkTask(r string) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + cli, _ := sharedClientForRegion(r) + cssService := CssService{client: cli.(*TencentCloudClient).apiV3Conn} + + marks, err := cssService.DescribeCssWatermarks(ctx) + if err != nil { + return err + } + if marks == nil { + return fmt.Errorf("watermark instance not exists.") + } + + for _, v := range marks { + delName := v.WatermarkName + delId := v.WatermarkId + + if strings.HasPrefix(*delName, defaultCSSPrefix) { + err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := cssService.DeleteCssWatermarkById(ctx, delId) + if err != nil { + return retryError(err) + } + return nil + }) + if err != nil { + return fmt.Errorf("[ERROR] sweeper watermark instance %s:%v failed! reason:[%s]", *delName, *delId, err.Error()) + } + } + } + return nil +} + +func TestAccTencentCloudCSSWatermarkResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckCssWatermarkDestroy, Steps: []resource.TestStep{ { - Config: testAccCssWatermark, - Check: resource.ComposeTestCheckFunc( + Config: fmt.Sprintf(testAccCssWatermark, defaultCSSPrefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCssWatermarkExists("tencentcloud_css_watermark.watermark"), resource.TestCheckResourceAttrSet("tencentcloud_css_watermark.watermark", "id"), + resource.TestMatchResourceAttr("tencentcloud_css_watermark.watermark", "picture_url", regexp.MustCompile("https://main.qcloudimg.com")), + resource.TestMatchResourceAttr("tencentcloud_css_watermark.watermark", "watermark_name", regexp.MustCompile(defaultCSSPrefix)), + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark.watermark", "status"), + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark.watermark", "x_position"), + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark.watermark", "y_position"), + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark.watermark", "width"), + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark.watermark", "height"), + ), + }, + { + Config: fmt.Sprintf(testAccCssWatermark_update, defaultCSSPrefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckCssWatermarkExists("tencentcloud_css_watermark.watermark"), + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark.watermark", "id"), + resource.TestMatchResourceAttr("tencentcloud_css_watermark.watermark", "picture_url", regexp.MustCompile("changed")), + resource.TestMatchResourceAttr("tencentcloud_css_watermark.watermark", "watermark_name", regexp.MustCompile("changed")), + resource.TestCheckResourceAttrSet("tencentcloud_css_watermark.watermark", "status"), + resource.TestCheckResourceAttr("tencentcloud_css_watermark.watermark", "x_position", "5"), + resource.TestCheckResourceAttr("tencentcloud_css_watermark.watermark", "y_position", "5"), + resource.TestCheckResourceAttr("tencentcloud_css_watermark.watermark", "width", "100"), + resource.TestCheckResourceAttr("tencentcloud_css_watermark.watermark", "height", "100"), ), }, { @@ -28,15 +98,76 @@ func TestAccTencentCloudCssWatermark_basic(t *testing.T) { }) } +func testAccCheckCssWatermarkDestroy(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + cssService := CssService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + for _, rs := range s.RootModule().Resources { + if rs.Type != "tencentcloud_css_watermark" { + continue + } + + watermark, err := cssService.DescribeCssWatermark(ctx, rs.Primary.ID) + if err != nil { + return nil + } + + if watermark != nil { + return fmt.Errorf("css watermark still exist, Id: %v", rs.Primary.ID) + } + } + return nil +} + +func testAccCheckCssWatermarkExists(re string) resource.TestCheckFunc { + return func(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + rs, ok := s.RootModule().Resources[re] + if !ok { + return fmt.Errorf("css watermark %s is not found", re) + } + if rs.Primary.ID == "" { + return fmt.Errorf("css watermark id is not set") + } + + cssService := CssService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + watermark, err := cssService.DescribeCssWatermark(ctx, rs.Primary.ID) + if err != nil { + return err + } + + if watermark == nil { + return fmt.Errorf("css watermark not found, Id: %v", rs.Primary.ID) + } + return nil + } +} + const testAccCssWatermark = ` resource "tencentcloud_css_watermark" "watermark" { - picture_url = "" - watermark_name = "" - x_position = "" - y_position = "" - width = "" - height = "" + picture_url = "https://main.qcloudimg.com/raw/c3e0cf113a5c5346b776ecbcfbdcfc72.svg" + watermark_name = "%swm" + x_position = 0 + y_position = 0 + width = 0 + height = 0 +} + +` + +const testAccCssWatermark_update = ` + +resource "tencentcloud_css_watermark" "watermark" { + picture_url = "https://main.qcloudimg.com/raw/changed.svg" + watermark_name = "%schanged" + x_position = 5 + y_position = 5 + width = 100 + height = 100 } ` diff --git a/tencentcloud/service_tencentcloud_css.go b/tencentcloud/service_tencentcloud_css.go index 040fbe4e37..51e2e7453e 100644 --- a/tencentcloud/service_tencentcloud_css.go +++ b/tencentcloud/service_tencentcloud_css.go @@ -45,12 +45,41 @@ func (me *CssService) DescribeCssWatermark(ctx context.Context, watermarkId stri return } -func (me *CssService) DeleteCssWatermarkById(ctx context.Context, watermarkId string) (errRet error) { +func (me *CssService) DescribeCssWatermarks(ctx context.Context) (marks []*css.WatermarkInfo, errRet error) { + var ( + logId = getLogId(ctx) + request = css.NewDescribeLiveWatermarksRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query objects", request.ToJsonString(), errRet.Error()) + } + }() + + response, err := me.client.UseCssClient().DescribeLiveWatermarks(request) + if err != nil { + log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response.Response == nil || *response.Response.TotalNum < 1{ + return + } + marks = response.Response.WatermarkList + return +} + +func (me *CssService) DeleteCssWatermarkById(ctx context.Context, watermarkId *int64) (errRet error) { logId := getLogId(ctx) request := css.NewDeleteLiveWatermarkRequest() - request.WatermarkId = helper.Int64(helper.StrToInt64(watermarkId)) + request.WatermarkId = watermarkId defer func() { if errRet != nil { @@ -231,7 +260,7 @@ func (me *CssService) DescribeCssLiveTranscodeTemplates(ctx context.Context) (te defer func() { if errRet != nil { log.Printf("[CRITICAL]%s api[%s] fail, request body [%s], reason[%s]\n", - logId, "query object", request.ToJsonString(), errRet.Error()) + logId, "query objects", request.ToJsonString(), errRet.Error()) } }() @@ -244,7 +273,7 @@ func (me *CssService) DescribeCssLiveTranscodeTemplates(ctx context.Context) (te } log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) - if response.Response.Templates == nil || len(response.Response.Templates) < 1 { + if response.Response == nil || len(response.Response.Templates) < 1 { return } temps = response.Response.Templates From cdc30a38c39024dcf78ae92d5f5f0652bec54b76 Mon Sep 17 00:00:00 2001 From: nickyinluo Date: Thu, 17 Nov 2022 10:43:05 +0800 Subject: [PATCH 6/7] 1.live temp passed e2e case 2.adjust helper --- tencentcloud/internal/helper/transform.go | 15 ++ ...resource_tc_css_live_transcode_template.go | 135 ++++++----- ...rce_tc_css_live_transcode_template_test.go | 215 ++++++++++++++++-- .../resource_tc_css_pull_stream_task.go | 41 +--- tencentcloud/resource_tc_css_watermark.go | 16 +- tencentcloud/service_tencentcloud_css.go | 4 +- 6 files changed, 290 insertions(+), 136 deletions(-) diff --git a/tencentcloud/internal/helper/transform.go b/tencentcloud/internal/helper/transform.go index 54a5d1a1c0..97cf12bc87 100644 --- a/tencentcloud/internal/helper/transform.go +++ b/tencentcloud/internal/helper/transform.go @@ -163,11 +163,21 @@ func Int64ToStr(s int64) (i string) { return } +func Int64ToStrPoint(s int64) *string { + i := Int64ToStr(s) + return &i +} + func StrToInt64(s string) (i int64) { i, _ = strconv.ParseInt(s, 10, 64) return } +func StrToInt64Point(s string) *int64 { + i := StrToInt64(s) + return &i +} + func UInt64ToStr(s uint64) (i string) { i = strconv.FormatUint(s, 10) return @@ -179,6 +189,11 @@ func StrToUInt64(s string) (i uint64) { return } +func StrToUint64Point(s string) *uint64 { + i := StrToUInt64(s) + return &i +} + func StrToBool(s string) (i bool) { i = false if s == "true" { diff --git a/tencentcloud/resource_tc_css_live_transcode_template.go b/tencentcloud/resource_tc_css_live_transcode_template.go index 5aab5749ae..00a15c4390 100644 --- a/tencentcloud/resource_tc_css_live_transcode_template.go +++ b/tencentcloud/resource_tc_css_live_transcode_template.go @@ -5,28 +5,28 @@ Example Usage ```hcl resource "tencentcloud_css_live_transcode_template" "live_transcode_template" { - template_name = "" - video_bitrate = "" - acodec = "" - audio_bitrate = "" - vcodec = "" - description = "" - need_video = "" - width = "" - need_audio = "" - height = "" - fps = "" - gop = "" - rotate = "" - profile = "" - bitrate_to_orig = "" - height_to_orig = "" - fps_to_orig = "" - ai_trans_code = "" - adapt_bitrate_percent = "" - short_edge_as_height = "" - d_r_m_type = "" - d_r_m_tracks = "" + template_name = "template_name" + acodec = "aac" + audio_bitrate = 128 + video_bitrate = 100 + vcodec = "origin" + description = "This_is_a_tf_test_temp." + need_video = 1 + width = 0 + need_audio = 1 + height = 0 + fps = 0 + gop = 2 + rotate = 0 + profile = "baseline" + bitrate_to_orig = 0 + height_to_orig = 0 + fps_to_orig = 0 + ai_trans_code = 0 + adapt_bitrate_percent = 0 + short_edge_as_height = 0 + drm_type = "fairplay" + drm_tracks = "SD" } ``` @@ -75,7 +75,7 @@ func resourceTencentCloudCssLiveTranscodeTemplate() *schema.Resource { "acodec": { Type: schema.TypeString, Optional: true, - Description: "default acc, not support now.", + Description: "default aac, not support now.", }, "audio_bitrate": { @@ -180,13 +180,13 @@ func resourceTencentCloudCssLiveTranscodeTemplate() *schema.Resource { Description: "let the short edge as the height.", }, - "d_r_m_type": { + "drm_type": { Type: schema.TypeString, Optional: true, Description: "DRM type, support fairplay/normalaes/widevine.", }, - "d_r_m_tracks": { + "drm_tracks": { Type: schema.TypeString, Optional: true, Description: "DRM tracks, support AUDIO/SD/HD/UHD1/UHD2.", @@ -208,95 +208,90 @@ func resourceTencentCloudCssLiveTranscodeTemplateCreate(d *schema.ResourceData, ) if v, ok := d.GetOk("template_name"); ok { - request.TemplateName = helper.String(v.(string)) } - if v, ok := d.GetOk("video_bitrate"); ok { + if v, _ := d.GetOk("video_bitrate"); v != nil { request.VideoBitrate = helper.IntInt64(v.(int)) } if v, ok := d.GetOk("acodec"); ok { - request.Acodec = helper.String(v.(string)) } - if v, ok := d.GetOk("audio_bitrate"); ok { + if v, _ := d.GetOk("audio_bitrate"); v != nil { request.AudioBitrate = helper.IntInt64(v.(int)) } if v, ok := d.GetOk("vcodec"); ok { - request.Vcodec = helper.String(v.(string)) } if v, ok := d.GetOk("description"); ok { - request.Description = helper.String(v.(string)) } - if v, ok := d.GetOk("need_video"); ok { + if v, _ := d.GetOk("need_video"); v != nil { request.NeedVideo = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("width"); ok { + if v, _ := d.GetOk("width"); v != nil { request.Width = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("need_audio"); ok { + if v, _ := d.GetOk("need_audio"); v != nil { request.NeedAudio = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("height"); ok { + if v, _ := d.GetOk("height"); v != nil { request.Height = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("fps"); ok { + if v, _ := d.GetOk("fps"); v != nil { request.Fps = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("gop"); ok { + if v, _ := d.GetOk("gop"); v != nil { request.Gop = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("rotate"); ok { + if v, _ := d.GetOk("rotate"); v != nil { request.Rotate = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("profile"); ok { - + if v, _ := d.GetOk("profile"); v != nil { request.Profile = helper.String(v.(string)) } - if v, ok := d.GetOk("bitrate_to_orig"); ok { + if v, _ := d.GetOk("bitrate_to_orig"); v != nil { request.BitrateToOrig = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("height_to_orig"); ok { + if v, _ := d.GetOk("height_to_orig"); v != nil { request.HeightToOrig = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("fps_to_orig"); ok { + if v, _ := d.GetOk("fps_to_orig"); v != nil { request.FpsToOrig = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("ai_trans_code"); ok { + if v, _ := d.GetOk("ai_trans_code"); v != nil { request.AiTransCode = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("adapt_bitrate_percent"); ok { + if v, _ := d.GetOk("adapt_bitrate_percent"); v != nil { request.AdaptBitratePercent = helper.Float64(v.(float64)) } - if v, ok := d.GetOk("short_edge_as_height"); ok { + if v, _ := d.GetOk("short_edge_as_height"); v != nil { request.ShortEdgeAsHeight = helper.IntInt64(v.(int)) } - if v, ok := d.GetOk("d_r_m_type"); ok { + if v, ok := d.GetOk("drm_type"); ok { request.DRMType = helper.String(v.(string)) } - if v, ok := d.GetOk("d_r_m_tracks"); ok { + if v, ok := d.GetOk("drm_tracks"); ok { request.DRMTracks = helper.String(v.(string)) } @@ -334,7 +329,7 @@ func resourceTencentCloudCssLiveTranscodeTemplateRead(d *schema.ResourceData, me templateId := d.Id() - liveTranscodeTemplate, err := service.DescribeCssLiveTranscodeTemplate(ctx, helper.Int64(helper.StrToInt64(templateId))) + liveTranscodeTemplate, err := service.DescribeCssLiveTranscodeTemplate(ctx, helper.StrToInt64Point(templateId)) if err != nil { return err @@ -426,11 +421,11 @@ func resourceTencentCloudCssLiveTranscodeTemplateRead(d *schema.ResourceData, me } if liveTranscodeTemplate.DRMType != nil { - _ = d.Set("d_r_m_type", liveTranscodeTemplate.DRMType) + _ = d.Set("drm_type", liveTranscodeTemplate.DRMType) } if liveTranscodeTemplate.DRMTracks != nil { - _ = d.Set("d_r_m_tracks", liveTranscodeTemplate.DRMTracks) + _ = d.Set("drm_tracks", liveTranscodeTemplate.DRMTracks) } return nil @@ -445,7 +440,7 @@ func resourceTencentCloudCssLiveTranscodeTemplateUpdate(d *schema.ResourceData, request := css.NewModifyLiveTranscodeTemplateRequest() - request.TemplateId = helper.Int64(helper.StrToInt64(d.Id())) + request.TemplateId = helper.StrToInt64Point(d.Id()) if d.HasChange("template_name") { @@ -454,7 +449,7 @@ func resourceTencentCloudCssLiveTranscodeTemplateUpdate(d *schema.ResourceData, } if d.HasChange("video_bitrate") { - if v, ok := d.GetOk("video_bitrate"); ok { + if v, _ := d.GetOk("video_bitrate"); v != nil { request.VideoBitrate = helper.IntInt64(v.(int)) } } @@ -482,43 +477,43 @@ func resourceTencentCloudCssLiveTranscodeTemplateUpdate(d *schema.ResourceData, } if d.HasChange("need_video") { - if v, ok := d.GetOk("need_video"); ok { + if v, _ := d.GetOk("need_video"); v != nil { request.NeedVideo = helper.IntInt64(v.(int)) } } if d.HasChange("width") { - if v, ok := d.GetOk("width"); ok { + if v, _ := d.GetOk("width"); v != nil { request.Width = helper.IntInt64(v.(int)) } } if d.HasChange("need_audio") { - if v, ok := d.GetOk("need_audio"); ok { + if v, _ := d.GetOk("need_audio"); v != nil { request.NeedAudio = helper.IntInt64(v.(int)) } } if d.HasChange("height") { - if v, ok := d.GetOk("height"); ok { + if v, _ := d.GetOk("height"); v != nil { request.Height = helper.IntInt64(v.(int)) } } if d.HasChange("fps") { - if v, ok := d.GetOk("fps"); ok { + if v, _ := d.GetOk("fps"); v != nil { request.Fps = helper.IntInt64(v.(int)) } } if d.HasChange("gop") { - if v, ok := d.GetOk("gop"); ok { + if v, _ := d.GetOk("gop"); v != nil { request.Gop = helper.IntInt64(v.(int)) } } if d.HasChange("rotate") { - if v, ok := d.GetOk("rotate"); ok { + if v, _ := d.GetOk("rotate"); v != nil { request.Rotate = helper.IntInt64(v.(int)) } } @@ -530,20 +525,20 @@ func resourceTencentCloudCssLiveTranscodeTemplateUpdate(d *schema.ResourceData, } if d.HasChange("bitrate_to_orig") { - if v, ok := d.GetOk("bitrate_to_orig"); ok { + if v, _ := d.GetOk("bitrate_to_orig"); v != nil { request.BitrateToOrig = helper.IntInt64(v.(int)) } } if d.HasChange("height_to_orig") { - if v, ok := d.GetOk("height_to_orig"); ok { + if v, _ := d.GetOk("height_to_orig"); v != nil { request.HeightToOrig = helper.IntInt64(v.(int)) } } if d.HasChange("fps_to_orig") { - if v, ok := d.GetOk("fps_to_orig"); ok { + if v, _ := d.GetOk("fps_to_orig"); v != nil { request.FpsToOrig = helper.IntInt64(v.(int)) } } @@ -553,27 +548,27 @@ func resourceTencentCloudCssLiveTranscodeTemplateUpdate(d *schema.ResourceData, } if d.HasChange("adapt_bitrate_percent") { - if v, ok := d.GetOk("adapt_bitrate_percent"); ok { + if v, _ := d.GetOk("adapt_bitrate_percent"); v != nil { request.AdaptBitratePercent = helper.Float64(v.(float64)) } } if d.HasChange("short_edge_as_height") { - if v, ok := d.GetOk("short_edge_as_height"); ok { + if v, _ := d.GetOk("short_edge_as_height"); v != nil { request.ShortEdgeAsHeight = helper.IntInt64(v.(int)) } } - if d.HasChange("d_r_m_type") { - if v, ok := d.GetOk("d_r_m_type"); ok { + if d.HasChange("drm_type") { + if v, ok := d.GetOk("drm_type"); ok { request.DRMType = helper.String(v.(string)) } } - if d.HasChange("d_r_m_tracks") { - if v, ok := d.GetOk("d_r_m_tracks"); ok { + if d.HasChange("drm_tracks") { + if v, ok := d.GetOk("drm_tracks"); ok { request.DRMTracks = helper.String(v.(string)) } @@ -609,7 +604,7 @@ func resourceTencentCloudCssLiveTranscodeTemplateDelete(d *schema.ResourceData, templateId := d.Id() - if err := service.DeleteCssLiveTranscodeTemplateById(ctx, helper.Int64(helper.StrToInt64(templateId))); err != nil { + if err := service.DeleteCssLiveTranscodeTemplateById(ctx, helper.StrToInt64Point(templateId)); err != nil { return err } diff --git a/tencentcloud/resource_tc_css_live_transcode_template_test.go b/tencentcloud/resource_tc_css_live_transcode_template_test.go index d472efb194..9f9fad1356 100644 --- a/tencentcloud/resource_tc_css_live_transcode_template_test.go +++ b/tencentcloud/resource_tc_css_live_transcode_template_test.go @@ -1,26 +1,126 @@ package tencentcloud import ( + "context" + "fmt" + "strings" "testing" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func TestAccTencentCloudCSSLiveTranscodeTemplate_basic(t *testing.T) { +func init() { + resource.AddTestSweepers("tencentcloud_css_live_transcode_template", &resource.Sweeper{ + Name: "tencentcloud_css_live_transcode_template", + F: testSweepCSSLiveTranscodeTemplate, + }) +} + +// go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_css_live_transcode_template +func testSweepCSSLiveTranscodeTemplate(r string) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + cli, _ := sharedClientForRegion(r) + cssService := CssService{client: cli.(*TencentCloudClient).apiV3Conn} + + temps, err := cssService.DescribeCssLiveTranscodeTemplates(ctx) + if err != nil { + return err + } + if temps == nil { + return fmt.Errorf("live transcode template not exists.") + } + + for _, v := range temps { + delName := v.TemplateName + delId := v.TemplateId + + if strings.HasPrefix(*delName, defaultCSSPrefix) { + err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := cssService.DeleteCssLiveTranscodeTemplateById(ctx, delId) + if err != nil { + return retryError(err) + } + return nil + }) + if err != nil { + return fmt.Errorf("[ERROR] sweeper live transcode template %s:%v failed! reason:[%s]", *delName, *delId, err.Error()) + } + } + } + return nil +} + +func TestAccTencentCloudCSSLiveTranscodeTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, + CheckDestroy: testAccCheckCssLiveTranscodeTemplateDestroy, Steps: []resource.TestStep{ { - Config: testAccCssLiveTranscodeTemplate, + Config: fmt.Sprintf(testAccCssLiveTranscodeTemplate), + Check: resource.ComposeTestCheckFunc( + testAccCheckCssLiveTranscodeTemplateExists("tencentcloud_css_live_transcode_template.live_transcode_template"), + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_template.live_transcode_template", "id"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "template_name", "tftest900p"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "acodec", "aac"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "audio_bitrate", "128"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "video_bitrate", "100"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "vcodec", "origin"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "description", "This_is_a_tf_test_temp."), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_video", "1"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "width", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_audio", "1"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "gop", "2"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "rotate", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "profile", "baseline"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "bitrate_to_orig", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height_to_orig", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps_to_orig", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "ai_trans_code", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "adapt_bitrate_percent", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "short_edge_as_height", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_type", "fairplay"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_tracks", "SD"), + ), + }, + { + Config: fmt.Sprintf(testAccCssLiveTranscodeTemplate_update), Check: resource.ComposeTestCheckFunc( + testAccCheckCssLiveTranscodeTemplateExists("tencentcloud_css_live_transcode_template.live_transcode_template"), resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_template.live_transcode_template", "id"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "template_name", "tftest900p"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "acodec", "aac"), + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_template.live_transcode_template", "audio_bitrate"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "video_bitrate", "200"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "vcodec", "h264"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "description", "This_is_a_tf_test_temp_changed."), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_video", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "width", "10"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_audio", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height", "10"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps", "36"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "gop", "2"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "rotate", "0"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "profile", "baseline"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "bitrate_to_orig", "0"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height_to_orig", "0"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps_to_orig", "0"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "ai_trans_code", "0"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "adapt_bitrate_percent", "0"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "short_edge_as_height", "0"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_type", "fairplay"), + // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_tracks", "SD"), ), }, { - ResourceName: "tencentcloud_css_live_transcode_template.liveTranscodeTemplate", + ResourceName: "tencentcloud_css_live_transcode_template.live_transcode_template", ImportState: true, ImportStateVerify: true, }, @@ -28,31 +128,96 @@ func TestAccTencentCloudCSSLiveTranscodeTemplate_basic(t *testing.T) { }) } +func testAccCheckCssLiveTranscodeTemplateDestroy(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + cssService := CssService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + for _, rs := range s.RootModule().Resources { + if rs.Type != "tencentcloud_css_live_transcode_template" { + continue + } + + watermark, err := cssService.DescribeCssLiveTranscodeTemplate(ctx, helper.StrToInt64Point(rs.Primary.ID)) + if err != nil { + return nil + } + + if watermark != nil { + return fmt.Errorf("css live transcode template still exist, Id: %v", rs.Primary.ID) + } + } + return nil +} + +func testAccCheckCssLiveTranscodeTemplateExists(re string) resource.TestCheckFunc { + return func(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + rs, ok := s.RootModule().Resources[re] + if !ok { + return fmt.Errorf("css live transcode template %s is not found", re) + } + if rs.Primary.ID == "" { + return fmt.Errorf("css live transcode template id is not set") + } + + cssService := CssService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + watermark, err := cssService.DescribeCssLiveTranscodeTemplate(ctx, helper.StrToInt64Point(rs.Primary.ID)) + if err != nil { + return err + } + + if watermark == nil { + return fmt.Errorf("css live transcode template not found, Id: %v", rs.Primary.ID) + } + return nil + } +} + const testAccCssLiveTranscodeTemplate = ` +resource "tencentcloud_css_live_transcode_template" "live_transcode_template" { + template_name = "tftest900p" + acodec = "aac" + audio_bitrate = 128 + video_bitrate = 100 + vcodec = "origin" + description = "This_is_a_tf_test_temp." + need_video = 1 + width = 0 + need_audio = 1 + height = 0 + fps = 0 + gop = 2 + rotate = 0 + profile = "baseline" + bitrate_to_orig = 0 + height_to_orig = 0 + fps_to_orig = 0 + ai_trans_code = 0 + adapt_bitrate_percent = 0 + short_edge_as_height = 0 + drm_type = "fairplay" + drm_tracks = "SD" +} + +` +const testAccCssLiveTranscodeTemplate_update = ` resource "tencentcloud_css_live_transcode_template" "live_transcode_template" { - template_name = "" - video_bitrate = "" - acodec = "" - audio_bitrate = "" - vcodec = "" - description = "" - need_video = "" - width = "" - need_audio = "" - height = "" - fps = "" - gop = "" - rotate = "" - profile = "" - bitrate_to_orig = "" - height_to_orig = "" - fps_to_orig = "" - ai_trans_code = "" - adapt_bitrate_percent = "" - short_edge_as_height = "" - d_r_m_type = "" - d_r_m_tracks = "" + template_name = "tftest900p" + acodec = "aac" + audio_bitrate = 128 + video_bitrate = 200 + vcodec = "h264" + description = "This_is_a_tf_test_temp_changed." + need_video = 0 + width = 10 + need_audio = 0 + height = 10 + fps = 36 + profile = "baseline" } ` diff --git a/tencentcloud/resource_tc_css_pull_stream_task.go b/tencentcloud/resource_tc_css_pull_stream_task.go index b5d2ec5048..00eee2f26f 100644 --- a/tencentcloud/resource_tc_css_pull_stream_task.go +++ b/tencentcloud/resource_tc_css_pull_stream_task.go @@ -5,36 +5,15 @@ Example Usage ```hcl resource "tencentcloud_css_pull_stream_task" "pull_stream_task" { - source_type = "PullLivePushLive" - source_urls = "" - domain_name = "" - app_name = "live" - stream_name = "" - start_time = "" - end_time = "" - operator = "" - push_args = "" - callback_events = "" - vod_loop_times = "" - vod_refresh_type = "" - callback_url = "" - extra_cmd = "" - comment = "" - to_url = "" - backup_source_type = "" - backup_source_url = "" - watermark_list { - picture_url = "" - x_position = "" - y_position = "" - width = "" - height = "" - location = "" - - } - status = "" - file_index = "" - offset_time = "" + source_type = "source_type" + source_urls = ["source_urls"] + domain_name = "domain_name" + app_name = "app_name" + stream_name = "stream_name" + start_time = "2022-11-16T22:09:28Z" + end_time = "2022-11-16T22:09:28Z" + operator = "admin" + comment = "comment." } ``` @@ -338,7 +317,7 @@ func resourceTencentCloudCssPullStreamTaskCreate(d *schema.ResourceData, meta in } if v, ok := d.GetOk("vod_loop_times"); ok { - request.VodLoopTimes = helper.String(helper.Int64ToStr(v.(int64))) + request.VodLoopTimes = helper.Int64ToStrPoint(v.(int64)) } if v, ok := d.GetOk("vod_refresh_type"); ok { diff --git a/tencentcloud/resource_tc_css_watermark.go b/tencentcloud/resource_tc_css_watermark.go index 3f6a1532da..1238ae1e36 100644 --- a/tencentcloud/resource_tc_css_watermark.go +++ b/tencentcloud/resource_tc_css_watermark.go @@ -5,12 +5,12 @@ Example Usage ```hcl resource "tencentcloud_css_watermark" "watermark" { - picture_url = "" - watermark_name = "" - x_position = "" - y_position = "" - width = "" - height = "" + picture_url = "picture_url" + watermark_name = "watermark_name" + x_position = 0 + y_position = 0 + width = 0 + height = 0 } ``` @@ -214,7 +214,7 @@ func resourceTencentCloudCssWatermarkUpdate(d *schema.ResourceData, meta interfa watermarkId := d.Id() - request.WatermarkId = helper.Int64(helper.StrToInt64(watermarkId)) + request.WatermarkId = helper.StrToInt64Point(watermarkId) if d.HasChange("picture_url") { if v, ok := d.GetOk("picture_url"); ok { @@ -282,7 +282,7 @@ func resourceTencentCloudCssWatermarkDelete(d *schema.ResourceData, meta interfa watermarkId := d.Id() - if err := service.DeleteCssWatermarkById(ctx, helper.Int64(helper.StrToInt64(watermarkId))); err != nil { + if err := service.DeleteCssWatermarkById(ctx, helper.StrToInt64Point(watermarkId)); err != nil { return err } diff --git a/tencentcloud/service_tencentcloud_css.go b/tencentcloud/service_tencentcloud_css.go index 51e2e7453e..95b704940c 100644 --- a/tencentcloud/service_tencentcloud_css.go +++ b/tencentcloud/service_tencentcloud_css.go @@ -27,7 +27,7 @@ func (me *CssService) DescribeCssWatermark(ctx context.Context, watermarkId stri } }() - request.WatermarkId = helper.Int64Uint64(helper.StrToInt64(watermarkId)) + request.WatermarkId = helper.StrToUint64Point(watermarkId) response, err := me.client.UseCssClient().DescribeLiveWatermark(request) if err != nil { @@ -324,7 +324,7 @@ func (me *CssService) DescribeCssLiveTranscodeRuleAttachment(ctx context.Context } if templateId != nil { - request.TemplateIds = []*int64{helper.Int64(helper.StrToInt64(*templateId))} + request.TemplateIds = []*int64{helper.StrToInt64Point(*templateId)} } response, err := me.client.UseCssClient().DescribeLiveTranscodeRules(request) From 780229fcdab13ae7872c3f1bb231c815a47a51b1 Mon Sep 17 00:00:00 2001 From: nickyinluo Date: Thu, 17 Nov 2022 20:02:43 +0800 Subject: [PATCH 7/7] 1.live rule attachment passed e2e case. 2.changelog 3.golangci-lint --- .changelog/1386.txt | 15 ++ tencentcloud/basic_test.go | 1 - tencentcloud/provider.go | 2 - ...e_tc_css_live_transcode_rule_attachment.go | 83 ++++--- ...css_live_transcode_rule_attachment_test.go | 164 ++++++++++++- ...resource_tc_css_live_transcode_template.go | 2 +- ...rce_tc_css_live_transcode_template_test.go | 81 +++---- ...source_tc_css_watermark_rule_attachment.go | 221 ------------------ ...e_tc_css_watermark_rule_attachment_test.go | 40 ---- tencentcloud/service_tencentcloud_css.go | 6 +- .../tencentcloud/common/http/request.go | 2 +- .../tencentcloud/live/v20180801/errors.go | 2 +- .../tencentcloud/live/v20180801/models.go | 51 +++- vendor/modules.txt | 4 +- ...ve_transcode_rule_attachment.html.markdown | 71 ++++++ .../css_live_transcode_template.html.markdown | 84 +++++++ .../docs/r/css_pull_stream_task.html.markdown | 43 +--- website/docs/r/css_watermark.html.markdown | 16 +- website/tencentcloud.erb | 43 ++-- 19 files changed, 511 insertions(+), 420 deletions(-) create mode 100644 .changelog/1386.txt delete mode 100644 tencentcloud/resource_tc_css_watermark_rule_attachment.go delete mode 100644 tencentcloud/resource_tc_css_watermark_rule_attachment_test.go create mode 100644 website/docs/r/css_live_transcode_rule_attachment.html.markdown create mode 100644 website/docs/r/css_live_transcode_template.html.markdown diff --git a/.changelog/1386.txt b/.changelog/1386.txt new file mode 100644 index 0000000000..03843b8ec3 --- /dev/null +++ b/.changelog/1386.txt @@ -0,0 +1,15 @@ +```release-note:new-resource +tencentcloud_css_watermark +``` + +```release-note:new-resource +tencentcloud_css_pull_stream_task +``` + +```release-note:new-resource +tencentcloud_css_live_transcode_template +``` + +```release-note:new-resource +tencentcloud_css_live_transcode_rule_attachment +``` diff --git a/tencentcloud/basic_test.go b/tencentcloud/basic_test.go index 98b503da07..11f73c0f58 100644 --- a/tencentcloud/basic_test.go +++ b/tencentcloud/basic_test.go @@ -799,7 +799,6 @@ const ( // CSS const ( defaultCSSLiveType = "PullLivePushLive" - defaultCSSVodType = "PullVodPushLive" defaultCSSDomainName = "177154.push.tlivecloud.com" defaultCSSStreamName = defaultCSSPrefix + "test_stream_name" defaultCSSAppName = "live" diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index 75a98ce201..f0961ee339 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -749,7 +749,6 @@ TencentDB for MariaDB(MariaDB) Cloud Streaming Services(CSS) Resource tencentcloud_css_watermark - tencentcloud_css_watermark_rule_attachment tencentcloud_css_pull_stream_task tencentcloud_css_live_transcode_template tencentcloud_css_live_transcode_rule_attachment @@ -1353,7 +1352,6 @@ func Provider() terraform.ResourceProvider { "tencentcloud_mariadb_log_file_retention_period": resourceTencentCloudMariadbLogFileRetentionPeriod(), "tencentcloud_mariadb_security_groups": resourceTencentCloudMariadbSecurityGroups(), "tencentcloud_css_watermark": resourceTencentCloudCssWatermark(), - // "tencentcloud_css_watermark_rule_attachment": resourceTencentCloudCssWatermarkRuleAttachment(), "tencentcloud_css_pull_stream_task": resourceTencentCloudCssPullStreamTask(), "tencentcloud_css_live_transcode_template": resourceTencentCloudCssLiveTranscodeTemplate(), "tencentcloud_css_live_transcode_rule_attachment": resourceTencentCloudCssLiveTranscodeRuleAttachment(), diff --git a/tencentcloud/resource_tc_css_live_transcode_rule_attachment.go b/tencentcloud/resource_tc_css_live_transcode_rule_attachment.go index 52c23a980c..3d5da8d921 100644 --- a/tencentcloud/resource_tc_css_live_transcode_rule_attachment.go +++ b/tencentcloud/resource_tc_css_live_transcode_rule_attachment.go @@ -4,12 +4,34 @@ Provides a resource to create a css live_transcode_rule_attachment Example Usage ```hcl +resource "tencentcloud_css_pull_stream_task" "task" { + source_type = "%s" + source_urls = ["%s"] + domain_name = "%s" + app_name = "%s" + stream_name = "%s" + start_time = "%s" + end_time = "%s" + operator = "%s" + comment = "This is a demo." +} + +resource "tencentcloud_css_live_transcode_template" "temp" { + template_name = "xxx" + acodec = "aac" + video_bitrate = 100 + vcodec = "origin" + description = "This_is_a_tf_test_temp." + need_video = 1 + need_audio = 1 +} + resource "tencentcloud_css_live_transcode_rule_attachment" "live_transcode_rule_attachment" { - domain_name = "" - app_name = "" - stream_name = "" - template_id = "" - } + domain_name = tencentcloud_css_pull_stream_task.task.domain_name + app_name = tencentcloud_css_pull_stream_task.task.app_name + stream_name = tencentcloud_css_pull_stream_task.task.stream_name + template_id = tencentcloud_css_live_transcode_template.temp.id +} ``` Import @@ -71,7 +93,7 @@ func resourceTencentCloudCssLiveTranscodeRuleAttachment() *schema.Resource { }, "create_time": { - Type: schema.TypeInt, + Type: schema.TypeString, Computed: true, Description: "create time.", }, @@ -153,41 +175,50 @@ func resourceTencentCloudCssLiveTranscodeRuleAttachmentRead(d *schema.ResourceDa return fmt.Errorf("id is broken,%s", d.Id()) } domainName := idSplit[0] + appName := idSplit[1] + streamName := idSplit[2] templateId := idSplit[3] - liveTranscodeRuleAttachment, err := service.DescribeCssLiveTranscodeRuleAttachment(ctx, helper.String(domainName), helper.String(templateId)) - + rules, err := service.DescribeCssLiveTranscodeRuleAttachment(ctx, helper.String(domainName), helper.String(templateId)) if err != nil { return err } - if liveTranscodeRuleAttachment == nil { + if rules == nil { d.SetId("") return fmt.Errorf("resource `liveTranscodeRuleAttachment` %s does not exist", d.Id()) } - if liveTranscodeRuleAttachment.DomainName != nil { - _ = d.Set("domain_name", liveTranscodeRuleAttachment.DomainName) - } + for _, v := range rules { + if *v.DomainName != domainName || *v.AppName != appName || *v.StreamName != streamName || *v.TemplateId != helper.StrToInt64(templateId) { + log.Printf("[DEBUG]%s api[%s] this rule does not match with:[%s]\n", logId, "query attachment", d.Id()) + continue + } - if liveTranscodeRuleAttachment.AppName != nil { - _ = d.Set("app_name", liveTranscodeRuleAttachment.AppName) - } + liveTranscodeRuleAttachment := v + if liveTranscodeRuleAttachment.DomainName != nil { + _ = d.Set("domain_name", liveTranscodeRuleAttachment.DomainName) + } - if liveTranscodeRuleAttachment.StreamName != nil { - _ = d.Set("stream_name", liveTranscodeRuleAttachment.StreamName) - } + if liveTranscodeRuleAttachment.AppName != nil { + _ = d.Set("app_name", liveTranscodeRuleAttachment.AppName) + } - if liveTranscodeRuleAttachment.TemplateId != nil { - _ = d.Set("template_id", liveTranscodeRuleAttachment.TemplateId) - } + if liveTranscodeRuleAttachment.StreamName != nil { + _ = d.Set("stream_name", liveTranscodeRuleAttachment.StreamName) + } - if liveTranscodeRuleAttachment.CreateTime != nil { - _ = d.Set("create_time", liveTranscodeRuleAttachment.CreateTime) - } + if liveTranscodeRuleAttachment.TemplateId != nil { + _ = d.Set("template_id", liveTranscodeRuleAttachment.TemplateId) + } - if liveTranscodeRuleAttachment.UpdateTime != nil { - _ = d.Set("update_time", liveTranscodeRuleAttachment.UpdateTime) + if liveTranscodeRuleAttachment.CreateTime != nil { + _ = d.Set("create_time", liveTranscodeRuleAttachment.CreateTime) + } + + if liveTranscodeRuleAttachment.UpdateTime != nil { + _ = d.Set("update_time", liveTranscodeRuleAttachment.UpdateTime) + } } return nil diff --git a/tencentcloud/resource_tc_css_live_transcode_rule_attachment_test.go b/tencentcloud/resource_tc_css_live_transcode_rule_attachment_test.go index a98baf7697..1a92a45c74 100644 --- a/tencentcloud/resource_tc_css_live_transcode_rule_attachment_test.go +++ b/tencentcloud/resource_tc_css_live_transcode_rule_attachment_test.go @@ -1,26 +1,88 @@ package tencentcloud import ( + "context" + "fmt" + "strings" "testing" + "time" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func TestAccTencentCloudCssLiveTranscodeRuleAttachment_basic(t *testing.T) { +func init() { + resource.AddTestSweepers("tencentcloud_css_live_transcode_rule_attachment", &resource.Sweeper{ + Name: "tencentcloud_css_live_transcode_rule_attachment", + F: testSweepCssLiveTranscodeRuleAttachment, + }) +} + +// go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_css_live_transcode_rule_attachment +func testSweepCssLiveTranscodeRuleAttachment(r string) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + cli, _ := sharedClientForRegion(r) + cssService := CssService{client: cli.(*TencentCloudClient).apiV3Conn} + + temps, err := cssService.DescribeCssLiveTranscodeTemplates(ctx) + if err != nil { + return err + } + if temps == nil { + return fmt.Errorf("live transcode template attachment not exists.") + } + + for _, v := range temps { + delName := v.TemplateName + delId := v.TemplateId + + if strings.HasPrefix(*delName, defaultCSSPrefix) { + err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := cssService.DeleteCssLiveTranscodeTemplateById(ctx, delId) + if err != nil { + return retryError(err) + } + return nil + }) + if err != nil { + return fmt.Errorf("[ERROR] sweeper live transcode template attachment %s:%v failed! reason:[%s]", *delName, *delId, err.Error()) + } + } + } + return nil +} + +func TestAccTencentCloudCSSLiveTranscodeRuleAttachmentResource_basic(t *testing.T) { t.Parallel() + baseTime := time.Now().UTC().Add(10 * time.Hour) + startTime := baseTime.Format(time.RFC3339) + endTime := baseTime.Add(1 * time.Hour).Format(time.RFC3339) + // startTimeNew := baseTime.Add(30 * time.Minute).Format(time.RFC3339) + // endTimeNew := baseTime.Add(2 * time.Hour).Format(time.RFC3339) + liveUrl := "rtmp://5000.liveplay.myqcloud.com/live/stream1" resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckCssLiveTranscodeRuleAttachmentDestroy, Steps: []resource.TestStep{ { - Config: testAccCssLiveTranscodeRuleAttachment, + Config: fmt.Sprintf(testAccCssLiveTranscodeRuleAttachment, defaultCSSLiveType, liveUrl, defaultCSSDomainName, defaultCSSAppName, defaultCSSStreamName, startTime, endTime, defaultCSSOperator), Check: resource.ComposeTestCheckFunc( + testAccCheckCssLiveTranscodeRuleAttachmentExists("tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment"), resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment", "domain_name"), + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment", "app_name"), + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment", "stream_name"), + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment", "template_id"), + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment", "create_time"), + resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment", "update_time"), ), }, { - ResourceName: "tencentcloud_css_live_transcode_rule_attachment.liveTranscodeRuleAttachment", + ResourceName: "tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment", ImportState: true, ImportStateVerify: true, }, @@ -28,13 +90,93 @@ func TestAccTencentCloudCssLiveTranscodeRuleAttachment_basic(t *testing.T) { }) } -const testAccCssLiveTranscodeRuleAttachment = ` +func testAccCheckCssLiveTranscodeRuleAttachmentDestroy(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + cssService := CssService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + for _, rs := range s.RootModule().Resources { + if rs.Type != "tencentcloud_css_live_transcode_rule_attachment" { + continue + } + + idSplit := strings.Split(rs.Primary.ID, FILED_SP) + domainName := idSplit[0] + templateId := idSplit[3] + + temp, err := cssService.DescribeCssLiveTranscodeRuleAttachment(ctx, helper.String(domainName), helper.String(templateId)) + if err != nil { + return nil + } + + if temp != nil { + return fmt.Errorf("css live transcode template attachment still exist, Id: %v", rs.Primary.ID) + } + } + return nil +} + +func testAccCheckCssLiveTranscodeRuleAttachmentExists(re string) resource.TestCheckFunc { + return func(s *terraform.State) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + + rs, ok := s.RootModule().Resources[re] + if !ok { + return fmt.Errorf("css live transcode template attachment %s is not found", re) + } + if rs.Primary.ID == "" { + return fmt.Errorf("css live transcode template attachment id is not set") + } + + cssService := CssService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + idSplit := strings.Split(rs.Primary.ID, FILED_SP) + domainName := idSplit[0] + templateId := idSplit[3] + + temp, err := cssService.DescribeCssLiveTranscodeRuleAttachment(ctx, helper.String(domainName), helper.String(templateId)) + if err != nil { + return err + } + + if temp == nil { + return fmt.Errorf("css live transcode template attachment not found, Id: %v", rs.Primary.ID) + } + return nil + } +} + +const testAccCssPullstreamtask = ` + resource "tencentcloud_css_pull_stream_task" "task" { + source_type = "%s" + source_urls = ["%s"] + domain_name = "%s" + app_name = "%s" + stream_name = "%s" + start_time = "%s" + end_time = "%s" + operator = "%s" + comment = "This is a e2e test case." + } +` +const testAccCssLiveTranscodeTemp = ` +resource "tencentcloud_css_live_transcode_template" "temp" { + template_name = "tf1080p" + acodec = "aac" + video_bitrate = 100 + vcodec = "origin" + description = "This_is_a_tf_test_temp." + need_video = 1 + need_audio = 1 +} +` +const testAccCssLiveTranscodeRuleAttachment = testAccCssPullstreamtask + testAccCssLiveTranscodeTemp + ` resource "tencentcloud_css_live_transcode_rule_attachment" "live_transcode_rule_attachment" { - domain_name = "" - app_name = "" - stream_name = "" - template_id = "" - } + domain_name = tencentcloud_css_pull_stream_task.task.domain_name + app_name = tencentcloud_css_pull_stream_task.task.app_name + stream_name = tencentcloud_css_pull_stream_task.task.stream_name + template_id = tencentcloud_css_live_transcode_template.temp.id +} ` diff --git a/tencentcloud/resource_tc_css_live_transcode_template.go b/tencentcloud/resource_tc_css_live_transcode_template.go index 00a15c4390..a3dfd794c7 100644 --- a/tencentcloud/resource_tc_css_live_transcode_template.go +++ b/tencentcloud/resource_tc_css_live_transcode_template.go @@ -259,7 +259,7 @@ func resourceTencentCloudCssLiveTranscodeTemplateCreate(d *schema.ResourceData, request.Rotate = helper.IntInt64(v.(int)) } - if v, _ := d.GetOk("profile"); v != nil { + if v, ok := d.GetOk("profile"); ok { request.Profile = helper.String(v.(string)) } diff --git a/tencentcloud/resource_tc_css_live_transcode_template_test.go b/tencentcloud/resource_tc_css_live_transcode_template_test.go index 9f9fad1356..60bcb8fde8 100644 --- a/tencentcloud/resource_tc_css_live_transcode_template_test.go +++ b/tencentcloud/resource_tc_css_live_transcode_template_test.go @@ -57,66 +57,55 @@ func TestAccTencentCloudCSSLiveTranscodeTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - CheckDestroy: testAccCheckCssLiveTranscodeTemplateDestroy, + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckCssLiveTranscodeTemplateDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccCssLiveTranscodeTemplate), + Config: testAccCssLiveTranscodeTemplate, Check: resource.ComposeTestCheckFunc( - testAccCheckCssLiveTranscodeTemplateExists("tencentcloud_css_live_transcode_template.live_transcode_template"), + testAccCheckCssLiveTranscodeTemplateExists("tencentcloud_css_live_transcode_template.live_transcode_template"), resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_template.live_transcode_template", "id"), resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "template_name", "tftest900p"), resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "acodec", "aac"), resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "audio_bitrate", "128"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "video_bitrate", "100"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "vcodec", "origin"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "description", "This_is_a_tf_test_temp."), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_video", "1"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "width", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_audio", "1"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "gop", "2"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "rotate", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "profile", "baseline"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "bitrate_to_orig", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height_to_orig", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps_to_orig", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "ai_trans_code", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "adapt_bitrate_percent", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "short_edge_as_height", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_type", "fairplay"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_tracks", "SD"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "video_bitrate", "100"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "vcodec", "origin"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "description", "This_is_a_tf_test_temp."), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_video", "1"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "width", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_audio", "1"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "gop", "2"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "rotate", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "profile", "baseline"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "bitrate_to_orig", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height_to_orig", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps_to_orig", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "ai_trans_code", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "adapt_bitrate_percent", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "short_edge_as_height", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_type", "fairplay"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_tracks", "SD"), ), }, - { - Config: fmt.Sprintf(testAccCssLiveTranscodeTemplate_update), + { + Config: testAccCssLiveTranscodeTemplate_update, Check: resource.ComposeTestCheckFunc( - testAccCheckCssLiveTranscodeTemplateExists("tencentcloud_css_live_transcode_template.live_transcode_template"), + testAccCheckCssLiveTranscodeTemplateExists("tencentcloud_css_live_transcode_template.live_transcode_template"), resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_template.live_transcode_template", "id"), resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "template_name", "tftest900p"), resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "acodec", "aac"), resource.TestCheckResourceAttrSet("tencentcloud_css_live_transcode_template.live_transcode_template", "audio_bitrate"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "video_bitrate", "200"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "vcodec", "h264"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "description", "This_is_a_tf_test_temp_changed."), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_video", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "width", "10"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_audio", "0"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height", "10"), - resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps", "36"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "gop", "2"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "rotate", "0"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "profile", "baseline"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "bitrate_to_orig", "0"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height_to_orig", "0"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps_to_orig", "0"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "ai_trans_code", "0"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "adapt_bitrate_percent", "0"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "short_edge_as_height", "0"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_type", "fairplay"), - // resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "drm_tracks", "SD"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "video_bitrate", "200"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "vcodec", "h264"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "description", "This_is_a_tf_test_temp_changed."), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_video", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "width", "10"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "need_audio", "0"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "height", "10"), + resource.TestCheckResourceAttr("tencentcloud_css_live_transcode_template.live_transcode_template", "fps", "36"), ), }, { diff --git a/tencentcloud/resource_tc_css_watermark_rule_attachment.go b/tencentcloud/resource_tc_css_watermark_rule_attachment.go deleted file mode 100644 index 4c8c8841de..0000000000 --- a/tencentcloud/resource_tc_css_watermark_rule_attachment.go +++ /dev/null @@ -1,221 +0,0 @@ -/* -Provides a resource to create a css watermark_rule_attachment - -Example Usage - -```hcl -resource "tencentcloud_css_watermark_rule_attachment" "watermark_rule_attachment" { - domain_name = "" - app_name = "" - stream_name = "" - watermark_id = "" - } - -``` -Import - -css watermark_rule_attachment can be imported using the id, e.g. -``` -$ terraform import tencentcloud_css_watermark_rule_attachment.watermark_rule_attachment watermarkRuleAttachment_id -``` -*/ -package tencentcloud - -import ( - "context" - "fmt" - "log" - "strings" - - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - css "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" - "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" -) - -func resourceTencentCloudCssWatermarkRuleAttachment() *schema.Resource { - return &schema.Resource{ - Read: resourceTencentCloudCssWatermarkRuleAttachmentRead, - Create: resourceTencentCloudCssWatermarkRuleAttachmentCreate, - Delete: resourceTencentCloudCssWatermarkRuleAttachmentDelete, - Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, - }, - Schema: map[string]*schema.Schema{ - "domain_name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - Description: "rule domain name.", - }, - - "app_name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - Description: "rule app name.", - }, - - "stream_name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - Description: "rule stream name.", - }, - - "watermark_id": { - Type: schema.TypeInt, - Required: true, - ForceNew: true, - Description: "watermark id created by AddLiveWatermark.", - }, - - "create_time": { - Type: schema.TypeInt, - Computed: true, - Description: "create time.", - }, - - "update_time": { - Type: schema.TypeString, - Computed: true, - Description: "update time.", - }, - }, - } -} - -func resourceTencentCloudCssWatermarkRuleAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.create")() - defer inconsistentCheck(d, meta)() - - logId := getLogId(contextNil) - - var ( - request = css.NewCreateLiveWatermarkRuleRequest() - // response *css.CreateLiveWatermarkRuleResponse - domainName string - appName string - streamName string - watermarkId string - ) - - if v, ok := d.GetOk("domain_name"); ok { - domainName = v.(string) - request.DomainName = helper.String(v.(string)) - } - - if v, ok := d.GetOk("app_name"); ok { - appName = v.(string) - request.AppName = helper.String(v.(string)) - } - - if v, ok := d.GetOk("stream_name"); ok { - streamName = v.(string) - request.StreamName = helper.String(v.(string)) - } - - if v, ok := d.GetOk("watermark_id"); ok { - watermarkId = v.(string) - request.TemplateId = helper.IntInt64(v.(int)) - } - - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseCssClient().CreateLiveWatermarkRule(request) - if e != nil { - return retryError(e) - } else { - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", - logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) - } - return nil - }) - - if err != nil { - log.Printf("[CRITAL]%s create css watermarkRuleAttachment failed, reason:%+v", logId, err) - return err - } - - d.SetId(domainName + FILED_SP + appName + FILED_SP + streamName + FILED_SP + watermarkId) - return resourceTencentCloudCssWatermarkRuleAttachmentRead(d, meta) -} - -func resourceTencentCloudCssWatermarkRuleAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.read")() - defer inconsistentCheck(d, meta)() - - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - - service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} - - idSplit := strings.Split(d.Id(), FILED_SP) - if len(idSplit) != 4 { - return fmt.Errorf("id is broken,%s", d.Id()) - } - domainName := idSplit[0] - appName := idSplit[1] - streamName := idSplit[2] - watermarkId := idSplit[3] - - watermarkRuleAttachment, err := service.DescribeCssWatermarkRuleAttachment(ctx, domainName, appName, streamName, watermarkId) - - if err != nil { - return err - } - - if watermarkRuleAttachment == nil { - d.SetId("") - return fmt.Errorf("resource `watermarkRuleAttachment` %s does not exist", d.Id()) - } - - if watermarkRuleAttachment.DomainName != nil { - _ = d.Set("domain_name", watermarkRuleAttachment.DomainName) - } - - if watermarkRuleAttachment.AppName != nil { - _ = d.Set("app_name", watermarkRuleAttachment.AppName) - } - - if watermarkRuleAttachment.StreamName != nil { - _ = d.Set("stream_name", watermarkRuleAttachment.StreamName) - } - - if watermarkRuleAttachment.TemplateId != nil { - _ = d.Set("watermark_id", watermarkRuleAttachment.TemplateId) - } - - if watermarkRuleAttachment.CreateTime != nil { - _ = d.Set("create_time", watermarkRuleAttachment.CreateTime) - } - - if watermarkRuleAttachment.UpdateTime != nil { - _ = d.Set("update_time", watermarkRuleAttachment.UpdateTime) - } - - return nil -} - -func resourceTencentCloudCssWatermarkRuleAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_css_watermark_rule_attachment.delete")() - defer inconsistentCheck(d, meta)() - - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - - service := CssService{client: meta.(*TencentCloudClient).apiV3Conn} - - idSplit := strings.Split(d.Id(), FILED_SP) - if len(idSplit) != 4 { - return fmt.Errorf("id is broken,%s", d.Id()) - } - domainName := idSplit[0] - appName := idSplit[1] - streamName := idSplit[2] - - if err := service.DetachCssWatermarkRuleAttachment(ctx, domainName, appName, streamName); err != nil { - return err - } - - return nil -} diff --git a/tencentcloud/resource_tc_css_watermark_rule_attachment_test.go b/tencentcloud/resource_tc_css_watermark_rule_attachment_test.go deleted file mode 100644 index 00dbeed632..0000000000 --- a/tencentcloud/resource_tc_css_watermark_rule_attachment_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package tencentcloud - -import ( - "testing" - - "github.com/hashicorp/terraform-plugin-sdk/helper/resource" -) - -func TestAccTencentCloudCssWatermarkRule_basic(t *testing.T) { - t.Parallel() - - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccCssWatermarkRule, - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet("tencentcloud_css_watermark_rule.watermark_rule", "id"), - ), - }, - { - ResourceName: "tencentcloud_css_watermark_rule.watermarkRule", - ImportState: true, - ImportStateVerify: true, - }, - }, - }) -} - -const testAccCssWatermarkRule = ` - -resource "tencentcloud_css_watermark_rule" "watermark_rule" { - domain_name = "" - app_name = "" - stream_name = "" - watermark_id = "" - } - -` diff --git a/tencentcloud/service_tencentcloud_css.go b/tencentcloud/service_tencentcloud_css.go index 95b704940c..d03c8c65af 100644 --- a/tencentcloud/service_tencentcloud_css.go +++ b/tencentcloud/service_tencentcloud_css.go @@ -67,7 +67,7 @@ func (me *CssService) DescribeCssWatermarks(ctx context.Context) (marks []*css.W } log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) - if response.Response == nil || *response.Response.TotalNum < 1{ + if response.Response == nil || *response.Response.TotalNum < 1 { return } marks = response.Response.WatermarkList @@ -306,7 +306,7 @@ func (me *CssService) DeleteCssLiveTranscodeTemplateById(ctx context.Context, te return } -func (me *CssService) DescribeCssLiveTranscodeRuleAttachment(ctx context.Context, domainName, templateId *string) (liveTranscodeRuleAttachment *css.RuleInfo, errRet error) { +func (me *CssService) DescribeCssLiveTranscodeRuleAttachment(ctx context.Context, domainName, templateId *string) (rules []*css.RuleInfo, errRet error) { var ( logId = getLogId(ctx) request = css.NewDescribeLiveTranscodeRulesRequest() @@ -339,7 +339,7 @@ func (me *CssService) DescribeCssLiveTranscodeRuleAttachment(ctx context.Context if len(response.Response.Rules) < 1 { return } - liveTranscodeRuleAttachment = response.Response.Rules[0] + rules = response.Response.Rules return } diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go index 396e323518..6137698b56 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go @@ -265,7 +265,7 @@ func CompleteCommonParams(request Request, region string, requestClient string) params["Action"] = request.GetAction() params["Timestamp"] = strconv.FormatInt(time.Now().Unix(), 10) params["Nonce"] = strconv.Itoa(rand.Int()) - params["RequestClient"] = "SDK_GO_1.0.533" + params["RequestClient"] = "SDK_GO_1.0.535" if requestClient != "" { params["RequestClient"] += ": " + requestClient } diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/errors.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/errors.go index 9fe36c6578..6a546bf5c2 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/errors.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/errors.go @@ -71,7 +71,7 @@ const ( // 无权限访问 Cos bucket。 FAILEDOPERATION_COSBUCKETNOTPERMISSION = "FailedOperation.CosBucketNotPermission" - // Cos 角色不存在。 + // Cos 角色不存在,请前往 控制台 -> 功能配置 -> 直播截图&鉴黄 页面进行授权。 FAILEDOPERATION_COSROLENOTEXISTS = "FailedOperation.CosRoleNotExists" // 2天内有产生流量,域名处于锁定期间,2天内无流量产生才允许删除域名。 diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/models.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/models.go index aac35764c5..26c99bc839 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/models.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801/models.go @@ -1103,6 +1103,7 @@ type CreateLivePullStreamTaskRequestParams struct { // 拉流源的类型: // PullLivePushLive -直播, // PullVodPushLive -点播。 + // PullPicPushLive -图片。 SourceType *string `json:"SourceType,omitempty" name:"SourceType"` // 拉流源 url 列表。 @@ -1221,6 +1222,12 @@ type CreateLivePullStreamTaskRequestParams struct { // 2. 水印图片 URL 请使用合法外网可访问地址。 // 3. 支持的水印图片格式:png,jpg,gif 等。 WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` + + // 点播源是否启用本地推流模式,默认0,不启用。 + // 0 - 不启用。 + // 1 - 启用。 + // 注意:启用本地模式后,会将源列表中的 MP4 文件进行本地下载,优先使用本地已下载文件进行推流,提高点播源推流稳定性。使用本地下载文件推流时,会产生增值费用。 + VodLocalMode *int64 `json:"VodLocalMode,omitempty" name:"VodLocalMode"` } type CreateLivePullStreamTaskRequest struct { @@ -1229,6 +1236,7 @@ type CreateLivePullStreamTaskRequest struct { // 拉流源的类型: // PullLivePushLive -直播, // PullVodPushLive -点播。 + // PullPicPushLive -图片。 SourceType *string `json:"SourceType,omitempty" name:"SourceType"` // 拉流源 url 列表。 @@ -1347,6 +1355,12 @@ type CreateLivePullStreamTaskRequest struct { // 2. 水印图片 URL 请使用合法外网可访问地址。 // 3. 支持的水印图片格式:png,jpg,gif 等。 WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` + + // 点播源是否启用本地推流模式,默认0,不启用。 + // 0 - 不启用。 + // 1 - 启用。 + // 注意:启用本地模式后,会将源列表中的 MP4 文件进行本地下载,优先使用本地已下载文件进行推流,提高点播源推流稳定性。使用本地下载文件推流时,会产生增值费用。 + VodLocalMode *int64 `json:"VodLocalMode,omitempty" name:"VodLocalMode"` } func (r *CreateLivePullStreamTaskRequest) ToJsonString() string { @@ -1380,6 +1394,7 @@ func (r *CreateLivePullStreamTaskRequest) FromJsonString(s string) error { delete(f, "BackupSourceType") delete(f, "BackupSourceUrl") delete(f, "WatermarkList") + delete(f, "VodLocalMode") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLivePullStreamTaskRequest has unknown keys!", "") } @@ -10185,8 +10200,9 @@ type ModifyLivePullStreamTaskRequestParams struct { // PullVodPushLive -点播。 // 注意: // 1. 仅当主源类型为直播源时,备源才会生效。 - // 2. 主直播源拉流中断时,自动使用备源进行拉流。 - // 3. 如果备源为点播文件时,则每次轮播完点播文件就检查主源是否恢复,如果主源恢复则自动切回到主源,否则继续拉备源。 + // 2. 将该参数置为空,则可将任务去除备源信息。 + // 3. 主直播源拉流中断时,自动使用备源进行拉流。 + // 4. 如果备源为点播文件时,则每次轮播完点播文件就检查主源是否恢复,如果主源恢复则自动切回到主源,否则继续拉备源。 BackupSourceType *string `json:"BackupSourceType,omitempty" name:"BackupSourceType"` // 备源 URL。 @@ -10203,6 +10219,12 @@ type ModifyLivePullStreamTaskRequestParams struct { // 6. 清除水印时,需携带该水印列表参数,内容为空数组。 // 7. 暂不支持动图水印。 WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` + + // 点播源是否启用本地推流模式,默认0,不启用。 + // 0 - 不启用。 + // 1 - 启用。 + // 注意:启用本地模式后,会将源列表中的 MP4 文件进行本地下载,优先使用本地已下载文件进行推流,提高点播源推流稳定性。使用本地下载文件推流时,会产生增值费用。 + VodLocalMode *int64 `json:"VodLocalMode,omitempty" name:"VodLocalMode"` } type ModifyLivePullStreamTaskRequest struct { @@ -10281,8 +10303,9 @@ type ModifyLivePullStreamTaskRequest struct { // PullVodPushLive -点播。 // 注意: // 1. 仅当主源类型为直播源时,备源才会生效。 - // 2. 主直播源拉流中断时,自动使用备源进行拉流。 - // 3. 如果备源为点播文件时,则每次轮播完点播文件就检查主源是否恢复,如果主源恢复则自动切回到主源,否则继续拉备源。 + // 2. 将该参数置为空,则可将任务去除备源信息。 + // 3. 主直播源拉流中断时,自动使用备源进行拉流。 + // 4. 如果备源为点播文件时,则每次轮播完点播文件就检查主源是否恢复,如果主源恢复则自动切回到主源,否则继续拉备源。 BackupSourceType *string `json:"BackupSourceType,omitempty" name:"BackupSourceType"` // 备源 URL。 @@ -10299,6 +10322,12 @@ type ModifyLivePullStreamTaskRequest struct { // 6. 清除水印时,需携带该水印列表参数,内容为空数组。 // 7. 暂不支持动图水印。 WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` + + // 点播源是否启用本地推流模式,默认0,不启用。 + // 0 - 不启用。 + // 1 - 启用。 + // 注意:启用本地模式后,会将源列表中的 MP4 文件进行本地下载,优先使用本地已下载文件进行推流,提高点播源推流稳定性。使用本地下载文件推流时,会产生增值费用。 + VodLocalMode *int64 `json:"VodLocalMode,omitempty" name:"VodLocalMode"` } func (r *ModifyLivePullStreamTaskRequest) ToJsonString() string { @@ -10329,6 +10358,7 @@ func (r *ModifyLivePullStreamTaskRequest) FromJsonString(s string) error { delete(f, "BackupSourceType") delete(f, "BackupSourceUrl") delete(f, "WatermarkList") + delete(f, "VodLocalMode") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyLivePullStreamTaskRequest has unknown keys!", "") } @@ -11370,7 +11400,8 @@ type PullStreamTaskInfo struct { // 拉流源的类型: // PullLivePushLive -直播, - // PullVodPushLive -点播。 + // PullVodPushLive -点播, + // PullPicPushLive -图片。 SourceType *string `json:"SourceType,omitempty" name:"SourceType"` // 拉流源url列表。 @@ -11493,6 +11524,12 @@ type PullStreamTaskInfo struct { // 水印信息列表。 // 注意:此字段可能返回 null,表示取不到有效值。 WatermarkList []*PullPushWatermarkInfo `json:"WatermarkList,omitempty" name:"WatermarkList"` + + // 点播源是否启用本地推流模式,默认0,不启用。 + // 0 - 不启用。 + // 1 - 启用。 + // 注意:此字段可能返回 null,表示取不到有效值。 + VodLocalMode *int64 `json:"VodLocalMode,omitempty" name:"VodLocalMode"` } type PushAuthKeyInfo struct { @@ -11633,6 +11670,10 @@ type PushQualityData struct { // 流量,单位MB。 Flux *float64 `json:"Flux,omitempty" name:"Flux"` + + // 推流服务端 IP。 + // 注意:此字段可能返回 null,表示取不到有效值。 + ServerIp *string `json:"ServerIp,omitempty" name:"ServerIp"` } type RecentPullInfo struct { diff --git a/vendor/modules.txt b/vendor/modules.txt index 38a5765e5f..3e62a53422 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -559,7 +559,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit/v20190319 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.412 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.533 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.535 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http @@ -589,7 +589,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.525 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.535 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312 diff --git a/website/docs/r/css_live_transcode_rule_attachment.html.markdown b/website/docs/r/css_live_transcode_rule_attachment.html.markdown new file mode 100644 index 0000000000..dbc88ca642 --- /dev/null +++ b/website/docs/r/css_live_transcode_rule_attachment.html.markdown @@ -0,0 +1,71 @@ +--- +subcategory: "Cloud Streaming Services(CSS)" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_css_live_transcode_rule_attachment" +sidebar_current: "docs-tencentcloud-resource-css_live_transcode_rule_attachment" +description: |- + Provides a resource to create a css live_transcode_rule_attachment +--- + +# tencentcloud_css_live_transcode_rule_attachment + +Provides a resource to create a css live_transcode_rule_attachment + +## Example Usage + +```hcl +resource "tencentcloud_css_pull_stream_task" "task" { + source_type = "%s" + source_urls = ["%s"] + domain_name = "%s" + app_name = "%s" + stream_name = "%s" + start_time = "%s" + end_time = "%s" + operator = "%s" + comment = "This is a demo." +} + +resource "tencentcloud_css_live_transcode_template" "temp" { + template_name = "xxx" + acodec = "aac" + video_bitrate = 100 + vcodec = "origin" + description = "This_is_a_tf_test_temp." + need_video = 1 + need_audio = 1 +} + +resource "tencentcloud_css_live_transcode_rule_attachment" "live_transcode_rule_attachment" { + domain_name = tencentcloud_css_pull_stream_task.task.domain_name + app_name = tencentcloud_css_pull_stream_task.task.app_name + stream_name = tencentcloud_css_pull_stream_task.task.stream_name + template_id = tencentcloud_css_live_transcode_template.temp.id +} +``` + +## Argument Reference + +The following arguments are supported: + +* `app_name` - (Required, String, ForceNew) app name which you want to bind, can be empty string if not binding specific app name. +* `domain_name` - (Required, String, ForceNew) domain name hich you want to bind the transcode template. +* `stream_name` - (Required, String, ForceNew) stream name which you want to bind, can be empty string if not binding specific stream. +* `template_id` - (Required, Int, ForceNew) template created by css_live_transcode_template. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. +* `create_time` - create time. +* `update_time` - update time. + + +## Import + +css live_transcode_rule_attachment can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_live_transcode_rule_attachment.live_transcode_rule_attachment liveTranscodeRuleAttachment_id +``` + diff --git a/website/docs/r/css_live_transcode_template.html.markdown b/website/docs/r/css_live_transcode_template.html.markdown new file mode 100644 index 0000000000..3e771b3b30 --- /dev/null +++ b/website/docs/r/css_live_transcode_template.html.markdown @@ -0,0 +1,84 @@ +--- +subcategory: "Cloud Streaming Services(CSS)" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_css_live_transcode_template" +sidebar_current: "docs-tencentcloud-resource-css_live_transcode_template" +description: |- + Provides a resource to create a css live_transcode_template +--- + +# tencentcloud_css_live_transcode_template + +Provides a resource to create a css live_transcode_template + +## Example Usage + +```hcl +resource "tencentcloud_css_live_transcode_template" "live_transcode_template" { + template_name = "template_name" + acodec = "aac" + audio_bitrate = 128 + video_bitrate = 100 + vcodec = "origin" + description = "This_is_a_tf_test_temp." + need_video = 1 + width = 0 + need_audio = 1 + height = 0 + fps = 0 + gop = 2 + rotate = 0 + profile = "baseline" + bitrate_to_orig = 0 + height_to_orig = 0 + fps_to_orig = 0 + ai_trans_code = 0 + adapt_bitrate_percent = 0 + short_edge_as_height = 0 + drm_type = "fairplay" + drm_tracks = "SD" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `template_name` - (Required, String) template name, only support 0-9 and a-z. +* `video_bitrate` - (Required, Int) video bitrate, 0 for origin, range 0kbps - 8000kbps. +* `acodec` - (Optional, String) default aac, not support now. +* `adapt_bitrate_percent` - (Optional, Float64) high speed mode adapt bitrate, support 0 - 0.5. +* `ai_trans_code` - (Optional, Int) enable high speed mode, default 0, 1 for enable, 0 for no. +* `audio_bitrate` - (Optional, Int) default 0, range 0 - 500. +* `bitrate_to_orig` - (Optional, Int) base on origin bitrate if origin bitrate is lower than the setting bitrate. default 0, 1 for yes, 0 for no. +* `description` - (Optional, String) template desc. +* `drm_tracks` - (Optional, String) DRM tracks, support AUDIO/SD/HD/UHD1/UHD2. +* `drm_type` - (Optional, String) DRM type, support fairplay/normalaes/widevine. +* `fps_to_orig` - (Optional, Int) base on origin fps if origin fps is lower than the setting fps. default 0, 1 for yes, 0 for no. +* `fps` - (Optional, Int) video fps, default 0, range 0 - 60. +* `gop` - (Optional, Int) gop of the video, second, default origin of the video, range 2 - 6. +* `height_to_orig` - (Optional, Int) base on origin height if origin height is lower than the setting height. default 0, 1 for yes, 0 for no. +* `height` - (Optional, Int) template height, default 0, range 0 - 3000, must be pow of 2, needed while AiTransCode = 1. +* `need_audio` - (Optional, Int) keep audio or not, default 1 for yes, 0 for no. +* `need_video` - (Optional, Int) keep video or not, default 1 for yes, 0 for no. +* `profile` - (Optional, String) quality of the video, default baseline, support baseline/main/high. +* `rotate` - (Optional, Int) roate degree, default 0, support 0/90/180/270. +* `short_edge_as_height` - (Optional, Int) let the short edge as the height. +* `vcodec` - (Optional, String) video codec, default origin, support h264/h265/origin. +* `width` - (Optional, Int) template width, default 0, range 0 - 3000, must be pow of 2. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. + + + +## Import + +css live_transcode_template can be imported using the id, e.g. +``` +$ terraform import tencentcloud_css_live_transcode_template.live_transcode_template liveTranscodeTemplate_id +``` + diff --git a/website/docs/r/css_pull_stream_task.html.markdown b/website/docs/r/css_pull_stream_task.html.markdown index 51cea4a552..bdf823a04b 100644 --- a/website/docs/r/css_pull_stream_task.html.markdown +++ b/website/docs/r/css_pull_stream_task.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "css" +subcategory: "Cloud Streaming Services(CSS)" layout: "tencentcloud" page_title: "TencentCloud: tencentcloud_css_pull_stream_task" sidebar_current: "docs-tencentcloud-resource-css_pull_stream_task" @@ -15,36 +15,15 @@ Provides a resource to create a css pull_stream_task ```hcl resource "tencentcloud_css_pull_stream_task" "pull_stream_task" { - source_type = "PullLivePushLive" - source_urls = "" - domain_name = "" - app_name = "" - stream_name = "" - start_time = "" - end_time = "" - operator = "" - push_args = "" - callback_events = "" - vod_loop_times = "" - vod_refresh_type = "" - callback_url = "" - extra_cmd = "" - comment = "" - to_url = "" - backup_source_type = "" - backup_source_url = "" - watermark_list { - picture_url = "" - x_position = "" - y_position = "" - width = "" - height = "" - location = "" - - } - status = "" - file_index = "" - offset_time = "" + source_type = "source_type" + source_urls = ["source_urls"] + domain_name = "domain_name" + app_name = "app_name" + stream_name = "stream_name" + start_time = "2022-11-16T22:09:28Z" + end_time = "2022-11-16T22:09:28Z" + operator = "admin" + comment = "comment." } ``` @@ -55,7 +34,6 @@ The following arguments are supported: * `app_name` - (Required, String) push app name. * `domain_name` - (Required, String) push domain name. * `end_time` - (Required, String) task end time. -* `operator` - (Required, String) desc operator user name. * `source_type` - (Required, String) &#39;PullLivePushLive&#39;: SourceUrls live type, &#39;PullVodPushLive&#39;: SourceUrls vod type. * `source_urls` - (Required, Set: [`String`]) Pull Source media, SourceType=PullLivePushLive only 1 value, SourceType=PullLivePushLive can input multi values. * `start_time` - (Required, String) task begin time. @@ -68,6 +46,7 @@ The following arguments are supported: * `extra_cmd` - (Optional, String) ignore_region for ignore the input region and reblance inside the server. * `file_index` - (Optional, Int) task enable or disable. * `offset_time` - (Optional, Int) task enable or disable. +* `operator` - (Optional, String) desc operator user name. * `push_args` - (Optional, String) other pushing args. * `status` - (Optional, String) task enable or disable. * `to_url` - (Optional, String) full target push url, DomainName, AppName, StreamName field must be empty. diff --git a/website/docs/r/css_watermark.html.markdown b/website/docs/r/css_watermark.html.markdown index 57798f5838..7101694130 100644 --- a/website/docs/r/css_watermark.html.markdown +++ b/website/docs/r/css_watermark.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "css" +subcategory: "Cloud Streaming Services(CSS)" layout: "tencentcloud" page_title: "TencentCloud: tencentcloud_css_watermark" sidebar_current: "docs-tencentcloud-resource-css_watermark" @@ -15,12 +15,12 @@ Provides a resource to create a css watermark ```hcl resource "tencentcloud_css_watermark" "watermark" { - picture_url = "" - watermark_name = "" - x_position = "" - y_position = "" - width = "" - height = "" + picture_url = "picture_url" + watermark_name = "watermark_name" + x_position = 0 + y_position = 0 + width = 0 + height = 0 } ``` @@ -40,7 +40,7 @@ The following arguments are supported: In addition to all arguments above, the following attributes are exported: * `id` - ID of the resource. - +* `status` - status. 0: not used, 1: used. ## Import diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb index 55dc069096..f9f8f5bdd7 100644 --- a/website/tencentcloud.erb +++ b/website/tencentcloud.erb @@ -680,6 +680,29 @@ +
  • + Cloud Streaming Services(CSS) + +
  • Cloud Virtual Machine(CVM)
  • -
  • - css - -
  • <% end %>