Skip to content

Commit 9e44844

Browse files
authored
Merge pull request #209 from 563750789/master
update demo
2 parents f7df2da + ea7c875 commit 9e44844

15 files changed

+119
-80
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.qcloud</groupId>
66
<artifactId>cos_api</artifactId>
7-
<version>5.6.220</version>
7+
<version>5.6.221</version>
88
<packaging>jar</packaging>
99
<name>cos-java-sdk</name>
1010
<description>java sdk for qcloud cos</description>

src/main/java/com/qcloud/cos/COS.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3106,7 +3106,7 @@ SelectObjectContentResult selectObjectContent(SelectObjectContentRequest selectR
31063106
/**
31073107
* GenerateDocPreviewHtmlUrl 查询账号下已开通文档预览功能的bucket
31083108
*/
3109-
String GenerateDocPreviewUrl(DocHtmlRequest docJobRequest) throws URISyntaxException;
3109+
String generateDocPreviewUrl(DocHtmlRequest docJobRequest) throws URISyntaxException;
31103110

31113111
/**
31123112
* createWebpageAuditingJob 提交网页审核任务 https://cloud.tencent.com/document/product/460/63968

src/main/java/com/qcloud/cos/COSClient.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4299,8 +4299,12 @@ public Boolean createMediaProcessBucket(MediaBucketRequest mediaBucketRequest) {
42994299
return true;
43004300
}
43014301

4302-
@Override
43034302
public String GenerateDocPreviewUrl(DocHtmlRequest docJobRequest) throws URISyntaxException {
4303+
return generateDocPreviewUrl(docJobRequest);
4304+
}
4305+
4306+
@Override
4307+
public String generateDocPreviewUrl(DocHtmlRequest docJobRequest) throws URISyntaxException {
43044308
rejectNull(docJobRequest,
43054309
"The request parameter must be specified setting the object tags");
43064310
rejectNull(docJobRequest.getBucketName(),
@@ -5212,7 +5216,7 @@ public DeleteFileMetaIndexResponse deleteFileMetaIndex(DeleteFileMetaIndexReques
52125216
rejectNull(customRequest, "The request parameter must be specified setting the object tags");
52135217

52145218
CosHttpRequest<DeleteFileMetaIndexRequest> request = createRequest(customRequest.getAppId(), "/filemeta", customRequest , HttpMethodName.DELETE);
5215-
5219+
request.addHeader("Accept", "application/json");
52165220
this.setContent(request, CIJackson.toJsonBytes(customRequest), "application/json", false);
52175221
return invoke(request, new Unmarshallers.CICommonJsonUnmarshaller<DeleteFileMetaIndexResponse>(DeleteFileMetaIndexResponse.class));
52185222
}

src/main/java/com/qcloud/cos/demo/ci/DeleteDatasetBindingDemo.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ public static void deleteDatasetBinding(COSClient client) {
2727
// 设置数据集名称,同一个账户下唯一。;是否必传:是
2828
request.setDatasetName("test");
2929
// 设置资源标识字段,表示需要与数据集绑定的资源,当前仅支持COS存储桶,字段规则:cos://<BucketName>,其中BucketName表示COS存储桶名称,例如:cos://examplebucket-1250000000;是否必传:是
30-
request.setURI("cos://examplebucket-1250000000");
31-
30+
request.setURI("cos://examplebucket-1250000000/object");
3231
DeleteDatasetBindingResponse response = client.deleteDatasetBinding(request);
3332
System.out.println(Jackson.toJsonString(response));
3433
}

src/main/java/com/qcloud/cos/demo/ci/DocJobDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public static void generateDocPreviewUrl(COSClient client) throws URISyntaxExcep
102102
request.setDstType(DocHtmlRequest.DocType.html);
103103
request.setObjectKey("1.pptx");
104104
//3.调用接口,获取任务响应对象
105-
String previewUrl = client.GenerateDocPreviewUrl(request);
105+
String previewUrl = client.generateDocPreviewUrl(request);
106106
System.out.println(previewUrl);
107107
}
108108

Lines changed: 77 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.qcloud.cos.demo.ci;
22

3+
import com.auth0.jwt.JWT;
4+
import com.auth0.jwt.JWTCreator;
5+
import com.auth0.jwt.algorithms.Algorithm;
36
import com.qcloud.cos.COSClient;
7+
import com.qcloud.cos.http.HttpMethodName;
48
import com.qcloud.cos.model.ciModel.common.MediaVod;
59
import com.qcloud.cos.model.ciModel.job.*;
610
import com.qcloud.cos.model.ciModel.job.v2.GetPlayListRequest;
@@ -9,30 +13,42 @@
913
import com.qcloud.cos.utils.Jackson;
1014

1115
import java.io.*;
16+
import java.net.URL;
17+
import java.net.URLEncoder;
1218
import java.nio.charset.StandardCharsets;
19+
import java.time.Instant;
20+
import java.time.temporal.ChronoUnit;
21+
import java.util.Date;
22+
import java.util.HashMap;
23+
import java.util.Map;
1324

1425
/**
1526
* 媒体处理 边转边播接口相关demo
1627
*/
1728
public class GeneratePlayListDemo {
29+
private static String appId = "123456789";
30+
private static String bucket = "demo-123456789";
31+
private static String objectKey = "test.m3u8";
32+
private static String expires = "3600";
33+
private static byte[] secret = "YourSecret".getBytes();
1834

1935
public static void main(String[] args) throws Exception {
2036
// 1 初始化用户身份信息(secretId, secretKey)。
2137
COSClient client = ClientUtils.getTestClient();
2238
// 2 调用要使用的方法。
23-
getPlayList(client);
39+
getPlayListSimple(client);
2440
}
2541

2642
/**
2743
* generatePlayList 提交生成播放列表任务
2844
*/
29-
public static void generatePlayList(COSClient client) {
45+
public static void generatePlayList(COSClient client) {
3046
//1.创建任务请求对象
3147
MediaJobsRequestV2 request = new MediaJobsRequestV2();
32-
request.setBucketName("demo-1234567890");
48+
request.setBucketName(bucket);
3349
//2.添加请求参数 参数详情请见api接口文档
3450
request.setTag("GeneratePlayList");
35-
request.getInput().setObject("1.mp4");
51+
request.getInput().setObject(objectKey);
3652
MediaContainerObject container = request.getOperation().getTranscode().getContainer();
3753
container.setFormat("hls");
3854
container.getClipConfig().setDuration("5");
@@ -55,51 +71,77 @@ public static void generatePlayList(COSClient client) {
5571
/**
5672
* describeMediaJob 根据jobId查询任务信息
5773
*/
58-
public static void describeMediaJob(COSClient client) {
74+
public static void describeMediaJob(COSClient client) {
5975
//1.创建任务请求对象
6076
MediaJobsRequestV2 request = new MediaJobsRequestV2();
6177
//2.添加请求参数 参数详情请见api接口文档
62-
request.setBucketName("demo-1234567890");
78+
request.setBucketName(bucket);
6379
request.setJobId("j8b360cd0142511efac6425779c0*****");
6480
//3.调用接口,获取任务响应对象
6581
MediaJobResponseV2 response = client.describeMediaJobV2(request);
6682
System.out.println(Jackson.toJsonString(response));
6783
}
6884

69-
/**
70-
* getPlayList 接口用于获取私有 M3U8 ts 资源的下载授权
71-
*/
85+
86+
7287
public static void getPlayList(COSClient client) {
73-
GetPlayListRequest request = new GetPlayListRequest();
74-
request.setBucketName("demo-1234567890");
75-
request.setObject("output/media/test.m3u8");
76-
request.setExpires("3600");
77-
try {
78-
InputStream response = client.getPlayList(request);
79-
System.out.println(inputStreamToString(response));
80-
} catch (IOException e) {
81-
e.printStackTrace();
82-
}
83-
}
88+
String bucketName = bucket;
89+
String key = objectKey;
90+
// 设置签名过期时间(可选), 若未进行设置则默认使用 ClientConfig 中的签名过期时间(1小时)
91+
Instant now = Instant.now();
92+
Instant expire = now.plus(Long.parseLong(expires), ChronoUnit.SECONDS);
93+
Date expirationDate = Date.from(expire);
94+
Map<String, String> params = new HashMap<String, String>();
95+
params.put("ci-process", "getplaylist");
96+
params.put("expires", "43200");
97+
Map<String, String> headers = new HashMap<String, String>();
8498

85-
public static String inputStreamToString(InputStream inputStream) throws IOException {
86-
if (inputStream == null) {
87-
return "";
88-
}
99+
HttpMethodName method = HttpMethodName.GET;
100+
URL url = client.generatePresignedUrl(bucketName, key, expirationDate, method, headers, params);
101+
System.out.println(url.toString());
102+
}
89103

90-
StringBuilder stringBuilder = new StringBuilder();
91-
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
92-
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
104+
public static void getPlayListSimple(COSClient client) throws UnsupportedEncodingException {
105+
String bucketName = bucket;
106+
String key = objectKey;
107+
// 设置签名过期时间(可选), 若未进行设置则默认使用 ClientConfig 中的签名过期时间(1小时)
108+
Instant now = Instant.now();
109+
Instant expire = now.plus(Long.parseLong(expires), ChronoUnit.SECONDS);
110+
Date expirationDate = Date.from(expire);
111+
String token = generateToken(appId, bucket, objectKey, secret, expirationDate);
112+
Map<String, String> params = new HashMap<String, String>();
113+
params.put("ci-process", "getplaylist");
114+
params.put("expires", "43200");
115+
params.put("token-type", "JwtToken");
116+
params.put("token", token);
117+
Map<String, String> headers = new HashMap<String, String>();
93118

94-
String line;
95-
while ((line = bufferedReader.readLine()) != null) {
96-
stringBuilder.append(line);
97-
}
119+
HttpMethodName method = HttpMethodName.GET;
120+
URL url = client.generatePresignedUrl(bucketName, key, expirationDate, method, headers, params);
121+
System.out.println(url.toString());
122+
}
98123

99-
bufferedReader.close();
100-
inputStreamReader.close();
101-
inputStream.close();
124+
public static String generateToken(String appId, String bucketId, String objectKey, byte[] secret, Date expires) throws UnsupportedEncodingException {
125+
Instant now = Instant.now();
126+
String encodedObjectKey;
127+
encodedObjectKey = URLEncoder.encode(objectKey, "UTF-8");
102128

103-
return stringBuilder.toString();
129+
Algorithm algorithm = Algorithm.HMAC256(secret);
130+
JWTCreator.Builder builder = JWT.create().withIssuer("client")
131+
.withIssuedAt(Date.from(now))
132+
.withExpiresAt(expires)
133+
.withClaim("Type", "CosCiToken")
134+
.withClaim("AppId", appId)
135+
.withClaim("BucketId", bucketId)
136+
.withClaim("Object", encodedObjectKey)
137+
.withClaim("Issuer", "client")
138+
.withClaim("IssuedTimeStamp", now.getEpochSecond())
139+
.withClaim("ExpireTimeStamp", expires.getTime() / 1000)
140+
.withClaim("UsageLimit", 20)
141+
.withClaim("ProtectSchema", "rsa1024")
142+
// .withClaim("PublicKey", "xxx")
143+
.withClaim("ProtectContentKey", 0);
144+
return builder.sign(algorithm);
104145
}
146+
105147
}

src/main/java/com/qcloud/cos/demo/ci/SearchImageDemo.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.qcloud.cos.model.ciModel.metaInsight.SearchImageResponse;
66
import com.qcloud.cos.utils.Jackson;
77

8-
import java.util.List;
98

109
/**
1110
* 图像检索 详情见https://cloud.tencent.com/document/product/460/106376

src/main/java/com/qcloud/cos/demo/ci/LiveTranscodeDemo.java renamed to src/main/java/com/qcloud/cos/demo/ci/generatePrivateM3U8UrlDemo.java

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,42 +12,29 @@
1212
import java.time.temporal.ChronoUnit;
1313
import java.util.Date;
1414

15-
public class LiveTranscodeDemo {
15+
public class generatePrivateM3U8UrlDemo {
1616
private static String appId = "123456789";
1717
private static String bucket = "demo-123456789";
1818
private static String objectKey = "test.m3u8";
1919
private static String expires = "3600";
2020
private static byte[] secret = "YourSecret".getBytes();
2121

22-
23-
public static void main(String[] args) {
24-
COSClient client = ClientUtils.getTestClient();
25-
String url = generateCosDomainPrivateM3U8Url(client);
26-
System.out.println("Generated url: " + url);
27-
}
28-
29-
public static String generateCosDomainPrivateM3U8Url(COSClient client) {
22+
public static String generateCosDomainPrivateM3U8Url(COSClient client) throws UnsupportedEncodingException {
3023
PrivateM3U8Request request = new PrivateM3U8Request();
3124
request.setBucketName(bucket);
3225
request.setObject(objectKey);
3326
request.setExpires(expires);
3427
request.setTokenType("JwtToken");
35-
String token =generateToken(appId, bucket, objectKey, secret,expires);
28+
String token = generateToken(appId, bucket, objectKey, secret,expires);
3629
request.setToken(token);
3730
return client.generateCosDomainPrivateM3U8Url(request);
3831
}
3932

40-
public static String generateToken(String appId, String bucketId, String objectKey, byte[] secret, String expires) {
41-
33+
public static String generateToken(String appId, String bucketId, String objectKey, byte[] secret, String expires) throws UnsupportedEncodingException {
4234
Instant now = Instant.now();
43-
Instant expire = now.plus(6, ChronoUnit.DAYS);
44-
35+
Instant expire = now.plus(Long.parseLong(expires), ChronoUnit.SECONDS);
4536
String encodedObjectKey;
46-
try {
47-
encodedObjectKey = URLEncoder.encode(objectKey, "UTF-8");
48-
} catch (UnsupportedEncodingException e) {
49-
throw new RuntimeException("Error encoding object key", e);
50-
}
37+
encodedObjectKey = URLEncoder.encode(objectKey, "UTF-8");
5138

5239
Algorithm algorithm = Algorithm.HMAC256(secret);
5340
JWTCreator.Builder builder = JWT.create().withIssuer("client")

src/main/java/com/qcloud/cos/http/DefaultCosHttpClient.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import com.qcloud.cos.internal.ResettableInputStream;
5858
import com.qcloud.cos.internal.SdkBufferedInputStream;
5959
import com.qcloud.cos.internal.CIWorkflowServiceRequest;
60+
import com.qcloud.cos.internal.CIServiceRequest;
6061
import com.qcloud.cos.retry.BackoffStrategy;
6162
import com.qcloud.cos.retry.RetryPolicy;
6263
import com.qcloud.cos.utils.CodecUtils;
@@ -233,7 +234,11 @@ private <X extends CosServiceRequest> HttpRequestBase buildHttpRequest(
233234
} else if (httpMethodName.equals(HttpMethodName.GET)) {
234235
httpRequestBase = new HttpGet();
235236
} else if (httpMethodName.equals(HttpMethodName.DELETE)) {
236-
httpRequestBase = new HttpEntityEnclosingDelete();
237+
if (request.getOriginalRequest() instanceof CIServiceRequest) {
238+
httpRequestBase = new HttpEntityEnclosingDelete();
239+
} else {
240+
httpRequestBase = new HttpDelete();
241+
}
237242
} else if (httpMethodName.equals(HttpMethodName.POST)) {
238243
httpRequestBase = new HttpPost();
239244
} else if (httpMethodName.equals(HttpMethodName.HEAD)) {
@@ -291,9 +296,8 @@ private <X extends CosServiceRequest> HttpRequestBase buildHttpRequest(
291296
HttpEntityEnclosingRequestBase entityRequestBase =
292297
(HttpEntityEnclosingRequestBase) httpRequestBase;
293298
entityRequestBase.setEntity(reqEntity);
294-
}
295-
296-
if ( httpMethodName.equals(HttpMethodName.DELETE)){
299+
} else if (httpMethodName.equals(HttpMethodName.DELETE) &&
300+
request.getOriginalRequest() instanceof CIServiceRequest) {
297301
HttpEntityEnclosingRequestBase entityRequestBase =
298302
(HttpEntityEnclosingDelete) httpRequestBase;
299303
entityRequestBase.setEntity(reqEntity);

src/main/java/com/qcloud/cos/internal/XmlResponsesSaxParser.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6774,14 +6774,20 @@ protected void doEndElement(String uri, String name, String qName) {
67746774
case "Score":
67756775
response.setScore(getText());
67766776
break;
6777+
case "CompressionResult":
6778+
response.setCompressionResult(getText());
6779+
break;
6780+
case "SubLabel":
6781+
response.setSubLabel(getText());
6782+
break;
67776783
default:
67786784
break;
67796785
}
67806786
} else if (in("Response", "JobsDetail", "PornInfo")) {
67816787
ParserMediaInfoUtils.ParsingAuditingCommonInfo(response.getPornInfo(), name, getText());
67826788
} else if (in("Response", "JobsDetail", "PoliticsInfo")) {
67836789
ParserMediaInfoUtils.ParsingAuditingCommonInfo(response.getPoliticsInfo(), name, getText());
6784-
} else if (in("Response", "JobsDetail", "TerroristInfo")) {
6790+
} else if (in("Response", "JobsDetail", "TerroristInfo") || in("Response", "JobsDetail", "TerrorismInfo")) {
67856791
ParserMediaInfoUtils.ParsingAuditingCommonInfo(response.getTerroristInfo(), name, getText());
67866792
} else if (in("Response", "JobsDetail", "AdsInfo")) {
67876793
ParserMediaInfoUtils.ParsingAuditingCommonInfo(response.getAdsInfo(), name, getText());

0 commit comments

Comments
 (0)