committed by
							
								
								GitHub
							
						
					
				
				
				  
				  No known key found for this signature in database
				  
				  	
						GPG Key ID: 4AEE18F83AFDEB23
				  	
				  
				
			
		
		
		
	
				 5 changed files with 614 additions and 0 deletions
			
			
		- 
					11README.md
 - 
					303ci_media.go
 - 
					71example/CI/content_auditing/ci_video_auditing_job.go
 - 
					132example/CI/doc_process/ci_doc_process.go
 - 
					97example/CI/media_process/media_process.go
 
@ -0,0 +1,303 @@ | 
			
		|||||
 | 
				package cos | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				import ( | 
			
		||||
 | 
					"context" | 
			
		||||
 | 
					"encoding/xml" | 
			
		||||
 | 
					"net/http" | 
			
		||||
 | 
				) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type JobInput struct { | 
			
		||||
 | 
					Object string `xml:"Object,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type JobOutput struct { | 
			
		||||
 | 
					Region string `xml:"Region,omitempty"` | 
			
		||||
 | 
					Bucket string `xml:"Bucket,omitempty"` | 
			
		||||
 | 
					Object string `xml:"Object,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type Container struct { | 
			
		||||
 | 
					Format string `xml:"Format"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type Video struct { | 
			
		||||
 | 
					Codec         string `xml:"Codec"` | 
			
		||||
 | 
					Width         string `xml:"Width"` | 
			
		||||
 | 
					Height        string `xml:"Height"` | 
			
		||||
 | 
					Fps           string `xml:"Fps"` | 
			
		||||
 | 
					Remove        string `xml:"Remove"` | 
			
		||||
 | 
					Profile       string `xml:"Profile"` | 
			
		||||
 | 
					Bitrate       string `xml:"Bitrate"` | 
			
		||||
 | 
					Crf           string `xml:"Crf"` | 
			
		||||
 | 
					Gop           string `xml:"Gop"` | 
			
		||||
 | 
					Preset        string `xml:"Preset"` | 
			
		||||
 | 
					Bufsize       string `xml:"Bufsize"` | 
			
		||||
 | 
					Maxrate       string `xml:"Maxrate"` | 
			
		||||
 | 
					HlsTsTime     string `xml:"HlsTsTime"` | 
			
		||||
 | 
					Pixfmt        string `xml:"Pixfmt"` | 
			
		||||
 | 
					LongShortMode string `xml:"LongShortMode"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type TimeInterval struct { | 
			
		||||
 | 
					Start    string `xml:"Start"` | 
			
		||||
 | 
					Duration string `xml:"Duration"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type Audio struct { | 
			
		||||
 | 
					Codec      string `xml:"Codec"` | 
			
		||||
 | 
					Samplerate string `xml:"Samplerate"` | 
			
		||||
 | 
					Bitrate    string `xml:"Bitrate"` | 
			
		||||
 | 
					Channels   string `xml:"Channels"` | 
			
		||||
 | 
					Remove     string `xml:"Remove"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type TransConfig struct { | 
			
		||||
 | 
					AdjDarMethod          string `xml:"AdjDarMethod"` | 
			
		||||
 | 
					IsCheckReso           string `xml:"IsCheckReso"` | 
			
		||||
 | 
					ResoAdjMethod         string `xml:"ResoAdjMethod"` | 
			
		||||
 | 
					IsCheckVideoBitrate   string `xml:"IsCheckVideoBitrate"` | 
			
		||||
 | 
					VideoBitrateAdjMethod string `xml:"VideoBitrateAdjMethod"` | 
			
		||||
 | 
					IsCheckAudioBitrate   string `xml:"IsCheckAudioBitrate"` | 
			
		||||
 | 
					AudioBitrateAdjMethod string `xml:"AudioBitrateAdjMethod"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type Transcode struct { | 
			
		||||
 | 
					Container    *Container    `xml:"Container,omitempty"` | 
			
		||||
 | 
					Video        *Video        `xml:"Video,omitempty"` | 
			
		||||
 | 
					TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"` | 
			
		||||
 | 
					Audio        *Audio        `xml:"Audio,omitempty"` | 
			
		||||
 | 
					TransConfig  *TransConfig  `xml:"TransConfig,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type Image struct { | 
			
		||||
 | 
					Url          string `xml:"Url,omitempty"` | 
			
		||||
 | 
					Mode         string `xml:"Mode,omitempty"` | 
			
		||||
 | 
					Width        string `xml:"Width,omitempty"` | 
			
		||||
 | 
					Height       string `xml:"Height,omitempty"` | 
			
		||||
 | 
					Transparency string `xml:"Transparency,omitempty"` | 
			
		||||
 | 
					Background   string `xml:"Background,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type Text struct { | 
			
		||||
 | 
					FontSize     string `xml:"FontSize,omitempty"` | 
			
		||||
 | 
					FontType     string `xml:"FontType,omitempty"` | 
			
		||||
 | 
					FontColor    string `xml:"FontColor,omitempty"` | 
			
		||||
 | 
					Transparency string `xml:"Transparency,omitempty"` | 
			
		||||
 | 
					Text         string `xml:"Text,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type Watermark struct { | 
			
		||||
 | 
					Type      string `xml:"Type,omitempty"` | 
			
		||||
 | 
					Pos       string `xml:"Pos,omitempty"` | 
			
		||||
 | 
					LocMode   string `xml:"LocMode,omitempty"` | 
			
		||||
 | 
					Dx        string `xml:"Dx,omitempty"` | 
			
		||||
 | 
					Dy        string `xml:"Dy,omitempty"` | 
			
		||||
 | 
					StartTime string `xml:"StartTime,omitempty"` | 
			
		||||
 | 
					EndTime   string `xml:"EndTime,omitempty"` | 
			
		||||
 | 
					Image     *Image `xml:"Image,omitempty"` | 
			
		||||
 | 
					Text      *Text  `xml:"Text,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type MediaProcessJobOperation struct { | 
			
		||||
 | 
					Output              *JobOutput `xml:"Output,omitempty"` | 
			
		||||
 | 
					Transcode           *Transcode `xml:"Transcode,omitempty"` | 
			
		||||
 | 
					Watermark           *Watermark `xml:"Watermark,omitempty"` | 
			
		||||
 | 
					TemplateId          string     `xml:"TemplateId,omitempty"` | 
			
		||||
 | 
					WatermarkTemplateId []string   `xml:"WatermarkTemplateId,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type CreateMediaJobsOptions struct { | 
			
		||||
 | 
					XMLName   xml.Name                  `xml:"Request"` | 
			
		||||
 | 
					Tag       string                    `xml:"Tag,omitempty"` | 
			
		||||
 | 
					Input     *JobInput                 `xml:"Input,omitempty"` | 
			
		||||
 | 
					Operation *MediaProcessJobOperation `xml:"Operation,omitempty"` | 
			
		||||
 | 
					QueueId   string                    `xml:"QueueId,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type MediaProcessJobDetail struct { | 
			
		||||
 | 
					Code         string                    `xml:"Code,omitempty"` | 
			
		||||
 | 
					Message      string                    `xml:"Message,omitempty"` | 
			
		||||
 | 
					JobId        string                    `xml:"JobId,omitempty"` | 
			
		||||
 | 
					Tag          string                    `xml:"Tag,omitempty"` | 
			
		||||
 | 
					State        string                    `xml:"State,omitempty"` | 
			
		||||
 | 
					CreationTime string                    `xml:"CreationTime,omitempty"` | 
			
		||||
 | 
					QueueId      string                    `xml:"QueueId,omitempty"` | 
			
		||||
 | 
					Input        *JobInput                 `xml:"Input,omitempty"` | 
			
		||||
 | 
					Operation    *MediaProcessJobOperation `xml:"Operation,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type CreateMediaJobsResult struct { | 
			
		||||
 | 
					XMLName    xml.Name              `xml:"Response"` | 
			
		||||
 | 
					JobsDetail MediaProcessJobDetail `xml:"JobsDetail,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func (s *CIService) CreateMediaJobs(ctx context.Context, opt *CreateMediaJobsOptions) (*CreateMediaJobsResult, *Response, error) { | 
			
		||||
 | 
					var res CreateMediaJobsResult | 
			
		||||
 | 
					sendOpt := sendOptions{ | 
			
		||||
 | 
						baseURL: s.client.BaseURL.CIURL, | 
			
		||||
 | 
						uri:     "/jobs", | 
			
		||||
 | 
						method:  http.MethodPost, | 
			
		||||
 | 
						body:    opt, | 
			
		||||
 | 
						result:  &res, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					resp, err := s.client.send(ctx, &sendOpt) | 
			
		||||
 | 
					return &res, resp, err | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type DescribeMediaProcessJobResult struct { | 
			
		||||
 | 
					XMLName        xml.Name               `xml:"Response"` | 
			
		||||
 | 
					JobsDetail     *MediaProcessJobDetail `xml:"JobsDetail,omitempty"` | 
			
		||||
 | 
					NonExistJobIds string                 `xml:"NonExistJobIds,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func (s *CIService) DescribeMediaJobs(ctx context.Context, jobid string) (*DescribeMediaProcessJobResult, *Response, error) { | 
			
		||||
 | 
					var res DescribeMediaProcessJobResult | 
			
		||||
 | 
					sendOpt := sendOptions{ | 
			
		||||
 | 
						baseURL: s.client.BaseURL.CIURL, | 
			
		||||
 | 
						uri:     "/jobs/" + jobid, | 
			
		||||
 | 
						method:  http.MethodGet, | 
			
		||||
 | 
						result:  &res, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					resp, err := s.client.send(ctx, &sendOpt) | 
			
		||||
 | 
					return &res, resp, err | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type DescribeMediaProcessJobsOptions struct { | 
			
		||||
 | 
					QueueId           string `url:"queueId,omitempty"` | 
			
		||||
 | 
					Tag               string `url:"tag,omitempty"` | 
			
		||||
 | 
					OrderByTime       string `url:"orderByTime,omitempty"` | 
			
		||||
 | 
					NextToken         string `url:"nextToken,omitempty"` | 
			
		||||
 | 
					Size              int    `url:"size,omitempty"` | 
			
		||||
 | 
					States            string `url:"states,omitempty"` | 
			
		||||
 | 
					StartCreationTime string `url:"startCreationTime,omitempty"` | 
			
		||||
 | 
					EndCreationTime   string `url:"endCreationTime,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type DescribeMediaProcessJobsResult struct { | 
			
		||||
 | 
					XMLName    xml.Name              `xml:"Response"` | 
			
		||||
 | 
					JobsDetail []DocProcessJobDetail `xml:"JobsDetail,omitempty"` | 
			
		||||
 | 
					NextToken  string                `xml:"NextToken,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func (s *CIService) DescribeMediaProcessJobs(ctx context.Context, opt *DescribeMediaProcessJobsOptions) (*DescribeMediaProcessJobsResult, *Response, error) { | 
			
		||||
 | 
					var res DescribeMediaProcessJobsResult | 
			
		||||
 | 
					sendOpt := sendOptions{ | 
			
		||||
 | 
						baseURL:  s.client.BaseURL.CIURL, | 
			
		||||
 | 
						uri:      "/jobs", | 
			
		||||
 | 
						optQuery: opt, | 
			
		||||
 | 
						method:   http.MethodGet, | 
			
		||||
 | 
						result:   &res, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					resp, err := s.client.send(ctx, &sendOpt) | 
			
		||||
 | 
					return &res, resp, err | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type DescribeMediaProcessQueuesOptions struct { | 
			
		||||
 | 
					QueueIds   string `url:"queueIds,omitempty"` | 
			
		||||
 | 
					State      string `url:"state,omitempty"` | 
			
		||||
 | 
					PageNumber int    `url:"pageNumber,omitempty"` | 
			
		||||
 | 
					PageSize   int    `url:"pageSize,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type DescribeMediaProcessQueuesResult struct { | 
			
		||||
 | 
					XMLName      xml.Name            `xml:"Response"` | 
			
		||||
 | 
					RequestId    string              `xml:"RequestId,omitempty"` | 
			
		||||
 | 
					TotalCount   int                 `xml:"TotalCount,omitempty"` | 
			
		||||
 | 
					PageNumber   int                 `xml:"PageNumber,omitempty"` | 
			
		||||
 | 
					PageSize     int                 `xml:"PageSize,omitempty"` | 
			
		||||
 | 
					QueueList    []MediaProcessQueue `xml:"QueueList,omitempty"` | 
			
		||||
 | 
					NonExistPIDs []string            `xml:"NonExistPIDs,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type MediaProcessQueue struct { | 
			
		||||
 | 
					QueueId       string                         `xml:"QueueId,omitempty"` | 
			
		||||
 | 
					Name          string                         `xml:"Name,omitempty"` | 
			
		||||
 | 
					State         string                         `xml:"State,omitempty"` | 
			
		||||
 | 
					MaxSize       int                            `xml:"MaxSize,omitempty"` | 
			
		||||
 | 
					MaxConcurrent int                            `xml:"MaxConcurrent,omitempty"` | 
			
		||||
 | 
					UpdateTime    string                         `xml:"UpdateTime,omitempty"` | 
			
		||||
 | 
					CreateTime    string                         `xml:"CreateTime,omitempty"` | 
			
		||||
 | 
					NotifyConfig  *MediaProcessQueueNotifyConfig `xml:"NotifyConfig,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type MediaProcessQueueNotifyConfig struct { | 
			
		||||
 | 
					Url   string `xml:"Url,omitempty"` | 
			
		||||
 | 
					State string `xml:"State,omitempty"` | 
			
		||||
 | 
					Type  string `xml:"Type,omitempty"` | 
			
		||||
 | 
					Event string `xml:"Event,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func (s *CIService) DescribeMediaProcessQueues(ctx context.Context, opt *DescribeMediaProcessQueuesOptions) (*DescribeMediaProcessQueuesResult, *Response, error) { | 
			
		||||
 | 
					var res DescribeMediaProcessQueuesResult | 
			
		||||
 | 
					sendOpt := sendOptions{ | 
			
		||||
 | 
						baseURL:  s.client.BaseURL.CIURL, | 
			
		||||
 | 
						uri:      "/queue", | 
			
		||||
 | 
						optQuery: opt, | 
			
		||||
 | 
						method:   http.MethodGet, | 
			
		||||
 | 
						result:   &res, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					resp, err := s.client.send(ctx, &sendOpt) | 
			
		||||
 | 
					return &res, resp, err | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type UpdateMediaProcessQueueOptions struct { | 
			
		||||
 | 
					XMLName      xml.Name                       `xml:"Request"` | 
			
		||||
 | 
					Name         string                         `xml:"Name,omitempty"` | 
			
		||||
 | 
					QueueID      string                         `xml:"QueueID,omitempty"` | 
			
		||||
 | 
					State        string                         `xml:"State,omitempty"` | 
			
		||||
 | 
					NotifyConfig *MediaProcessQueueNotifyConfig `xml:"NotifyConfig,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type UpdateMediaProcessQueueResult struct { | 
			
		||||
 | 
					XMLName   xml.Name           `xml:"Response"` | 
			
		||||
 | 
					RequestId string             `xml:"RequestId"` | 
			
		||||
 | 
					Queue     *MediaProcessQueue `xml:"Queue"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func (s *CIService) UpdateMediaProcessQueue(ctx context.Context, opt *UpdateMediaProcessQueueOptions) (*UpdateMediaProcessQueueResult, *Response, error) { | 
			
		||||
 | 
					var res UpdateMediaProcessQueueResult | 
			
		||||
 | 
					sendOpt := sendOptions{ | 
			
		||||
 | 
						baseURL: s.client.BaseURL.CIURL, | 
			
		||||
 | 
						uri:     "/queue/" + opt.QueueID, | 
			
		||||
 | 
						body:    opt, | 
			
		||||
 | 
						method:  http.MethodPut, | 
			
		||||
 | 
						result:  &res, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					resp, err := s.client.send(ctx, &sendOpt) | 
			
		||||
 | 
					return &res, resp, err | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type DescribeMediaProcessBucketsOptions struct { | 
			
		||||
 | 
					Regions     string `url:"regions,omitempty"` | 
			
		||||
 | 
					BucketNames string `url:"bucketNames,omitempty"` | 
			
		||||
 | 
					BucketName  string `url:"bucketName,omitempty"` | 
			
		||||
 | 
					PageNumber  int    `url:"pageNumber,omitempty"` | 
			
		||||
 | 
					PageSize    int    `url:"pageSize,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				type DescribeMediaProcessBucketsResult struct { | 
			
		||||
 | 
					XMLName         xml.Name             `xml:"Response"` | 
			
		||||
 | 
					RequestId       string               `xml:"RequestId,omitempty"` | 
			
		||||
 | 
					TotalCount      int                  `xml:"TotalCount,omitempty"` | 
			
		||||
 | 
					PageNumber      int                  `xml:"PageNumber,omitempty"` | 
			
		||||
 | 
					PageSize        int                  `xml:"PageSize,omitempty"` | 
			
		||||
 | 
					MediaBucketList []MediaProcessBucket `xml:"MediaBucketList,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				type MediaProcessBucket struct { | 
			
		||||
 | 
					BucketId   string `xml:"BucketId,omitempty"` | 
			
		||||
 | 
					Region     string `xml:"Region,omitempty"` | 
			
		||||
 | 
					CreateTime string `xml:"CreateTime,omitempty"` | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func (s *CIService) DescribeMediaProcessBuckets(ctx context.Context, opt *DescribeMediaProcessBucketsOptions) (*DescribeMediaProcessBucketsResult, *Response, error) { | 
			
		||||
 | 
					var res DescribeMediaProcessBucketsResult | 
			
		||||
 | 
					sendOpt := sendOptions{ | 
			
		||||
 | 
						baseURL:  s.client.BaseURL.CIURL, | 
			
		||||
 | 
						uri:      "/mediabucket", | 
			
		||||
 | 
						optQuery: opt, | 
			
		||||
 | 
						method:   http.MethodGet, | 
			
		||||
 | 
						result:   &res, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					resp, err := s.client.send(ctx, &sendOpt) | 
			
		||||
 | 
					return &res, resp, err | 
			
		||||
 | 
				} | 
			
		||||
@ -0,0 +1,71 @@ | 
			
		|||||
 | 
				package main | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				import ( | 
			
		||||
 | 
					"context" | 
			
		||||
 | 
					"fmt" | 
			
		||||
 | 
					"net/http" | 
			
		||||
 | 
					"net/url" | 
			
		||||
 | 
					"os" | 
			
		||||
 | 
					"time" | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					"github.com/tencentyun/cos-go-sdk-v5" | 
			
		||||
 | 
					"github.com/tencentyun/cos-go-sdk-v5/debug" | 
			
		||||
 | 
				) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func log_status(err error) { | 
			
		||||
 | 
					if err == nil { | 
			
		||||
 | 
						return | 
			
		||||
 | 
					} | 
			
		||||
 | 
					if cos.IsNotFoundError(err) { | 
			
		||||
 | 
						// WARN
 | 
			
		||||
 | 
						fmt.Println("WARN: Resource is not existed") | 
			
		||||
 | 
					} else if e, ok := cos.IsCOSError(err); ok { | 
			
		||||
 | 
						fmt.Printf("ERROR: Code: %v\n", e.Code) | 
			
		||||
 | 
						fmt.Printf("ERROR: Message: %v\n", e.Message) | 
			
		||||
 | 
						fmt.Printf("ERROR: Resource: %v\n", e.Resource) | 
			
		||||
 | 
						fmt.Printf("ERROR: RequestId: %v\n", e.RequestID) | 
			
		||||
 | 
						// ERROR
 | 
			
		||||
 | 
					} else { | 
			
		||||
 | 
						fmt.Printf("ERROR: %v\n", err) | 
			
		||||
 | 
						// ERROR
 | 
			
		||||
 | 
					} | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func main() { | 
			
		||||
 | 
					bu, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") | 
			
		||||
 | 
					cu, _ := url.Parse("https://test-1259654469.ci.ap-guangzhou.myqcloud.com") | 
			
		||||
 | 
					b := &cos.BaseURL{BucketURL: bu, CIURL: cu} | 
			
		||||
 | 
					c := cos.NewClient(b, &http.Client{ | 
			
		||||
 | 
						Transport: &cos.AuthorizationTransport{ | 
			
		||||
 | 
							SecretID:  os.Getenv("COS_SECRETID"), | 
			
		||||
 | 
							SecretKey: os.Getenv("COS_SECRETKEY"), | 
			
		||||
 | 
							Transport: &debug.DebugRequestTransport{ | 
			
		||||
 | 
								RequestHeader:  true, | 
			
		||||
 | 
								RequestBody:    true, | 
			
		||||
 | 
								ResponseHeader: true, | 
			
		||||
 | 
								ResponseBody:   true, | 
			
		||||
 | 
							}, | 
			
		||||
 | 
						}, | 
			
		||||
 | 
					}) | 
			
		||||
 | 
					opt := &cos.PutVideoAuditingJobOptions{ | 
			
		||||
 | 
						InputObject: "demo.mp4", | 
			
		||||
 | 
						Conf: &cos.VideoAuditingJobConf{ | 
			
		||||
 | 
							DetectType: "Porn,Terrorism,Politics,Ads", | 
			
		||||
 | 
							Snapshot: &cos.PutVideoAuditingJobSnapshot{ | 
			
		||||
 | 
								Mode:         "Interval", | 
			
		||||
 | 
								Start:        0.5, | 
			
		||||
 | 
								TimeInterval: 50.5, | 
			
		||||
 | 
								Count:        100, | 
			
		||||
 | 
							}, | 
			
		||||
 | 
						}, | 
			
		||||
 | 
					} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					res, _, err := c.CI.PutVideoAuditingJob(context.Background(), opt) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", res) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					time.Sleep(3 * time.Second) | 
			
		||||
 | 
					res2, _, err := c.CI.GetVideoAuditingJob(context.Background(), res.JobsDetail.JobId) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", res2) | 
			
		||||
 | 
				} | 
			
		||||
@ -0,0 +1,132 @@ | 
			
		|||||
 | 
				package main | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				import ( | 
			
		||||
 | 
					"context" | 
			
		||||
 | 
					"fmt" | 
			
		||||
 | 
					"io" | 
			
		||||
 | 
					"net/http" | 
			
		||||
 | 
					"net/url" | 
			
		||||
 | 
					"os" | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					"github.com/tencentyun/cos-go-sdk-v5" | 
			
		||||
 | 
					"github.com/tencentyun/cos-go-sdk-v5/debug" | 
			
		||||
 | 
				) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func log_status(err error) { | 
			
		||||
 | 
					if err == nil { | 
			
		||||
 | 
						return | 
			
		||||
 | 
					} | 
			
		||||
 | 
					if cos.IsNotFoundError(err) { | 
			
		||||
 | 
						// WARN
 | 
			
		||||
 | 
						fmt.Println("WARN: Resource is not existed") | 
			
		||||
 | 
					} else if e, ok := cos.IsCOSError(err); ok { | 
			
		||||
 | 
						fmt.Printf("ERROR: Code: %v\n", e.Code) | 
			
		||||
 | 
						fmt.Printf("ERROR: Message: %v\n", e.Message) | 
			
		||||
 | 
						fmt.Printf("ERROR: Resource: %v\n", e.Resource) | 
			
		||||
 | 
						fmt.Printf("ERROR: RequestId: %v\n", e.RequestID) | 
			
		||||
 | 
						// ERROR
 | 
			
		||||
 | 
					} else { | 
			
		||||
 | 
						fmt.Printf("ERROR: %v\n", err) | 
			
		||||
 | 
						// ERROR
 | 
			
		||||
 | 
					} | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func main() { | 
			
		||||
 | 
					u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") | 
			
		||||
 | 
					cu, _ := url.Parse("https://test-1259654469.ci.ap-guangzhou.myqcloud.com") | 
			
		||||
 | 
					b := &cos.BaseURL{BucketURL: u, CIURL: cu} | 
			
		||||
 | 
					c := cos.NewClient(b, &http.Client{ | 
			
		||||
 | 
						Transport: &cos.AuthorizationTransport{ | 
			
		||||
 | 
							SecretID:  os.Getenv("COS_SECRETID"), | 
			
		||||
 | 
							SecretKey: os.Getenv("COS_SECRETKEY"), | 
			
		||||
 | 
							Transport: &debug.DebugRequestTransport{ | 
			
		||||
 | 
								RequestHeader: true, | 
			
		||||
 | 
								// Notice when put a large file and set need the request body, might happend out of memory error.
 | 
			
		||||
 | 
								RequestBody:    true, | 
			
		||||
 | 
								ResponseHeader: true, | 
			
		||||
 | 
								ResponseBody:   true, | 
			
		||||
 | 
							}, | 
			
		||||
 | 
						}, | 
			
		||||
 | 
					}) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					// 1、UpdateDocProcessQueue
 | 
			
		||||
 | 
					updateQueueOpt := &cos.UpdateDocProcessQueueOptions{ | 
			
		||||
 | 
						Name:    "queue-doc-process-1", | 
			
		||||
 | 
						QueueID: "p111a8dd208104ce3b11c78398f658ca8", | 
			
		||||
 | 
						State:   "Active", | 
			
		||||
 | 
						NotifyConfig: &cos.DocProcessQueueNotifyConfig{ | 
			
		||||
 | 
							State: "Off", | 
			
		||||
 | 
						}, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					updateQueueRes, _, err := c.CI.UpdateDocProcessQueue(context.Background(), updateQueueOpt) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", updateQueueRes) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					// 2、DescribeDocProcessQueues
 | 
			
		||||
 | 
					DescribeQueueOpt := &cos.DescribeDocProcessQueuesOptions{ | 
			
		||||
 | 
						QueueIds:   "p111a8dd208104ce3b11c78398f658ca8,p4318f85d2aa14c43b1dba6f9b78be9b3,aacb2bb066e9c4478834d4196e76c49d3", | 
			
		||||
 | 
						PageNumber: 1, | 
			
		||||
 | 
						PageSize:   2, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					DescribeQueueRes, _, err := c.CI.DescribeDocProcessQueues(context.Background(), DescribeQueueOpt) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", DescribeQueueRes) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					// 3、DescribeDocProcessBuckets
 | 
			
		||||
 | 
					BucketsOpt := &cos.DescribeDocProcessBucketsOptions{ | 
			
		||||
 | 
						Regions: "All", | 
			
		||||
 | 
					} | 
			
		||||
 | 
					BucketsRes, _, err := c.CI.DescribeDocProcessBuckets(context.Background(), BucketsOpt) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", BucketsRes) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					// 4、CreateDocProcessJobs
 | 
			
		||||
 | 
					createJobOpt := &cos.CreateDocProcessJobsOptions{ | 
			
		||||
 | 
						Tag: "DocProcess", | 
			
		||||
 | 
						Input: &cos.DocProcessJobInput{ | 
			
		||||
 | 
							Object: "form.pdf", | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						Operation: &cos.DocProcessJobOperation{ | 
			
		||||
 | 
							Output: &cos.DocProcessJobOutput{ | 
			
		||||
 | 
								Region: "ap-guangzhou", | 
			
		||||
 | 
								Object: "test-doc${Number}", | 
			
		||||
 | 
								Bucket: "test-1259654469", | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							DocProcess: &cos.DocProcessJobDocProcess{ | 
			
		||||
 | 
								TgtType:     "png", | 
			
		||||
 | 
								StartPage:   1, | 
			
		||||
 | 
								EndPage:     -1, | 
			
		||||
 | 
								ImageParams: "watermark/1/image/aHR0cDovL3Rlc3QwMDUtMTI1MTcwNDcwOC5jb3MuYXAtY2hvbmdxaW5nLm15cWNsb3VkLmNvbS8xLmpwZw==/gravity/southeast", | 
			
		||||
 | 
							}, | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						QueueId: "p111a8dd208104ce3b11c78398f658ca8", | 
			
		||||
 | 
					} | 
			
		||||
 | 
					createJobRes, _, err := c.CI.CreateDocProcessJobs(context.Background(), createJobOpt) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", createJobRes.JobsDetail) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					// 5、DescribeDocProcessJob
 | 
			
		||||
 | 
					DescribeJobRes, _, err := c.CI.DescribeDocProcessJob(context.Background(), createJobRes.JobsDetail.JobId) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", DescribeJobRes.JobsDetail) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					// 6、DescribeDocProcessJobs
 | 
			
		||||
 | 
					DescribeJobsOpt := &cos.DescribeDocProcessJobsOptions{ | 
			
		||||
 | 
						QueueId: "p111a8dd208104ce3b11c78398f658ca8", | 
			
		||||
 | 
						Tag:     "DocProcess", | 
			
		||||
 | 
					} | 
			
		||||
 | 
					DescribeJobsRes, _, err := c.CI.DescribeDocProcessJobs(context.Background(), DescribeJobsOpt) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", DescribeJobsRes) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					// 7、doc-preview
 | 
			
		||||
 | 
					opt := &cos.DocPreviewOptions{ | 
			
		||||
 | 
						Page: 1, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					resp, err := c.CI.DocPreview(context.Background(), "form.pdf", opt) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fd, _ := os.OpenFile("form.pdf", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0660) | 
			
		||||
 | 
					io.Copy(fd, resp.Body) | 
			
		||||
 | 
					fd.Close() | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				} | 
			
		||||
@ -0,0 +1,97 @@ | 
			
		|||||
 | 
				package main | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				import ( | 
			
		||||
 | 
					"context" | 
			
		||||
 | 
					"fmt" | 
			
		||||
 | 
					"net/http" | 
			
		||||
 | 
					"net/url" | 
			
		||||
 | 
					"os" | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					"github.com/tencentyun/cos-go-sdk-v5" | 
			
		||||
 | 
					"github.com/tencentyun/cos-go-sdk-v5/debug" | 
			
		||||
 | 
				) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func log_status(err error) { | 
			
		||||
 | 
					if err == nil { | 
			
		||||
 | 
						return | 
			
		||||
 | 
					} | 
			
		||||
 | 
					if cos.IsNotFoundError(err) { | 
			
		||||
 | 
						// WARN
 | 
			
		||||
 | 
						fmt.Println("WARN: Resource is not existed") | 
			
		||||
 | 
					} else if e, ok := cos.IsCOSError(err); ok { | 
			
		||||
 | 
						fmt.Printf("ERROR: Code: %v\n", e.Code) | 
			
		||||
 | 
						fmt.Printf("ERROR: Message: %v\n", e.Message) | 
			
		||||
 | 
						fmt.Printf("ERROR: Resource: %v\n", e.Resource) | 
			
		||||
 | 
						fmt.Printf("ERROR: RequestId: %v\n", e.RequestID) | 
			
		||||
 | 
						// ERROR
 | 
			
		||||
 | 
					} else { | 
			
		||||
 | 
						fmt.Printf("ERROR: %v\n", err) | 
			
		||||
 | 
						// ERROR
 | 
			
		||||
 | 
					} | 
			
		||||
 | 
				} | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				func main() { | 
			
		||||
 | 
					u, _ := url.Parse("https://wwj-cq-1253960454.cos.ap-chongqing.myqcloud.com") | 
			
		||||
 | 
					cu, _ := url.Parse("https://wwj-cq-1253960454.ci.ap-chongqing.myqcloud.com") | 
			
		||||
 | 
					b := &cos.BaseURL{BucketURL: u, CIURL: cu} | 
			
		||||
 | 
					c := cos.NewClient(b, &http.Client{ | 
			
		||||
 | 
						Transport: &cos.AuthorizationTransport{ | 
			
		||||
 | 
							SecretID:  os.Getenv("COS_SECRETID"), | 
			
		||||
 | 
							SecretKey: os.Getenv("COS_SECRETKEY"), | 
			
		||||
 | 
							Transport: &debug.DebugRequestTransport{ | 
			
		||||
 | 
								RequestHeader: true, | 
			
		||||
 | 
								// Notice when put a large file and set need the request body, might happend out of memory error.
 | 
			
		||||
 | 
								RequestBody:    true, | 
			
		||||
 | 
								ResponseHeader: true, | 
			
		||||
 | 
								ResponseBody:   true, | 
			
		||||
 | 
							}, | 
			
		||||
 | 
						}, | 
			
		||||
 | 
					}) | 
			
		||||
 | 
					// DescribeMediaProcessQueues
 | 
			
		||||
 | 
					DescribeQueueOpt := &cos.DescribeMediaProcessQueuesOptions{ | 
			
		||||
 | 
						QueueIds:   "", | 
			
		||||
 | 
						PageNumber: 1, | 
			
		||||
 | 
						PageSize:   2, | 
			
		||||
 | 
					} | 
			
		||||
 | 
					DescribeQueueRes, _, err := c.CI.DescribeMediaProcessQueues(context.Background(), DescribeQueueOpt) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", DescribeQueueRes) | 
			
		||||
 | 
					// CreateMediaJobs
 | 
			
		||||
 | 
					createJobOpt := &cos.CreateMediaJobsOptions{ | 
			
		||||
 | 
						Tag: "Transcode", | 
			
		||||
 | 
						Input: &cos.JobInput{ | 
			
		||||
 | 
							Object: "input/117374C.mp4", | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						Operation: &cos.MediaProcessJobOperation{ | 
			
		||||
 | 
							Output: &cos.JobOutput{ | 
			
		||||
 | 
								Region: "ap-chongqing", | 
			
		||||
 | 
								Object: "output/go_117374C.mp4", | 
			
		||||
 | 
								Bucket: "wwj-cq-1253960454", | 
			
		||||
 | 
							}, | 
			
		||||
 | 
							Transcode: &cos.Transcode{ | 
			
		||||
 | 
								Container: &cos.Container{ | 
			
		||||
 | 
									Format: "mp4", | 
			
		||||
 | 
								}, | 
			
		||||
 | 
								Video: &cos.Video{ | 
			
		||||
 | 
									Codec: "H.264", | 
			
		||||
 | 
								}, | 
			
		||||
 | 
								Audio: &cos.Audio{ | 
			
		||||
 | 
									Codec: "AAC", | 
			
		||||
 | 
								}, | 
			
		||||
 | 
								TimeInterval: &cos.TimeInterval{ | 
			
		||||
 | 
									Start:    "10", | 
			
		||||
 | 
									Duration: "", | 
			
		||||
 | 
								}, | 
			
		||||
 | 
							}, | 
			
		||||
 | 
						}, | 
			
		||||
 | 
						QueueId: "paaf4fce5521a40888a3034a5de80f6ca", | 
			
		||||
 | 
					} | 
			
		||||
 | 
					createJobRes, _, err := c.CI.CreateMediaJobs(context.Background(), createJobOpt) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", createJobRes.JobsDetail) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
					// DescribeMediaJobs
 | 
			
		||||
 | 
					DescribeJobRes, _, err := c.CI.DescribeMediaJobs(context.Background(), createJobRes.JobsDetail.JobId) | 
			
		||||
 | 
					log_status(err) | 
			
		||||
 | 
					fmt.Printf("%+v\n", DescribeJobRes.JobsDetail) | 
			
		||||
 | 
				} | 
			
		||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue