diff --git a/src/main/java/com/qcloud/cos/COS.java b/src/main/java/com/qcloud/cos/COS.java index 25e1b2df..9d3380bd 100644 --- a/src/main/java/com/qcloud/cos/COS.java +++ b/src/main/java/com/qcloud/cos/COS.java @@ -3298,6 +3298,10 @@ SelectObjectContentResult selectObjectContent(SelectObjectContentRequest selectR MediaTemplateResponseV2 createMediaTemplateV2(MediaTemplateRequestV2 request); ImageOCRResponse imageOCR(ImageOCRRequest request); + + TranslationResponse createTranslationJob(TranslationRequest translationRequest); + + ImageQualityResponse AccessImageQulity(ImageQualityRequest request); } diff --git a/src/main/java/com/qcloud/cos/COSClient.java b/src/main/java/com/qcloud/cos/COSClient.java index 57cef674..bc360da9 100644 --- a/src/main/java/com/qcloud/cos/COSClient.java +++ b/src/main/java/com/qcloud/cos/COSClient.java @@ -4155,6 +4155,7 @@ public MediaListQueueResponse describeMediaQueues(MediaQueueRequest req) { addParameterIfNotNull(request, "queueIds", req.getQueueId()); addParameterIfNotNull(request, "state", req.getState()); addParameterIfNotNull(request, "pageNumber", req.getPageNumber()); + addParameterIfNotNull(request, "category", req.getCategory()); addParameterIfNotNull(request, "pageSize", req.getPageSize()); return invoke(request, new Unmarshallers.ListQueueUnmarshaller()); } @@ -4269,7 +4270,7 @@ public MediaWorkflowListResponse describeWorkflow(MediaWorkflowListRequest reque public MediaWorkflowExecutionResponse describeWorkflowExecution(MediaWorkflowListRequest request) { this.checkCIRequestCommon(request); CosHttpRequest httpRequest = this.createRequest(request.getBucketName(), "/workflowexecution/" + request.getRunId(), request, HttpMethodName.GET); - return this.invoke(httpRequest, new Unmarshallers.WorkflowExecutionUnmarshaller()); + return this.invoke(httpRequest, new Unmarshallers.CICommonUnmarshaller(MediaWorkflowExecutionResponse.class)); } @Override @@ -5757,5 +5758,25 @@ private void preflightObj(UploadPartRequest uploadPartRequest) throws CosClientE invoke(request, voidCosResponseHandler); } } + + @Override + public TranslationResponse createTranslationJob(TranslationRequest req) { + CosHttpRequest request = createRequest(req.getBucketName(), "/jobs", req, HttpMethodName.POST); + + this.setContent(request, CIAuditingXmlFactoryV2.convertToXmlByteArray(req), "application/xml", false); + + return invoke(request, new Unmarshallers.CICommonUnmarshaller(TranslationResponse.class)); + } + + @Override + public ImageQualityResponse AccessImageQulity(ImageQualityRequest req) { + CosHttpRequest request = createRequest(req.getBucketName(), req.getObjectKey(), req, HttpMethodName.GET); + + addParameterIfNotNull(request, "ci-process", "AssessQuality"); + + request.addHeader("Accept", "application/xml"); + + return invoke(request, new Unmarshallers.CICommonUnmarshaller(ImageQualityResponse.class)); + } } diff --git a/src/main/java/com/qcloud/cos/demo/ci/FileProcessJobDemo.java b/src/main/java/com/qcloud/cos/demo/ci/FileProcessJobDemo.java index 5a655173..37424d44 100644 --- a/src/main/java/com/qcloud/cos/demo/ci/FileProcessJobDemo.java +++ b/src/main/java/com/qcloud/cos/demo/ci/FileProcessJobDemo.java @@ -69,6 +69,8 @@ public static void createFileUncompressJob(COSClient client) { FileUnCompressConfig fileUnCompressConfig = request.getOperation().getFileUnCompressConfig(); fileUnCompressConfig.setPrefix("output/"); fileUnCompressConfig.setPrefixReplaced("1"); + fileUnCompressConfig.setUnCompressKey("demo"); + fileUnCompressConfig.setListingFile(true); MediaOutputObject output = request.getOperation().getOutput(); output.setBucket("demo-1234567890"); output.setRegion("ap-chongqing"); diff --git a/src/main/java/com/qcloud/cos/demo/ci/ImageQualityDemo.java b/src/main/java/com/qcloud/cos/demo/ci/ImageQualityDemo.java new file mode 100644 index 00000000..074de7f3 --- /dev/null +++ b/src/main/java/com/qcloud/cos/demo/ci/ImageQualityDemo.java @@ -0,0 +1,29 @@ +package com.qcloud.cos.demo.ci; + +import com.qcloud.cos.COSClient; +import com.qcloud.cos.model.ciModel.job.ImageQualityRequest; +import com.qcloud.cos.model.ciModel.job.ImageQualityResponse; + +/* + * 图片质量评估相关demo https://cloud.tencent.com/document/product/460/63228 + */ +public class ImageQualityDemo { + public static void main(String[] args) { + // 1. 初始化客户端 + COSClient client = ClientUtils.getTestClient(); + assessImageQuality(client); + } + + public static void assessImageQuality(COSClient client) { + // 1. 创建请求对象 + ImageQualityRequest request = new ImageQualityRequest(); + + // 2. 设置请求参数 + request.setBucketName("demobucket-1251704708"); + request.setObjectKey("demo.jpeg"); + + // 3. 发起GET请求,返回结果 + ImageQualityResponse response = client.AccessImageQulity(request); + System.out.println(response.getRequestId()); + } +} diff --git a/src/main/java/com/qcloud/cos/demo/ci/QueueDemo.java b/src/main/java/com/qcloud/cos/demo/ci/QueueDemo.java index aaec3249..45a996ae 100644 --- a/src/main/java/com/qcloud/cos/demo/ci/QueueDemo.java +++ b/src/main/java/com/qcloud/cos/demo/ci/QueueDemo.java @@ -14,7 +14,7 @@ public static void main(String[] args) { // 1 初始化用户身份信息(secretId, secretKey)。 COSClient client = ClientUtils.getTestClient(); // 2 调用要使用的方法。 - updateMediaQueue(client); + describeMediaQueues(client); } /** @@ -26,7 +26,9 @@ public static void describeMediaQueues(COSClient client){ MediaQueueRequest request = new MediaQueueRequest(); //2.添加请求参数 参数详情请见api接口文档 request.setBucketName("DemoBucket-123456789"); - //3.调用接口,获取队列响应对象 + //3.添加返回队列类型 + request.setCategory("CateAll"); + //4.调用接口,获取队列响应对象 MediaListQueueResponse response = client.describeMediaQueues(request); System.out.println(response); } diff --git a/src/main/java/com/qcloud/cos/demo/ci/TranscodeTemplateDemo.java b/src/main/java/com/qcloud/cos/demo/ci/TranscodeTemplateDemo.java index e74a8525..8fce38d0 100644 --- a/src/main/java/com/qcloud/cos/demo/ci/TranscodeTemplateDemo.java +++ b/src/main/java/com/qcloud/cos/demo/ci/TranscodeTemplateDemo.java @@ -60,6 +60,7 @@ public static void createMediaTemplate(COSClient client) throws UnsupportedEncod transConfig.setAdjDarMethod("scale"); transConfig.setIsCheckReso("false"); transConfig.setResoAdjMethod("1"); + transConfig.setIsCheckVideoFps("true"); //2.4 添加TimeInterval对象的值 MediaTimeIntervalObject timeInterval = request.getTimeInterval(); timeInterval.setStart("0"); diff --git a/src/main/java/com/qcloud/cos/demo/ci/TranslationDemo.java b/src/main/java/com/qcloud/cos/demo/ci/TranslationDemo.java new file mode 100644 index 00000000..8675e893 --- /dev/null +++ b/src/main/java/com/qcloud/cos/demo/ci/TranslationDemo.java @@ -0,0 +1,57 @@ +package com.qcloud.cos.demo.ci; + +import com.qcloud.cos.COSClient; +import com.qcloud.cos.model.ciModel.job.TranslationInput; +import com.qcloud.cos.model.ciModel.job.TranslationOutput; +import com.qcloud.cos.model.ciModel.job.TranslationRequest; +import com.qcloud.cos.model.ciModel.job.TranslationResponse; + +/** + * 异步翻译相关demo https://cloud.tencent.com/document/product/460/84799 + */ +public class TranslationDemo { + public static void main(String[] args) { + // 1. 初始化客户端 + COSClient client = ClientUtils.getTestClient(); + + // 2. 创建翻译任务 + createTranslationJob(client); + } + +public static void createTranslationJob(COSClient client) { + // 1. 构建请求对象 + TranslationRequest request = new TranslationRequest(); + + // 2. 设置基础参数 + request.setBucketName("demobucket-1251704708"); + request.setTag("Translation"); + + // 3. 配置输入 + TranslationInput input = new TranslationInput(); + input.setObject("demo.txt"); + input.setLang("zh"); + input.setType("txt"); + request.setInput(input); + + // 4. 配置输出 + TranslationOutput output = new TranslationOutput(); + output.setRegion("ap-guangzhou"); + output.setBucket("demobucket-1251704708"); + output.setObject("translated1.txt"); + request.getOperation().setOutput(output); + + // 5. 配置翻译参数 + request.getOperation().getTranslation().setLang("en"); + request.getOperation().getTranslation().setType("txt"); + + // 6. 配置其他参数 + request.getOperation().setJobLevel("0"); + request.getOperation().setUserData("userData"); + + request.setCallBack("http://xxxx.xxxx.xxxx:xxxx"); + request.setCallBackFormat("JSON"); + + TranslationResponse response = client.createTranslationJob(request); + System.out.println(response.getJobId()); +} +} diff --git a/src/main/java/com/qcloud/cos/demo/ci/WorkFlowDemo.java b/src/main/java/com/qcloud/cos/demo/ci/WorkFlowDemo.java index 068f2d75..0930c1f9 100644 --- a/src/main/java/com/qcloud/cos/demo/ci/WorkFlowDemo.java +++ b/src/main/java/com/qcloud/cos/demo/ci/WorkFlowDemo.java @@ -16,7 +16,7 @@ public static void main(String[] args) { // 1 初始化用户身份信息(secretId, secretKey)。 COSClient client = ClientUtils.getTestClient(); // 2 调用要使用的方法。 - triggerWorkflowList(client); + describeWorkflowExecution(client); } /** diff --git a/src/main/java/com/qcloud/cos/demo/ci/generatePrivateM3U8UrlDemo.java b/src/main/java/com/qcloud/cos/demo/ci/generatePrivateM3U8UrlDemo.java index ec24e7cf..f3f9d75b 100644 --- a/src/main/java/com/qcloud/cos/demo/ci/generatePrivateM3U8UrlDemo.java +++ b/src/main/java/com/qcloud/cos/demo/ci/generatePrivateM3U8UrlDemo.java @@ -17,6 +17,7 @@ public class generatePrivateM3U8UrlDemo { private static String bucket = "demo-123456789"; private static String objectKey = "test.m3u8"; private static String expires = "3600"; + // https://console.cloud.tencent.com/cos/bucket?bucket=桶名®ion=地域&type=ci&anchorType=video 获取播放密钥 private static byte[] secret = "YourSecret".getBytes(); public static String generateCosDomainPrivateM3U8Url(COSClient client) throws UnsupportedEncodingException { diff --git a/src/main/java/com/qcloud/cos/internal/RequestXmlFactory.java b/src/main/java/com/qcloud/cos/internal/RequestXmlFactory.java index bcb9d1c1..ae337411 100644 --- a/src/main/java/com/qcloud/cos/internal/RequestXmlFactory.java +++ b/src/main/java/com/qcloud/cos/internal/RequestXmlFactory.java @@ -18,10 +18,6 @@ package com.qcloud.cos.internal; -import static com.qcloud.cos.model.ciModel.xml.CIMediaXmlFactory.addAigcMetadata; -import static com.qcloud.cos.model.ciModel.xml.CIMediaXmlFactory.addCallBackKafkaConfig; -import static com.qcloud.cos.model.ciModel.xml.CIMediaXmlFactory.addCallBackMqConfig; - import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; import java.util.Collections; @@ -346,7 +342,7 @@ public static byte[] convertToXmlByteArray(MediaJobsRequest request) { MediaJobOperation operation = request.getOperation(); xml.start("Operation"); - addIfNotNull(xml,"TemplateId",operation.getTemplateId()); + addIfNotNull(xml, "TemplateId", operation.getTemplateId()); List watermarkTemplateId = operation.getWatermarkTemplateId(); if (watermarkTemplateId.size() != 0) { @@ -397,20 +393,20 @@ public static byte[] convertToXmlByteArray(MediaJobsRequest request) { } MediaConcatTemplateObject mediaConcatTemplate = operation.getMediaConcatTemplate(); - if (CheckObjectUtils.objIsNotValid(mediaConcatTemplate)){ + if (CheckObjectUtils.objIsNotValid(mediaConcatTemplate)) { xml.start("ConcatTemplate"); List concatFragmentList = mediaConcatTemplate.getConcatFragmentList(); for (MediaConcatFragmentObject concatFragment : concatFragmentList) { xml.start("ConcatFragment"); - addIfNotNull(xml,"Mode",concatFragment.getMode()); - addIfNotNull(xml,"Url",concatFragment.getUrl()); + addIfNotNull(xml, "Mode", concatFragment.getMode()); + addIfNotNull(xml, "Url", concatFragment.getUrl()); xml.end(); } - addVideo(xml,mediaConcatTemplate.getVideo()); - addAudio(xml,mediaConcatTemplate.getAudio()); - addIfNotNull(xml,"Index",mediaConcatTemplate.getIndex()); + addVideo(xml, mediaConcatTemplate.getVideo()); + addAudio(xml, mediaConcatTemplate.getAudio()); + addIfNotNull(xml, "Index", mediaConcatTemplate.getIndex()); String format = mediaConcatTemplate.getContainer().getFormat(); - if (!StringUtils.isNullOrEmpty(format)){ + if (!StringUtils.isNullOrEmpty(format)) { xml.start("Container"); xml.start("Format").value(format).end(); xml.end(); @@ -463,26 +459,26 @@ public static byte[] convertToXmlByteArray(MediaJobsRequest request) { MediaDigitalWatermark digitalWatermark = operation.getDigitalWatermark(); if (CheckObjectUtils.objIsNotValid(digitalWatermark)) { xml.start("DigitalWatermark"); - addIfNotNull(xml, "Message",digitalWatermark.getMessage()); - addIfNotNull(xml, "Type",digitalWatermark.getType()); - addIfNotNull(xml, "Version",digitalWatermark.getVersion()); + addIfNotNull(xml, "Message", digitalWatermark.getMessage()); + addIfNotNull(xml, "Type", digitalWatermark.getType()); + addIfNotNull(xml, "Version", digitalWatermark.getVersion()); xml.end(); } ExtractDigitalWatermark extractDigitalWatermark = operation.getExtractDigitalWatermark(); if (extractDigitalWatermark.getType() != null || extractDigitalWatermark.getMessage() != null) { xml.start("ExtractDigitalWatermark"); - addIfNotNull(xml, "Message",extractDigitalWatermark.getMessage()); - addIfNotNull(xml, "Type",extractDigitalWatermark.getType()); - addIfNotNull(xml, "Version",extractDigitalWatermark.getVersion()); + addIfNotNull(xml, "Message", extractDigitalWatermark.getMessage()); + addIfNotNull(xml, "Type", extractDigitalWatermark.getType()); + addIfNotNull(xml, "Version", extractDigitalWatermark.getVersion()); xml.end(); } MediaOutputObject output = operation.getOutput(); - if (CheckObjectUtils.objIsNotValid(output)){ + if (CheckObjectUtils.objIsNotValid(output)) { xml.start("Output"); - addIfNotNull(xml,"Region",output.getRegion()); - addIfNotNull(xml,"Object",output.getObject()); - addIfNotNull(xml,"Bucket",output.getBucket()); + addIfNotNull(xml, "Region", output.getRegion()); + addIfNotNull(xml, "Object", output.getObject()); + addIfNotNull(xml, "Bucket", output.getBucket()); xml.end(); } @@ -636,7 +632,6 @@ public static byte[] convertToXmlByteArray(MediaTemplateRequest request) { addIfNotNull(xml, "ResoAdjMethod", request.getTransConfig().getResoAdjMethod()); addIfNotNull(xml, "TransMode", request.getTransConfig().getTransMode()); addIfNotNull(xml, "VideoBitrateAdjMethod", request.getTransConfig().getVideoBitrateAdjMethod()); - addAigcMetadata(xml, request.getTransConfig().getAigcMetadata()); xml.end(); addVideo(xml, request); @@ -695,13 +690,8 @@ public static byte[] convertToXmlByteArray(DocJobRequest request) { xml.start("Input"); xml.start("Object").value(docJobObject.getInput().getObject()).end(); xml.end(); - addIfNotNull(xml, "CallBack", docJobObject.getCallBack()); - addIfNotNull(xml, "CallBackFormat", docJobObject.getCallBackFormat()); - addIfNotNull(xml, "CallBackType", docJobObject.getCallBackType()); - addCallBackMqConfig(xml, docJobObject.getCallBackMqConfig()); - addCallBackKafkaConfig(xml, docJobObject.getCallBackKafkaConfig()); - if (CheckObjectUtils.objIsNotValid(docJobObject)){ + if (CheckObjectUtils.objIsNotValid(docJobObject)) { xml.start("Operation"); xml.start("Output"); MediaOutputObject output = docJobObject.getOperation().getOutput(); @@ -726,7 +716,7 @@ public static byte[] convertToXmlByteArray(DocJobRequest request) { addIfNotNull(xml, "PicPagination", docProcess.getPicPagination()); addIfNotNull(xml, "ImageDpi", docProcess.getImageDpi()); xml.end(); - addIfNotNull(xml, "UserData", docJobObject.getOperation().getUserData()); + xml.end(); } xml.end(); @@ -813,7 +803,7 @@ public static byte[] convertToXmlByteArray(AudioAuditingRequest request) { Conf conf = request.getConf(); xml.start("Conf"); String detectType = conf.getDetectType(); - addAuditingDetectType(xml,detectType); + addAuditingDetectType(xml, detectType); addIfNotNull(xml, "Callback", conf.getCallback()); addIfNotNull(xml, "CallbackVersion", conf.getCallbackVersion()); addIfNotNull(xml, "BizType", conf.getBizType()); @@ -844,7 +834,7 @@ public static byte[] convertToXmlByteArray(TextAuditingRequest request) { Conf conf = request.getConf(); xml.start("Conf"); String detectType = conf.getDetectType(); - addAuditingDetectType(xml,detectType); + addAuditingDetectType(xml, detectType); addIfNotNull(xml, "Callback", conf.getCallback()); addIfNotNull(xml, "BizType", conf.getBizType()); addIfNotNull(xml, "CallbackVersion", conf.getCallbackVersion()); @@ -869,7 +859,7 @@ public static byte[] convertToXmlByteArray(DocumentAuditingRequest request) { Conf conf = request.getConf(); xml.start("Conf"); String detectType = conf.getDetectType(); - addAuditingDetectType(xml,detectType); + addAuditingDetectType(xml, detectType); addIfNotNull(xml, "Callback", conf.getCallback()); addIfNotNull(xml, "BizType", conf.getBizType()); xml.end(); @@ -888,7 +878,7 @@ public static byte[] convertToXmlByteArray(WebpageAuditingRequest request) { Conf conf = request.getConf(); xml.start("Conf"); String detectType = conf.getDetectType(); - addAuditingDetectType(xml,detectType); + addAuditingDetectType(xml, detectType); addIfNotNull(xml, "Callback", conf.getCallback()); addIfNotNull(xml, "BizType", conf.getBizType()); addIfNotNull(xml, "ReturnHighlightHtml", conf.getReturnHighlightHtml()); @@ -912,14 +902,14 @@ public static byte[] convertToXmlByteArray(BatchImageAuditingRequest request) { addIfNotNull(xml, "Interval", inputObject.getInterval()); addIfNotNull(xml, "LargeImageDetect", inputObject.getLargeImageDetect()); addIfNotNull(xml, "Content", inputObject.getContent()); - addUserInfo(xml,inputObject.getUserInfo()); + addUserInfo(xml, inputObject.getUserInfo()); xml.end(); } Conf conf = request.getConf(); xml.start("Conf"); String detectType = conf.getDetectType(); - addAuditingDetectType(xml,detectType); + addAuditingDetectType(xml, detectType); addIfNotNull(xml, "BizType", conf.getBizType()); addIfNotNull(xml, "Async", conf.getAsync()); addIfNotNull(xml, "Callback", conf.getCallback()); @@ -929,7 +919,6 @@ public static byte[] convertToXmlByteArray(BatchImageAuditingRequest request) { return xml.getBytes(); } - private static void addIfNotNull(XmlWriter xml, String xmlTag, String value) { if (value != null) { xml.start(xmlTag).value(value).end(); @@ -944,9 +933,10 @@ private static void addIfNotNull(XmlWriter xml, String xmlTag, Object value) { private static void addVideo(XmlWriter xml, MediaTemplateRequest request) { MediaVideoObject video = request.getVideo(); - addVideo(xml,video); + addVideo(xml, video); } - private static void addVideo(XmlWriter xml, MediaVideoObject video){ + + private static void addVideo(XmlWriter xml, MediaVideoObject video) { if (CheckObjectUtils.objIsValid(video)) { return; } @@ -977,7 +967,7 @@ private static void addVideo(XmlWriter xml, MediaVideoObject video){ xml.end(); } - private static void addVideo(XmlWriter xml, MediaTranscodeVideoObject video){ + private static void addVideo(XmlWriter xml, MediaTranscodeVideoObject video) { if (CheckObjectUtils.objIsValid(video)) { return; } diff --git a/src/main/java/com/qcloud/cos/internal/cihandler/MediaWorkflowMapConverter.java b/src/main/java/com/qcloud/cos/internal/cihandler/MediaWorkflowMapConverter.java new file mode 100644 index 00000000..5196402e --- /dev/null +++ b/src/main/java/com/qcloud/cos/internal/cihandler/MediaWorkflowMapConverter.java @@ -0,0 +1,63 @@ +package com.qcloud.cos.internal.cihandler; + +import com.qcloud.cos.model.ciModel.workflow.MediaWorkflowDependency; +import com.qcloud.cos.model.ciModel.workflow.MediaWorkflowNode; +import com.thoughtworks.xstream.converters.Converter; +import com.thoughtworks.xstream.converters.MarshallingContext; +import com.thoughtworks.xstream.converters.UnmarshallingContext; +import com.thoughtworks.xstream.io.HierarchicalStreamReader; +import com.thoughtworks.xstream.io.HierarchicalStreamWriter; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * 自定义 Map 序列化 converter + */ +public class MediaWorkflowMapConverter implements Converter { + @Override + public boolean canConvert(Class type) { + return Map.class.isAssignableFrom(type); + } + + // 序列化 Map 类型 + @Override + public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { + Map map = (Map) source; + // 遍历 entry,key 作为节点名,value 作为节点值 + for (Map.Entry entry : map.entrySet()) { + writer.startNode(entry.getKey()); + context.convertAnother(entry.getValue()); + writer.endNode(); + } + } + + @Override + public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { + String mapNodeName = reader.getNodeName(); // e.g. "Dependencies" or "Nodes" + Map map = new LinkedHashMap<>(); + + while (reader.hasMoreChildren()) { + reader.moveDown(); + String key = reader.getNodeName(); + if ("Dependencies".equals(mapNodeName)) { + // Dependencies 下只有 String 类型的 value + String text = reader.getValue(); + MediaWorkflowDependency dep = new MediaWorkflowDependency(); + dep.setValue(text != null ? text.trim() : null); + map.put(key, dep); + } else if ("Nodes".equals(mapNodeName)) { + // Nodes 下是复杂对象 -> 解析为 MediaWorkflowNode + MediaWorkflowNode node = (MediaWorkflowNode) context.convertAnother(map, MediaWorkflowNode.class); + map.put(key, node); + } else { + // 其他情况 + Object value = context.convertAnother(map, Object.class); + map.put(key, value); + } + reader.moveUp(); + } + + return map; + } +} diff --git a/src/main/java/com/qcloud/cos/internal/cihandler/XStreamXmlResponsesSaxParser.java b/src/main/java/com/qcloud/cos/internal/cihandler/XStreamXmlResponsesSaxParser.java index e345ba3e..2c31a926 100644 --- a/src/main/java/com/qcloud/cos/internal/cihandler/XStreamXmlResponsesSaxParser.java +++ b/src/main/java/com/qcloud/cos/internal/cihandler/XStreamXmlResponsesSaxParser.java @@ -26,6 +26,9 @@ static XStream initXStream(Class cls) { //对指定的类使用Annotations 进行序列化 xstream.processAnnotations(cls); xstream.addPermission(AnyTypePermission.ANY); + //添加 Map 类型converter + xstream.registerConverter(new MediaWorkflowMapConverter()); + Field[] fields = CosServiceRequest.class.getDeclaredFields(); for (Field field : fields) { xstream.omitField(CosServiceRequest.class, field.getName()); diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/FileUnCompressConfig.java b/src/main/java/com/qcloud/cos/model/ciModel/job/FileUnCompressConfig.java index 31a79691..f114244c 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/job/FileUnCompressConfig.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/FileUnCompressConfig.java @@ -13,6 +13,8 @@ public class FileUnCompressConfig { private String mode; @XStreamAlias("DownloadConfig") private DownloadConfig downloadConfig; + @XStreamAlias("ListingFile") + private Boolean ListingFile; public String getUnCompressKey() { return unCompressKey; @@ -57,6 +59,14 @@ public void setPrefixReplaced(String prefixReplaced) { this.prefixReplaced = prefixReplaced; } + public Boolean getListingFile() { + return ListingFile; + } + + public void setListingFile(Boolean listingFile) { + ListingFile = listingFile; + } + @Override public String toString() { final StringBuffer sb = new StringBuffer("FileUnCompressConfig{"); diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/ImageQualityRequest.java b/src/main/java/com/qcloud/cos/model/ciModel/job/ImageQualityRequest.java new file mode 100644 index 00000000..74963133 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/ImageQualityRequest.java @@ -0,0 +1,38 @@ +package com.qcloud.cos.model.ciModel.job; + +import com.qcloud.cos.internal.CosServiceRequest; + +import java.io.Serializable; + +public class ImageQualityRequest extends CosServiceRequest implements Serializable { + + private String bucketName; + + private String objectKey; + + private String ciProcess = "AssessQuality"; + + public String getObjectKey() { + return objectKey; + } + + public void setObjectKey(String objectKey) { + this.objectKey = objectKey; + } + + public String getCiProcess() { + return ciProcess; + } + + public void setCiProcess(String ciProcess) { + this.ciProcess = ciProcess; + } + + public String getBucketName() { + return bucketName; + } + + public void setBucketName(String bucketName) { + this.bucketName = bucketName; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/ImageQualityResponse.java b/src/main/java/com/qcloud/cos/model/ciModel/job/ImageQualityResponse.java new file mode 100644 index 00000000..7079fea5 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/ImageQualityResponse.java @@ -0,0 +1,124 @@ +package com.qcloud.cos.model.ciModel.job; + +import com.qcloud.cos.internal.CIServiceRequest; +import com.thoughtworks.xstream.annotations.XStreamAlias; + +import java.io.Serializable; + +@XStreamAlias("Response") +public class ImageQualityResponse extends CIServiceRequest implements Serializable { + + @XStreamAlias("LongImage") + private Boolean longImage; + + @XStreamAlias("BlackAndWhite") + private Boolean blackAndWhite; + + @XStreamAlias("SmallImage") + private Boolean smallImage; + + @XStreamAlias("BigImage") + private Boolean bigImage; + + @XStreamAlias("PureImage") + private Boolean pureImage; + + @XStreamAlias("ClarityScore") + private Integer clarityScore; + + @XStreamAlias("AestheticScore") + private Integer aestheticScore; + + @XStreamAlias("LowQualityScore") + private Integer lowQualityScore; + + @XStreamAlias("RequestId") + private String requestId; + + public Boolean getLongImage() { + return longImage; + } + + public void setLongImage(Boolean longImage) { + this.longImage = longImage; + } + + public Boolean getBlackAndWhite() { + return blackAndWhite; + } + + public void setBlackAndWhite(Boolean blackAndWhite) { + this.blackAndWhite = blackAndWhite; + } + + public Boolean getSmallImage() { + return smallImage; + } + + public void setSmallImage(Boolean smallImage) { + this.smallImage = smallImage; + } + + public Boolean getBigImage() { + return bigImage; + } + + public void setBigImage(Boolean bigImage) { + this.bigImage = bigImage; + } + + public Boolean getPureImage() { + return pureImage; + } + + public void setPureImage(Boolean pureImage) { + this.pureImage = pureImage; + } + + public Integer getClarityScore() { + return clarityScore; + } + + public void setClarityScore(Integer clarityScore) { + this.clarityScore = clarityScore; + } + + public Integer getAestheticScore() { + return aestheticScore; + } + + public void setAestheticScore(Integer aestheticScore) { + this.aestheticScore = aestheticScore; + } + + public Integer getLowQualityScore() { + return lowQualityScore; + } + + public void setLowQualityScore(Integer lowQualityScore) { + this.lowQualityScore = lowQualityScore; + } + + public String getRequestId() { + return requestId; + } + + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + @Override + public String toString() { + return "ImageQualityResponse{" + + "longImage=" + longImage + + ", blackAndWhite=" + blackAndWhite + + ", smallImage=" + smallImage + + ", bigImage=" + bigImage + + ", pureImage=" + pureImage + + ", clarityScore=" + clarityScore + + ", aestheticScore=" + aestheticScore + + ", lowQualityScore=" + lowQualityScore + + ", requestId='" + requestId + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/JobsDetail.java b/src/main/java/com/qcloud/cos/model/ciModel/job/JobsDetail.java new file mode 100644 index 00000000..74d738e9 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/JobsDetail.java @@ -0,0 +1,136 @@ +package com.qcloud.cos.model.ciModel.job; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + + +@XStreamAlias("JobsDetail") +public class JobsDetail { + @XStreamAlias("JobId") + private String jobId; + @XStreamAlias("Code") + private String code; + @XStreamAlias("Message") + private String message; + @XStreamAlias("State") + private String state; + @XStreamAlias("CreationTime") + private String creationTime; + @XStreamAlias("StartTime") + private String startTime; + @XStreamAlias("EndTime") + private String endTime; + @XStreamAlias("QueueId") + private String queueId; + @XStreamAlias("Tag") + private String tag; + @XStreamAlias("Input") + private TranslationInput input; + @XStreamAlias("Operation") + private TranslationOperation operation; + + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getCreationTime() { + return creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getQueueId() { + return queueId; + } + + public void setQueueId(String queueId) { + this.queueId = queueId; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public TranslationInput getInput() { + return input; + } + + public void setInput(TranslationInput input) { + this.input = input; + } + + public TranslationOperation getOperation() { + return operation; + } + + public void setOperation(TranslationOperation operation) { + this.operation = operation; + } + + @Override + public String toString() { + return "JobsDetail{" + + "jobId='" + jobId + '\'' + + ", code='" + code + '\'' + + ", message='" + message + '\'' + + ", state='" + state + '\'' + + ", creationTime='" + creationTime + '\'' + + ", startTime='" + startTime + '\'' + + ", endTime='" + endTime + '\'' + + ", queueId='" + queueId + '\'' + + ", tag='" + tag + '\'' + + ", input=" + input + + ", operation=" + operation + + '}'; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/MediaContainerObject.java b/src/main/java/com/qcloud/cos/model/ciModel/job/MediaContainerObject.java index 0d27b1c3..4190c57b 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/job/MediaContainerObject.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/MediaContainerObject.java @@ -25,6 +25,9 @@ public void setFormat(String format) { } public MediaClipConfig getClipConfig() { + if (clipConfig == null) { + clipConfig = new MediaClipConfig(); + } return clipConfig; } diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/MediaTransConfigObject.java b/src/main/java/com/qcloud/cos/model/ciModel/job/MediaTransConfigObject.java index 04b0d0e6..6e2f80d5 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/job/MediaTransConfigObject.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/MediaTransConfigObject.java @@ -57,6 +57,20 @@ public class MediaTransConfigObject implements Serializable { */ @XStreamAlias("DeleteMetadata") private String deleteMetadata; + /** + * 是否检查视频帧率 + * true、false + * 当为 false 时,按照配置参数转码 + */ + @XStreamAlias("IsCheckVideoFps") + private String isCheckVideoFps; + /** + * 视频帧率调整方式 + * IsCheckVideoFps 为 true 时生效,取值0、1; + * 当输出视频帧率大于原视频帧率时,0表示使用原视频帧率;1表示返回转码失败 + */ + @XStreamAlias("VideoFpsAdjMethod") + private String videoFpsAdjMethod; /** * 是否开启 HDR 转 SDR true/false */ @@ -205,6 +219,22 @@ public String getTranscodeIndex() { return transcodeIndex; } + public String getIsCheckVideoFps() { + return isCheckVideoFps; + } + + public void setIsCheckVideoFps(String isCheckVideoFps) { + this.isCheckVideoFps = isCheckVideoFps; + } + + public String getVideoFpsAdjMethod() { + return videoFpsAdjMethod; + } + + public void setVideoFpsAdjMethod(String videoFpsAdjMethod) { + this.videoFpsAdjMethod = videoFpsAdjMethod; + } + public void setTranscodeIndex(String transcodeIndex) { this.transcodeIndex = transcodeIndex; } @@ -239,6 +269,8 @@ public String toString() { sb.append(", cosTag='").append(cosTag).append('\''); sb.append(", transcodeIndex='").append(transcodeIndex).append('\''); sb.append(", aigcMetadata='").append(aigcMetadata).append('\''); + sb.append(", isCheckVideoFps='").append(isCheckVideoFps).append('\''); + sb.append(", videoFpsAdjMethod='").append(videoFpsAdjMethod).append('\''); sb.append('}'); return sb.toString(); } diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/OperationTranslation.java b/src/main/java/com/qcloud/cos/model/ciModel/job/OperationTranslation.java new file mode 100644 index 00000000..d26350f8 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/OperationTranslation.java @@ -0,0 +1,28 @@ +package com.qcloud.cos.model.ciModel.job; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Translation") +public class OperationTranslation { + @XStreamAlias("Lang") + private String lang; + + @XStreamAlias("Type") + private String type; + + public String getLang() { + return lang; + } + + public void setLang(String lang) { + this.lang = lang; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationInput.java b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationInput.java new file mode 100644 index 00000000..8b433bd0 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationInput.java @@ -0,0 +1,51 @@ +package com.qcloud.cos.model.ciModel.job; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Input") +public class TranslationInput { + + @XStreamAlias("Object") + private String object; + + @XStreamAlias("Lang") + private String lang; + + @XStreamAlias("Type") + private String type; + + @XStreamAlias("BasicType") + private String basicType; + + public String getObject() { + return object; + } + + public void setObject(String object) { + this.object = object; + } + + public String getLang() { + return lang; + } + + public void setLang(String lang) { + this.lang = lang; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getBasicType() { + return basicType; + } + + public void setBasicType(String basicType) { + this.basicType = basicType; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationOperation.java b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationOperation.java new file mode 100644 index 00000000..b02d65d3 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationOperation.java @@ -0,0 +1,64 @@ +package com.qcloud.cos.model.ciModel.job; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Operation") +public class TranslationOperation { + + @XStreamAlias("Output") + private TranslationOutput output; + @XStreamAlias("UserData") + private String userData; + @XStreamAlias("JobLevel") + private String jobLevel; + @XStreamAlias("NoNeedOutput") + private String noNeedOutput; + @XStreamAlias("Translation") + private OperationTranslation translation; + + public TranslationOutput getOutput() { + if (output == null) { + output = new TranslationOutput(); + } + return output; + } + + public void setOutput(TranslationOutput translationOutput) { + this.output = translationOutput; + } + + public String getUserData() { + return userData; + } + + public void setUserData(String userData) { + this.userData = userData; + } + + public String getJobLevel() { + return jobLevel; + } + + public void setJobLevel(String jobLevel) { + this.jobLevel = jobLevel; + } + + public String getNoNeedOutput() { + return noNeedOutput; + } + + public void setNoNeedOutput(String noNeedOutput) { + this.noNeedOutput = noNeedOutput; + } + + public OperationTranslation getTranslation() { + if (translation == null) { + translation = new OperationTranslation(); + } + return translation; + } + + public void setTranslation(OperationTranslation translation) { + this.translation = translation; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationOutput.java b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationOutput.java new file mode 100644 index 00000000..3b1bc8f6 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationOutput.java @@ -0,0 +1,39 @@ +package com.qcloud.cos.model.ciModel.job; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Output") +public class TranslationOutput { + @XStreamAlias("Region") + private String region; + + @XStreamAlias("Bucket") + private String bucket; + + @XStreamAlias("Object") + private String object; + + public String getObject() { + return object; + } + + public void setObject(String object) { + this.object = object; + } + + public String getBucket() { + return bucket; + } + + public void setBucket(String bucket) { + this.bucket = bucket; + } + + public String getRegion() { + return region; + } + + public void setRegion(String region) { + this.region = region; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationRequest.java b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationRequest.java new file mode 100644 index 00000000..4e5ff06c --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationRequest.java @@ -0,0 +1,90 @@ +package com.qcloud.cos.model.ciModel.job; + +import com.qcloud.cos.internal.CIServiceRequest; +import com.thoughtworks.xstream.annotations.XStreamAlias; + +import java.io.Serializable; + +@XStreamAlias("Request") +public class TranslationRequest extends CIServiceRequest implements Serializable { + + @XStreamAlias("Tag") + private String tag; + @XStreamAlias("Input") + private TranslationInput input; + @XStreamAlias("Operation") + private TranslationOperation operation; + @XStreamAlias("CallBack") + private String callBack; + @XStreamAlias("CallBackFormat") + private String callBackFormat; + @XStreamAlias("CallBackType") + private String callBackType; + @XStreamAlias("CallBackMqConfig") + private CallBackMqConfig callBackMqConfig; + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public TranslationInput getInput() { + if (input == null) { + input = new TranslationInput(); + } + return input; + } + + public void setInput(TranslationInput translationInput) { + this.input = translationInput; + } + + public TranslationOperation getOperation() { + if (operation == null) { + operation = new TranslationOperation(); + } + return operation; + } + + public void setOperation(TranslationOperation translationOperation) { + this.operation = translationOperation; + } + + public String getCallBack() { + return callBack; + } + + public void setCallBack(String callBack) { + this.callBack = callBack; + } + + public String getCallBackFormat() { + return callBackFormat; + } + + public void setCallBackFormat(String callBackFormat) { + this.callBackFormat = callBackFormat; + } + + public String getCallBackType() { + return callBackType; + } + + public void setCallBackType(String callBackType) { + this.callBackType = callBackType; + } + + public CallBackMqConfig getCallBackMqConfig() { + if (callBackMqConfig == null) { + callBackMqConfig = new CallBackMqConfig(); + } + return callBackMqConfig; + } + + public void setCallBackMqConfig(CallBackMqConfig callBackMqConfig) { + this.callBackMqConfig = callBackMqConfig; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationResponse.java b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationResponse.java new file mode 100644 index 00000000..38372100 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/job/TranslationResponse.java @@ -0,0 +1,23 @@ +package com.qcloud.cos.model.ciModel.job; + +import com.qcloud.cos.model.CiServiceResult; +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Response") +public class TranslationResponse extends CiServiceResult { + + @XStreamAlias("JobsDetail") + private JobsDetail jobsDetail; + + public String getJobId() { + return jobsDetail != null ? jobsDetail.getJobId() : null; + } + + public JobsDetail getJobsDetail() { + return jobsDetail; + } + + public void setJobsDetail(JobsDetail jobsDetail) { + this.jobsDetail = jobsDetail; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/queue/MediaQueueRequest.java b/src/main/java/com/qcloud/cos/model/ciModel/queue/MediaQueueRequest.java index e69d46e8..c22bad51 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/queue/MediaQueueRequest.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/queue/MediaQueueRequest.java @@ -24,6 +24,15 @@ public class MediaQueueRequest extends CIServiceRequest implements Serializable */ private String pageSize; private String name; + + /** + * CateAll:所有类型 + * Transcoding:媒体处理队列 + * SpeedTranscoding:媒体处理倍速转码队列 + * 默认为 Transcoding + */ + private String category; + private MediaNotifyConfig notifyConfig = new MediaNotifyConfig(); public String getQueueId() { @@ -74,6 +83,14 @@ public void setName(String name) { this.name = name; } + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + @Override public String toString() { return "MediaQueueRequest{" + diff --git a/src/main/java/com/qcloud/cos/model/ciModel/template/MediaTemplateObject.java b/src/main/java/com/qcloud/cos/model/ciModel/template/MediaTemplateObject.java index 9f2eb606..8597a71f 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/template/MediaTemplateObject.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/template/MediaTemplateObject.java @@ -136,6 +136,9 @@ public void setWatermark(MediaWatermark watermark) { } public MediaTransConfigObject getTransConfig() { + if (transConfig == null) { + transConfig = new MediaTransConfigObject(); + } return transConfig; } diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/AudioInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/AudioInfo.java new file mode 100644 index 00000000..4674bff0 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/AudioInfo.java @@ -0,0 +1,18 @@ + +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Audio") +public class AudioInfo { + @XStreamAlias("Duration") + private String duration; + + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/BasicInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/BasicInfo.java new file mode 100644 index 00000000..a1f86796 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/BasicInfo.java @@ -0,0 +1,62 @@ + +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("BasicInfo") +public class BasicInfo { + @XStreamAlias("ContentType") + private String contentType; + + @XStreamAlias("Size") + private String size; + + @XStreamAlias("ETag") + private String eTag; + + @XStreamAlias("LastModified") + private String lastModified; + + @XStreamAlias("Object") + private String object; + + public String getContentType() { + return contentType; + } + + public void setContentType(String contentType) { + this.contentType = contentType; + } + + public String getSize() { + return size; + } + + public void setSize(String size) { + this.size = size; + } + + public String geteTag() { + return eTag; + } + + public void seteTag(String eTag) { + this.eTag = eTag; + } + + public String getLastModified() { + return lastModified; + } + + public void setLastModified(String lastModified) { + this.lastModified = lastModified; + } + + public String getObject() { + return object; + } + + public void setObject(String object) { + this.object = object; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/ExtFilter.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/ExtFilter.java new file mode 100644 index 00000000..d117636c --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/ExtFilter.java @@ -0,0 +1,109 @@ + +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("ExtFilter") +public class ExtFilter { + @XStreamAlias("State") + private String state; + + @XStreamAlias("Video") + private boolean video; + + @XStreamAlias("Audio") + private boolean audio; + + @XStreamAlias("ContentType") + private boolean contentType; + + @XStreamAlias("Custom") + private boolean custom; + + @XStreamAlias("CustomExts") + private String customExts; + + @XStreamAlias("AllFile") + private boolean allFile; + + @XStreamAlias("Image") + private boolean image; + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public boolean isVideo() { + return video; + } + + public void setVideo(boolean video) { + this.video = video; + } + + public boolean isAudio() { + return audio; + } + + public void setAudio(boolean audio) { + this.audio = audio; + } + + public boolean isContentType() { + return contentType; + } + + public void setContentType(boolean contentType) { + this.contentType = contentType; + } + + public boolean isCustom() { + return custom; + } + + public void setCustom(boolean custom) { + this.custom = custom; + } + + public String getCustomExts() { + return customExts; + } + + public void setCustomExts(String customExts) { + this.customExts = customExts; + } + + public boolean isAllFile() { + return allFile; + } + + public void setAllFile(boolean allFile) { + this.allFile = allFile; + } + + public boolean isImage() { + return image; + } + + public void setImage(boolean image) { + this.image = image; + } + + @Override + public String toString() { + return "ExtFilter{" + + "state='" + state + '\'' + + ", video=" + video + + ", audio=" + audio + + ", contentType=" + contentType + + ", custom=" + custom + + ", customExts='" + customExts + '\'' + + ", allFile=" + allFile + + ", image=" + image + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/FileInfoObject.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/FileInfoObject.java new file mode 100644 index 00000000..47c681b0 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/FileInfoObject.java @@ -0,0 +1,58 @@ + +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("FileInfo") +public class FileInfoObject { + @XStreamAlias("BasicInfo") + private BasicInfo basicInfo; + + @XStreamAlias("MediaInfo") + private MediaInfo mediaInfo; + + @XStreamAlias("ImageInfo") + private ImageInfo imageInfo; + + public BasicInfo getBasicInfo() { + if (basicInfo == null) { + basicInfo = new BasicInfo(); + } + return basicInfo; + } + + public void setBasicInfo(BasicInfo basicInfo) { + this.basicInfo = basicInfo; + } + + public MediaInfo getMediaInfo() { + if (mediaInfo == null) { + mediaInfo = new MediaInfo(); + } + return mediaInfo; + } + + public void setMediaInfo(MediaInfo mediaInfo) { + this.mediaInfo = mediaInfo; + } + + public ImageInfo getImageInfo() { + if (imageInfo == null) { + imageInfo = new ImageInfo(); + } + return imageInfo; + } + + public void setImageInfo(ImageInfo imageInfo) { + this.imageInfo = imageInfo; + } + + @Override + public String toString() { + return "FileInfoObject{" + + "basicInfo=" + basicInfo + + ", mediaInfo=" + mediaInfo + + ", imageInfo=" + imageInfo + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/FormatInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/FormatInfo.java new file mode 100644 index 00000000..0c410c4e --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/FormatInfo.java @@ -0,0 +1,25 @@ + +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Format") +public class FormatInfo { + @XStreamAlias("Duration") + private String duration; + + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration; + } + + @Override + public String toString() { + return "FormatInfo{" + + "duration='" + duration + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/ImageInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/ImageInfo.java new file mode 100644 index 00000000..ac25f41b --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/ImageInfo.java @@ -0,0 +1,62 @@ + +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("ImageInfo") +public class ImageInfo { + @XStreamAlias("Format") + private String format; + + @XStreamAlias("Height") + private String height; + + @XStreamAlias("Width") + private String width; + + @XStreamAlias("Md5") + private String md5; + + @XStreamAlias("FrameCount") + private String frameCount; + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } + + public String getHeight() { + return height; + } + + public void setHeight(String height) { + this.height = height; + } + + public String getWidth() { + return width; + } + + public void setWidth(String width) { + this.width = width; + } + + public String getMd5() { + return md5; + } + + public void setMd5(String md5) { + this.md5 = md5; + } + + public String getFrameCount() { + return frameCount; + } + + public void setFrameCount(String frameCount) { + this.frameCount = frameCount; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/InputObjectInfoObject.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/InputObjectInfoObject.java new file mode 100644 index 00000000..5c9fbc27 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/InputObjectInfoObject.java @@ -0,0 +1,94 @@ +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("InputObjectInfo") +public class InputObjectInfoObject { + @XStreamAlias("Width") + private String width; + + @XStreamAlias("Height") + private String height; + + @XStreamAlias("Dar") + private String dar; + + @XStreamAlias("Duration") + private String duration; + + @XStreamAlias("Size") + private String size; + + @XStreamAlias("ImageWidth") + private String imageWidth; + + @XStreamAlias("ImageHeight") + private String imageHeight; + + @XStreamAlias("ImageDar") + private String imageDar; + + public String getWidth() { + return width; + } + + public void setWidth(String width) { + this.width = width; + } + + public String getHeight() { + return height; + } + + public void setHeight(String height) { + this.height = height; + } + + public String getDar() { + return dar; + } + + public void setDar(String dar) { + this.dar = dar; + } + + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration; + } + + public String getSize() { + return size; + } + + public void setSize(String size) { + this.size = size; + } + + public String getImageWidth() { + return imageWidth; + } + + public void setImageWidth(String imageWidth) { + this.imageWidth = imageWidth; + } + + public String getImageHeight() { + return imageHeight; + } + + public void setImageHeight(String imageHeight) { + this.imageHeight = imageHeight; + } + + public String getImageDar() { + return imageDar; + } + + public void setImageDar(String imageDar) { + this.imageDar = imageDar; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/JudgementResultObject.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/JudgementResultObject.java new file mode 100644 index 00000000..35d70316 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/JudgementResultObject.java @@ -0,0 +1,53 @@ +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("JudgementResult") +public class JudgementResultObject { + @XStreamAlias("ObjectName") + private String objectName; + + @XStreamAlias("ObjectUrl") + private String objectUrl; + + @XStreamAlias("State") + private String state; + + @XStreamAlias("InputObjectInfo") + private InputObjectInfoObject inputObjectInfo; + + public String getObjectName() { + return objectName; + } + + public void setObjectName(String objectName) { + this.objectName = objectName; + } + + public String getObjectUrl() { + return objectUrl; + } + + public void setObjectUrl(String objectUrl) { + this.objectUrl = objectUrl; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public InputObjectInfoObject getInputObjectInfo() { + if (inputObjectInfo == null) { + inputObjectInfo = new InputObjectInfoObject(); + } + return inputObjectInfo; + } + + public void setInputObjectInfo(InputObjectInfoObject inputObjectInfo) { + this.inputObjectInfo = inputObjectInfo; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaInfo.java new file mode 100644 index 00000000..ef8abafe --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaInfo.java @@ -0,0 +1,49 @@ + +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("MediaInfo") +public class MediaInfo { + @XStreamAlias("Video") + private VideoInfo video; + + @XStreamAlias("Audio") + private AudioInfo audio; + + @XStreamAlias("Format") + private FormatInfo format; + + public VideoInfo getVideo() { + if (video == null) { + video = new VideoInfo(); + } + return video; + } + + public void setVideo(VideoInfo video) { + this.video = video; + } + + public AudioInfo getAudio() { + if (audio == null) { + audio = new AudioInfo(); + } + return audio; + } + + public void setAudio(AudioInfo audio) { + this.audio = audio; + } + + public FormatInfo getFormat() { + if (format == null) { + format = new FormatInfo(); + } + return format; + } + + public void setFormat(FormatInfo format) { + this.format = format; + } +} \ No newline at end of file diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaOperation.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaOperation.java index 15663db7..ffc816b0 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaOperation.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaOperation.java @@ -1,9 +1,13 @@ package com.qcloud.cos.model.ciModel.workflow; import com.qcloud.cos.model.ciModel.common.MediaOutputObject; +import com.thoughtworks.xstream.annotations.XStreamAlias; +@XStreamAlias("Operation") public class MediaOperation { + @XStreamAlias("TemplateId") private String templateId; + @XStreamAlias("Output") private MediaOutputObject output; public MediaOutputObject getOutput() { diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTaskJudgementInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTaskJudgementInfo.java new file mode 100644 index 00000000..84874c97 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTaskJudgementInfo.java @@ -0,0 +1,41 @@ +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; +import java.util.LinkedList; + +@XStreamAlias("JudgementInfo") +public class MediaTaskJudgementInfo { + @XStreamAlias("ObjectCount") + private int objectCount; + + @XStreamImplicit(itemFieldName = "JudgementResult") + private LinkedList judgementResult; + + public int getObjectCount() { + return objectCount; + } + + public void setObjectCount(int objectCount) { + this.objectCount = objectCount; + } + + public LinkedList getJudgementResult() { + if (judgementResult == null) { + judgementResult = new LinkedList<>(); + } + return judgementResult; + } + + public void setJudgementResult(LinkedList judgementResult) { + this.judgementResult = judgementResult; + } + + @Override + public String toString() { + return "MediaTaskJudgementInfo{" + + "objectCount=" + objectCount + + ", judgementResult=" + judgementResult + + '}'; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTaskResultInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTaskResultInfo.java new file mode 100644 index 00000000..a190d7d9 --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTaskResultInfo.java @@ -0,0 +1,69 @@ +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; + +import java.util.LinkedList; + +@XStreamAlias("ResultInfo") +public class MediaTaskResultInfo { + @XStreamAlias("ObjectCount") + private String objectCount; + + @XStreamAlias("SpriteObjectCount") + private String spriteObjectCount; + + @XStreamImplicit(itemFieldName="ObjectInfo") + private LinkedList objectInfo; + + @XStreamImplicit(itemFieldName="SpriteObjectInfo") + private LinkedList spriteObjectInfo; + + public String getObjectCount() { + return objectCount; + } + + public void setObjectCount(String objectCount) { + this.objectCount = objectCount; + } + + public String getSpriteObjectCount() { + return spriteObjectCount; + } + + public void setSpriteObjectCount(String spriteObjectCount) { + this.spriteObjectCount = spriteObjectCount; + } + + public LinkedList getObjectInfo() { + if (objectInfo == null) { + objectInfo = new LinkedList<>(); + } + return objectInfo; + } + + public void setObjectInfo(LinkedList objectInfo) { + this.objectInfo = objectInfo; + } + + public LinkedList getSpriteObjectInfo() { + if (spriteObjectInfo == null) { + spriteObjectInfo = new LinkedList<>(); + } + return spriteObjectInfo; + } + + public void setSpriteObjectInfo(LinkedList spriteObjectInfo) { + this.spriteObjectInfo = spriteObjectInfo; + } + + @Override + public String toString() { + return "MediaTaskResultInfo{" + + "objectCount='" + objectCount + '\'' + + ", spriteObjectCount='" + spriteObjectCount + '\'' + + ", objectInfo=" + objectInfo + + ", spriteObjectInfo=" + spriteObjectInfo + + '}'; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTaskResultInfoObjectInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTaskResultInfoObjectInfo.java new file mode 100644 index 00000000..65370b0c --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTaskResultInfoObjectInfo.java @@ -0,0 +1,72 @@ +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("ObjectInfo") +public class MediaTaskResultInfoObjectInfo { + @XStreamAlias("ObjectName") + private String objectName; + + @XStreamAlias("ObjectUrl") + private String objectUrl; + + @XStreamAlias("InputObjectName") + private String inputObjectName; + + @XStreamAlias("Code") + private String code; + + @XStreamAlias("Message") + private String message; + + public String getObjectName() { + return objectName; + } + + public void setObjectName(String objectName) { + this.objectName = objectName; + } + + public String getObjectUrl() { + return objectUrl; + } + + public void setObjectUrl(String objectUrl) { + this.objectUrl = objectUrl; + } + + public String getInputObjectName() { + return inputObjectName; + } + + public void setInputObjectName(String inputObjectName) { + this.inputObjectName = inputObjectName; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @Override + public String toString() { + return "MediaTaskResultInfoObjectInfo{" + + "objectName='" + objectName + '\'' + + ", objectUrl='" + objectUrl + '\'' + + ", inputObjectName='" + inputObjectName + '\'' + + ", code='" + code + '\'' + + ", message='" + message + '\'' + + '}'; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTasks.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTasks.java index f1bdf206..867fb80d 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTasks.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTasks.java @@ -1,13 +1,42 @@ package com.qcloud.cos.model.ciModel.workflow; +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Tasks") public class MediaTasks { + @XStreamAlias("Type") private String type; - private String createTime; - private String endTime; + + @XStreamAlias("State") private String state; + + @XStreamAlias("JobId") private String jobId; + + @XStreamAlias("CreateTime") + private String createTime; + + @XStreamAlias("EndTime") + private String endTime; + + @XStreamAlias("Code") + private String code; + + @XStreamAlias("Message") + private String message; + + @XStreamAlias("Name") private String name; + @XStreamAlias("ResultInfo") + private MediaTaskResultInfo resultInfo; + + @XStreamAlias("JudgementInfo") + private MediaTaskJudgementInfo judgementInfo; + + @XStreamAlias("FileInfo") + private FileInfoObject fileInfo; + public String getType() { return type; } @@ -56,15 +85,69 @@ public void setName(String name) { this.name = name; } + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public MediaTaskResultInfo getResultInfo() { + if (resultInfo == null) { + resultInfo = new MediaTaskResultInfo(); + } + return resultInfo; + } + + public void setResultInfo(MediaTaskResultInfo resultInfo) { + this.resultInfo = resultInfo; + } + + public MediaTaskJudgementInfo getJudgementInfo() { + if (judgementInfo == null) { + judgementInfo = new MediaTaskJudgementInfo(); + } + return judgementInfo; + } + + public void setJudgementInfo(MediaTaskJudgementInfo judgementInfo) { + this.judgementInfo = judgementInfo; + } + + public FileInfoObject getFileInfo() { + if (fileInfo == null) { + fileInfo = new FileInfoObject(); + } + return fileInfo; + } + + public void setFileInfo(FileInfoObject fileInfo) { + this.fileInfo = fileInfo; + } + @Override public String toString() { return "MediaTasks{" + "type='" + type + '\'' + - ", createTime='" + createTime + '\'' + - ", endTime='" + endTime + '\'' + ", state='" + state + '\'' + ", jobId='" + jobId + '\'' + + ", createTime='" + createTime + '\'' + + ", endTime='" + endTime + '\'' + + ", code='" + code + '\'' + + ", message='" + message + '\'' + ", name='" + name + '\'' + + ", resultInfo=" + resultInfo + + ", judgementInfo=" + judgementInfo + + ", fileInfo=" + fileInfo + '}'; } } diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTopology.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTopology.java index d027aa7c..7791140f 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTopology.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaTopology.java @@ -1,12 +1,13 @@ package com.qcloud.cos.model.ciModel.workflow; -import java.util.HashMap; +import com.thoughtworks.xstream.annotations.XStreamAlias; import java.util.LinkedHashMap; import java.util.Map; /** * 媒体处理工作流 拓扑信息实体 */ +@XStreamAlias("Topology") public class MediaTopology { /** * 节点依赖关系 @@ -18,11 +19,13 @@ public class MediaTopology { * End * End */ + @XStreamAlias("Dependencies") private Map mediaWorkflowDependency; /** * 节点列表 */ + @XStreamAlias("Nodes") private Map mediaWorkflowNodes; public Map getMediaWorkflowDependency() { diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowDependency.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowDependency.java index 501f1d00..4b6a41d6 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowDependency.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowDependency.java @@ -1,6 +1,9 @@ package com.qcloud.cos.model.ciModel.workflow; +import com.thoughtworks.xstream.annotations.XStreamAlias; + public class MediaWorkflowDependency { + @XStreamAlias("value") private String value; public String getValue() { diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowExecutionObject.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowExecutionObject.java index c3b9ee1f..cb028121 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowExecutionObject.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowExecutionObject.java @@ -1,43 +1,55 @@ package com.qcloud.cos.model.ciModel.workflow; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; + import java.util.LinkedList; /** * 工作流请求实体类 请见:https://cloud.tencent.com/document/product/460/45947 */ +@XStreamAlias("WorkflowExecution") public class MediaWorkflowExecutionObject { /** * 工作流实例 ID */ + @XStreamAlias("RunId") private String runId; /** * 工作流 ID */ + @XStreamAlias("WorkflowId") private String workflowId; /** * 工作流名称 */ + @XStreamAlias("WorkflowName") private String workflowName; /** * 工作流实例状态 */ + @XStreamAlias("State") private String state; /** * 创建时间 */ + @XStreamAlias("CreateTime") private String createTime; /** * cos对象地址 */ + @XStreamAlias("Object") private String object; /** * 拓扑信息 */ + @XStreamAlias("Topology") private MediaTopology topology; /** * cos对象地址 */ + @XStreamImplicit(itemFieldName="Tasks") private LinkedList tasks; public String getRunId() { diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowExecutionResponse.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowExecutionResponse.java index a60cae08..8f31aa1c 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowExecutionResponse.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowExecutionResponse.java @@ -1,15 +1,19 @@ package com.qcloud.cos.model.ciModel.workflow; import com.qcloud.cos.model.CiServiceResult; +import com.thoughtworks.xstream.annotations.XStreamAlias; /** * 工作流响应实体类 请见:https://cloud.tencent.com/document/product/460/45947 */ +@XStreamAlias("Response") public class MediaWorkflowExecutionResponse extends CiServiceResult { + @XStreamAlias("RequestId") private String requestId; /** * 工作流实例详细信息 */ + @XStreamAlias("WorkflowExecution") private MediaWorkflowExecutionObject workflowExecution; public MediaWorkflowExecutionObject getWorkflowExecution() { diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowInput.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowInput.java index 3db3641e..073a9584 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowInput.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowInput.java @@ -1,9 +1,21 @@ package com.qcloud.cos.model.ciModel.workflow; +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Input") public class MediaWorkflowInput { + @XStreamAlias("QueueId") private String queueId; + + @XStreamAlias("ObjectPrefix") private String objectPrefix; + @XStreamAlias("ExtFilter") + private ExtFilter extFilter; + + @XStreamAlias("PicProcessQueueId") + private String picProcessQueueId; + public String getQueueId() { return queueId; } @@ -20,11 +32,32 @@ public void setObjectPrefix(String objectPrefix) { this.objectPrefix = objectPrefix; } + public ExtFilter getExtFilter() { + if (extFilter == null) { + extFilter = new ExtFilter(); + } + return extFilter; + } + + public void setExtFilter(ExtFilter extFilter) { + this.extFilter = extFilter; + } + + public String getPicProcessQueueId() { + return picProcessQueueId; + } + + public void setPicProcessQueueId(String picProcessQueueId) { + this.picProcessQueueId = picProcessQueueId; + } + @Override public String toString() { return "MediaWorkflowInput{" + "queueId='" + queueId + '\'' + ", objectPrefix='" + objectPrefix + '\'' + + ", extFilter=" + extFilter + + ", picProcessQueueId='" + picProcessQueueId + '\'' + '}'; } } diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowNode.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowNode.java index e0e7603d..b5dbd685 100644 --- a/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowNode.java +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/MediaWorkflowNode.java @@ -1,8 +1,16 @@ package com.qcloud.cos.model.ciModel.workflow; +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Node") public class MediaWorkflowNode { + @XStreamAlias("Type") private String type; + + @XStreamAlias("Operation") private MediaOperation operation; + + @XStreamAlias("Input") private MediaWorkflowInput input; public String getType() { diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/SpriteObjectInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/SpriteObjectInfo.java new file mode 100644 index 00000000..e438ab5a --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/SpriteObjectInfo.java @@ -0,0 +1,36 @@ +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("SpriteObjectInfo") +public class SpriteObjectInfo { + @XStreamAlias("ObjectName") + private String objectName; + + @XStreamAlias("ObjectUrl") + private String objectUrl; + + public String getObjectUrl() { + return objectUrl; + } + + public void setObjectUrl(String objectUrl) { + this.objectUrl = objectUrl; + } + + public String getObjectName() { + return objectName; + } + + public void setObjectName(String objectName) { + this.objectName = objectName; + } + + @Override + public String toString() { + return "SpriteObjectInfo{" + + "objectName='" + objectName + '\'' + + ", objectUrl='" + objectUrl + '\'' + + '}'; + } +} diff --git a/src/main/java/com/qcloud/cos/model/ciModel/workflow/VideoInfo.java b/src/main/java/com/qcloud/cos/model/ciModel/workflow/VideoInfo.java new file mode 100644 index 00000000..5a392eab --- /dev/null +++ b/src/main/java/com/qcloud/cos/model/ciModel/workflow/VideoInfo.java @@ -0,0 +1,51 @@ + +package com.qcloud.cos.model.ciModel.workflow; + +import com.thoughtworks.xstream.annotations.XStreamAlias; + +@XStreamAlias("Video") +public class VideoInfo { + @XStreamAlias("Height") + private String height; + + @XStreamAlias("Width") + private String width; + + @XStreamAlias("Dar") + private String dar; + + @XStreamAlias("Duration") + private String duration; + + public String getHeight() { + return height; + } + + public void setHeight(String height) { + this.height = height; + } + + public String getWidth() { + return width; + } + + public void setWidth(String width) { + this.width = width; + } + + public String getDar() { + return dar; + } + + public void setDar(String dar) { + this.dar = dar; + } + + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration; + } +} \ No newline at end of file diff --git a/src/test/java/com/qcloud/cos/MediaQueueTest.java b/src/test/java/com/qcloud/cos/MediaQueueTest.java index acc4a7af..00388747 100644 --- a/src/test/java/com/qcloud/cos/MediaQueueTest.java +++ b/src/test/java/com/qcloud/cos/MediaQueueTest.java @@ -16,7 +16,7 @@ public class MediaQueueTest extends AbstractCOSClientCITest { - public static final String QUEUE_NAME = "test-queue"; + public static final String QUEUE_NAME = "queue-1"; public static final String QUEUE_URL = "cloud.tencent.com"; public static final String QUEUE_STATE = "Active"; @@ -81,4 +81,20 @@ public void updateMediaQueueTest() { } + @Test + public void categoryMediaQueueTest() { + try { + if (!judgeUserInfoValid()) { + return; + } + MediaQueueRequest request = new MediaQueueRequest(); + request.setBucketName(bucket); + request.setCategory("CateAll"); + MediaListQueueResponse response = cosclient.describeMediaQueues(request); + if (response != null && !response.getQueueList().isEmpty()) { + assertTrue(response.getQueueList().size() > 1); + } + } catch (Exception e) { + } + } } diff --git a/src/test/java/com/qcloud/cos/ci/FileUnCompressTest.java b/src/test/java/com/qcloud/cos/ci/FileUnCompressTest.java new file mode 100644 index 00000000..c7d5681c --- /dev/null +++ b/src/test/java/com/qcloud/cos/ci/FileUnCompressTest.java @@ -0,0 +1,71 @@ +package com.qcloud.cos.ci; + +import com.qcloud.cos.AbstractCOSClientCITest; +import com.qcloud.cos.COSClient; +import com.qcloud.cos.ClientConfig; +import com.qcloud.cos.auth.BasicCOSCredentials; +import com.qcloud.cos.auth.COSCredentials; +import com.qcloud.cos.exception.CosServiceException; +import com.qcloud.cos.model.ciModel.common.MediaOutputObject; +import com.qcloud.cos.model.ciModel.job.FileProcessJobResponse; +import com.qcloud.cos.model.ciModel.job.FileProcessRequest; +import com.qcloud.cos.model.ciModel.job.FileProcessJobType; +import com.qcloud.cos.model.ciModel.job.FileProcessOperation; +import com.qcloud.cos.model.ciModel.job.FileUnCompressConfig; +import com.qcloud.cos.region.Region; +import com.qcloud.cos.utils.Jackson; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class FileUnCompressTest extends AbstractCOSClientCITest { + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + if (!initConfig()) { + return; + } + COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); + Region region = new Region(AbstractCOSClientCITest.region); + ClientConfig clientConfig = new ClientConfig(region); + cosclient = new COSClient(cred, clientConfig); + } + + @AfterClass + public static void tearDownAfterClass() { + AbstractCOSClientCITest.closeCosClient(); + } + + // 测试带ListingFile参数的文件解压任务创建 + @Test + public void testCreateFileUncompressJobWithListingFile() { + try { + FileProcessRequest request = new FileProcessRequest(); + request.setBucketName(bucket); + request.setTag(FileProcessJobType.FileUncompress); + + request.getInput().setObject("demo.txt.zip"); + + FileProcessOperation operation = request.getOperation(); + FileUnCompressConfig unCompressConfig = operation.getFileUnCompressConfig(); + unCompressConfig.setPrefix("output/"); + unCompressConfig.setPrefixReplaced("1"); + unCompressConfig.setListingFile(true); + + MediaOutputObject output = operation.getOutput(); + output.setBucket(bucket); + output.setRegion(AbstractCOSClientCITest.region); + + FileProcessJobResponse response; + + response = cosclient.createFileProcessJob(request); + assertNotNull(response); + assertNotNull(response.getJobDetail()); + System.out.println(Jackson.toJsonString(response)); + } catch (RuntimeException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/test/java/com/qcloud/cos/ci/ImageQualityTest.java b/src/test/java/com/qcloud/cos/ci/ImageQualityTest.java new file mode 100644 index 00000000..c9044231 --- /dev/null +++ b/src/test/java/com/qcloud/cos/ci/ImageQualityTest.java @@ -0,0 +1,77 @@ +package com.qcloud.cos.ci; + +import com.qcloud.cos.AbstractCOSClientCITest; +import com.qcloud.cos.COSClient; +import com.qcloud.cos.ClientConfig; +import com.qcloud.cos.auth.BasicCOSCredentials; +import com.qcloud.cos.auth.COSCredentials; +import com.qcloud.cos.exception.CosServiceException; +import com.qcloud.cos.model.ciModel.job.ImageQualityRequest; +import com.qcloud.cos.model.ciModel.job.ImageQualityResponse; +import com.qcloud.cos.region.Region; +import com.qcloud.cos.utils.Jackson; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class ImageQualityTest extends AbstractCOSClientCITest { + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + if (!initConfig()) { + return; + } + COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); + Region region = new Region(AbstractCOSClientCITest.region); + ClientConfig clientConfig = new ClientConfig(region); + cosclient = new COSClient(cred, clientConfig); + } + + @AfterClass + public static void tearDownAfterClass() { + AbstractCOSClientCITest.closeCosClient(); + } + + // 测试正常图片质量评估 + @Test + public void testAssessImageQuality() { + ImageQualityRequest request = new ImageQualityRequest(); + request.setBucketName(bucket); + request.setObjectKey("demo.jpeg"); + + ImageQualityResponse response = cosclient.AccessImageQulity(request); + + assertNotNull(response); + System.out.println(response); + } + + // 测试空参数 + @Test(expected = IllegalArgumentException.class) + public void testEmptyParameters() { + try { + ImageQualityRequest request = new ImageQualityRequest(); + ImageQualityResponse response = cosclient.AccessImageQulity(request); + System.out.println(Jackson.toJsonString(response)); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + // 测试无效图片路径 + @Test(expected = CosServiceException.class) + public void testInvalidImagePath() { + try { + ImageQualityRequest request = new ImageQualityRequest(); + request.setBucketName(bucket); + request.setObjectKey("non-existent-image.jpg"); + + ImageQualityResponse response = cosclient.AccessImageQulity(request); + System.out.println(Jackson.toJsonString(response)); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/test/java/com/qcloud/cos/ci/MediaTemplateTest.java b/src/test/java/com/qcloud/cos/ci/MediaTemplateTest.java index cb6ffe64..ed043cca 100644 --- a/src/test/java/com/qcloud/cos/ci/MediaTemplateTest.java +++ b/src/test/java/com/qcloud/cos/ci/MediaTemplateTest.java @@ -1,14 +1,10 @@ package com.qcloud.cos.ci; import com.qcloud.cos.AbstractCOSClientCITest; -import com.qcloud.cos.model.ciModel.template.MediaListTemplateResponse; -import com.qcloud.cos.model.ciModel.template.MediaTemplateObject; -import com.qcloud.cos.model.ciModel.template.MediaTemplateRequest; -import com.qcloud.cos.model.ciModel.template.MediaWaterMarkText; -import com.qcloud.cos.model.ciModel.template.MediaWatermark; +import com.qcloud.cos.model.ciModel.job.MediaVideoObject; +import com.qcloud.cos.model.ciModel.template.*; import com.qcloud.cos.utils.Jackson; import org.junit.AfterClass; -import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -144,4 +140,58 @@ public void updateMediaTemplateTest4() { } } + + @Test + public void createMediaTemplateWithVideoFpsCheckTest() { + try { + // 1. 创建模板请求对象 + MediaTemplateRequest request = new MediaTemplateRequest(); + + // 2. 设置基本参数 + request.setBucketName(bucket); + String uniqueName = "unit-test-fps-check-" + UUID.randomUUID(); + request.setName(uniqueName); + request.setTag("Transcode"); + + // 3. 设置Container格式 + request.getContainer().setFormat("mp4"); + + // 4. 设置Video参数 + MediaVideoObject video = request.getVideo(); + video.setCodec("H.264"); + video.setProfile("high"); + video.setBitrate("1000"); + video.setWidth("1280"); + video.setFps("30"); + video.setPreset("medium"); + video.setBufSize("1000"); + video.setMaxrate("1000"); + + // 5. 设置Audio参数 + request.getAudio().setCodec("aac"); + request.getAudio().setSamplerate("44100"); + request.getAudio().setBitrate("128"); + request.getAudio().setChannels("2"); + + // 6. 设置转码配置,新增的两个字段 + request.getTransConfig().setAdjDarMethod("scale"); + request.getTransConfig().setIsCheckReso("false"); + request.getTransConfig().setResoAdjMethod("1"); + // 6.1 新增:开启视频帧率检查 + request.getTransConfig().setIsCheckVideoFps("true"); + // 6.2 新增:帧率调整方式,0使用原帧率 + request.getTransConfig().setVideoFpsAdjMethod("0"); + + // 7. 调用接口创建模板 + MediaTemplateResponse response = cosclient.createMediaTemplate(request); + + System.out.println(response.getTemplate().getTemplateId()); + System.out.println("IsCheckVideoFps: " + response.getTemplate().getTransConfig().getIsCheckVideoFps()); + System.out.println("VideoFpsAdjMethod: " + response.getTemplate().getTransConfig().getVideoFpsAdjMethod()); + + } catch (Exception e) { + e.printStackTrace(); + } + } + } diff --git a/src/test/java/com/qcloud/cos/ci/TranslationJobTest.java b/src/test/java/com/qcloud/cos/ci/TranslationJobTest.java new file mode 100644 index 00000000..d182f354 --- /dev/null +++ b/src/test/java/com/qcloud/cos/ci/TranslationJobTest.java @@ -0,0 +1,89 @@ +package com.qcloud.cos.ci; + +import com.qcloud.cos.AbstractCOSClientCITest; +import com.qcloud.cos.COSClient; +import com.qcloud.cos.ClientConfig; +import com.qcloud.cos.auth.BasicCOSCredentials; +import com.qcloud.cos.auth.COSCredentials; +import com.qcloud.cos.model.ciModel.job.*; +import com.qcloud.cos.region.Region; +import com.qcloud.cos.utils.Jackson; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class TranslationJobTest extends AbstractCOSClientCITest { + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + if (!initConfig()) { + return; + } + COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); + Region region = new Region("ap-guangzhou"); + ClientConfig clientConfig = new ClientConfig(region); + cosclient = new COSClient(cred, clientConfig); + } + + @AfterClass + public static void tearDownAfterClass() { + AbstractCOSClientCITest.closeCosClient(); + } + + // 测试正常创建翻译任务 + @Test + public void testCreateTranslationJob() { + try { + TranslationRequest request = buildBaseRequest(); + TranslationResponse response = cosclient.createTranslationJob(request); + + assertNotNull(response); + assertNotNull(response.getJobsDetail().getJobId()); + assertEquals("Success", response.getJobsDetail().getCode()); + System.out.println("Job created: " + Jackson.toJsonString(response)); + } catch (RuntimeException e) { + e.printStackTrace(); + } + + } + + // 测试回调功能 + @Test + public void testWithCallback() { + try { + TranslationRequest request = buildBaseRequest(); + request.setCallBack("http://xxx.xx.xxx.xx:xxxx"); + request.setCallBackFormat("XML"); + + TranslationResponse response = cosclient.createTranslationJob(request); + assertNotNull(response.getJobsDetail().getJobId()); + } catch (Exception e) { + } + } + + // 构建基础请求 + private TranslationRequest buildBaseRequest() { + TranslationRequest request = new TranslationRequest(); + request.setBucketName(bucket); + request.setTag("Translation"); + + TranslationInput input = new TranslationInput(); + input.setObject("test.txt"); + input.setLang("zh"); + input.setType("txt"); + request.setInput(input); + + TranslationOutput output = new TranslationOutput(); + output.setRegion(region); + output.setBucket(bucket); + output.setObject("translated.txt"); + request.getOperation().setOutput(output); + + request.getOperation().getTranslation().setLang("en"); + request.getOperation().getTranslation().setType("txt"); + + return request; + } +}