Skip to content

Commit 12e8d18

Browse files
author
ricken
committed
update ut
2 parents 49e644d + b385760 commit 12e8d18

File tree

6 files changed

+244
-224
lines changed

6 files changed

+244
-224
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
package com.tencent.qcloud.cosxml.cssg;
2+
3+
import com.tencent.cos.xml.*;
4+
import com.tencent.cos.xml.common.*;
5+
import com.tencent.cos.xml.exception.*;
6+
import com.tencent.cos.xml.listener.*;
7+
import com.tencent.cos.xml.model.*;
8+
import com.tencent.cos.xml.model.object.*;
9+
import com.tencent.cos.xml.model.bucket.*;
10+
import com.tencent.cos.xml.model.tag.*;
11+
import com.tencent.cos.xml.model.tag.pic.PicOperationRule;
12+
import com.tencent.cos.xml.model.tag.pic.PicOperations;
13+
import com.tencent.cos.xml.transfer.*;
14+
import com.tencent.qcloud.core.auth.*;
15+
import com.tencent.qcloud.core.common.*;
16+
import com.tencent.qcloud.core.http.*;
17+
import com.tencent.cos.xml.model.service.*;
18+
import com.tencent.qcloud.cosxml.cssg.BuildConfig;
19+
20+
import android.content.Context;
21+
import android.util.Log;
22+
import android.support.test.InstrumentationRegistry;
23+
24+
import org.junit.Test;
25+
26+
import java.net.*;
27+
import java.util.*;
28+
import java.nio.charset.Charset;
29+
import java.io.*;
30+
31+
public class PictureOperation {
32+
33+
private Context context;
34+
private CosXmlService cosXmlService;
35+
36+
public static class ServerCredentialProvider extends BasicLifecycleCredentialProvider {
37+
38+
@Override
39+
protected QCloudLifecycleCredentials fetchNewCredentials() throws QCloudClientException {
40+
41+
// 首先从您的临时密钥服务器获取包含了密钥信息的响应
42+
43+
// 然后解析响应,获取密钥信息
44+
String tmpSecretId = "临时密钥 secretId";
45+
String tmpSecretKey = "临时密钥 secretKey";
46+
String sessionToken = "临时密钥 TOKEN";
47+
long expiredTime = 1556183496L;//临时密钥有效截止时间戳,单位是秒
48+
49+
/*强烈建议返回服务器时间作为签名的开始时间,用来避免由于用户手机本地时间偏差过大导致的签名不正确 */
50+
// 返回服务器时间作为签名的起始时间
51+
long startTime = 1556182000L; //临时密钥有效起始时间,单位是秒
52+
53+
// 最后返回临时密钥信息对象
54+
return new SessionQCloudCredentials(tmpSecretId, tmpSecretKey, sessionToken, startTime, expiredTime);
55+
}
56+
}
57+
58+
/**
59+
* 上传时图片处理
60+
*/
61+
private void uploadWithPicOperation() {
62+
63+
// 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档
64+
TransferConfig transferConfig = new TransferConfig.Builder().build();
65+
// 初始化 TransferManager
66+
TransferManager transferManager = new TransferManager(cosXmlService,
67+
transferConfig);
68+
69+
String bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
70+
String cosPath = "exampleobject"; // 对象在存储桶中的位置标识符,即称对象键
71+
String srcPath = new File(context.getCacheDir(), "exampleobject.jpg")
72+
.toString(); //本地文件的绝对路径
73+
//若存在初始化分块上传的 UploadId,则赋值对应的 uploadId 值用于续传;否则,赋值 null
74+
String uploadId = null;
75+
76+
//.cssg-snippet-body-start:[upload-with-pic-operation]
77+
List<PicOperationRule> rules = new LinkedList<>();
78+
// 添加一条将图片转化为 png 格式的 rule,处理后的图片在存储桶中的位置标识符为 examplepngobject
79+
rules.add(new PicOperationRule("examplepngobject", "imageView2/format/png"));
80+
PicOperations picOperations = new PicOperations(true, rules);
81+
82+
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, cosPath, srcPath);
83+
putObjectRequest.setPicOperations(picOperations);
84+
85+
// 上传成功后,您将会得到 2 张图片,分别是原始图片和处理后图片
86+
COSXMLUploadTask cosxmlUploadTask = transferManager.upload(bucket, cosPath,
87+
srcPath, uploadId);
88+
//.cssg-snippet-body-end
89+
}
90+
91+
// .cssg-methods-pragma
92+
93+
private void initService() {
94+
String region = "ap-guangzhou";
95+
96+
CosXmlServiceConfig serviceConfig = new CosXmlServiceConfig.Builder()
97+
.setRegion(region)
98+
.isHttps(true) // 使用 HTTPS 请求,默认为 HTTP 请求
99+
.builder();
100+
101+
context = InstrumentationRegistry.getInstrumentation().getTargetContext();
102+
cosXmlService = new CosXmlService(context, serviceConfig, new ServerCredentialProvider());
103+
}
104+
105+
@Test
106+
public void testPictureOperation() {
107+
initService();
108+
109+
// 上传时图片处理
110+
uploadWithPicOperation();
111+
112+
// .cssg-methods-pragma
113+
}
114+
}

Demo/app/src/androidTest/java/com/tencent/qcloud/cosxml/cssg/PutObjectSSE.java

Lines changed: 4 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ protected QCloudLifecycleCredentials fetchNewCredentials() throws QCloudClientEx
5757
* 使用 COS 托管加密密钥的服务端加密(SSE-COS)保护数据
5858
*/
5959
private void putObjectSse() {
60-
//.cssg-snippet-body-start:[put-object-sse]
6160

6261
// 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档
6362
TransferConfig transferConfig = new TransferConfig.Builder().build();
@@ -72,57 +71,20 @@ private void putObjectSse() {
7271
//若存在初始化分块上传的 UploadId,则赋值对应的 uploadId 值用于续传;否则,赋值 null
7372
String uploadId = null;
7473

74+
//.cssg-snippet-body-start:[put-object-sse]
7575
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, cosPath, srcPath);
7676
// 设置使用 COS 托管加密密钥的服务端加密(SSE-COS)保护数据
7777
putObjectRequest.setCOSServerSideEncryption();
7878

7979
// 上传文件
8080
COSXMLUploadTask cosxmlUploadTask = transferManager.upload(putObjectRequest, uploadId);
81-
82-
//设置上传进度回调
83-
cosxmlUploadTask.setCosXmlProgressListener(new CosXmlProgressListener() {
84-
@Override
85-
public void onProgress(long complete, long target) {
86-
// todo Do something to update progress...
87-
}
88-
});
89-
//设置返回结果回调
90-
cosxmlUploadTask.setCosXmlResultListener(new CosXmlResultListener() {
91-
@Override
92-
public void onSuccess(CosXmlRequest request, CosXmlResult result) {
93-
COSXMLUploadTask.COSXMLUploadTaskResult cOSXMLUploadTaskResult =
94-
(COSXMLUploadTask.COSXMLUploadTaskResult) result;
95-
}
96-
97-
@Override
98-
public void onFail(CosXmlRequest request,
99-
CosXmlClientException clientException,
100-
CosXmlServiceException serviceException) {
101-
if (clientException != null) {
102-
clientException.printStackTrace();
103-
} else {
104-
serviceException.printStackTrace();
105-
}
106-
}
107-
});
108-
//设置任务状态回调, 可以查看任务过程
109-
cosxmlUploadTask.setTransferStateListener(new TransferStateListener() {
110-
@Override
111-
public void onStateChanged(TransferState state) {
112-
// todo notify transfer state
113-
}
114-
});
115-
11681
//.cssg-snippet-body-end
11782
}
11883

11984
/**
12085
* 使用客户提供的加密密钥的服务端加密 (SSE-C)保护数据
12186
*/
12287
private void putObjectSseC() {
123-
//.cssg-snippet-body-start:[put-object-sse-c]
124-
// 服务端加密密钥
125-
String customKey = "服务端加密密钥";
12688

12789
// 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档
12890
TransferConfig transferConfig = new TransferConfig.Builder().build();
@@ -137,6 +99,9 @@ private void putObjectSseC() {
13799
//若存在初始化分块上传的 UploadId,则赋值对应的 uploadId 值用于续传;否则,赋值 null
138100
String uploadId = null;
139101

102+
//.cssg-snippet-body-start:[put-object-sse-c]
103+
// 服务端加密密钥
104+
String customKey = "服务端加密密钥";
140105
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, cosPath, srcPath);
141106
// 设置使用客户提供的加密密钥的服务端加密 (SSE-C)保护数据
142107
try {
@@ -147,40 +112,6 @@ private void putObjectSseC() {
147112

148113
// 上传文件
149114
COSXMLUploadTask cosxmlUploadTask = transferManager.upload(putObjectRequest, uploadId);
150-
151-
//设置上传进度回调
152-
cosxmlUploadTask.setCosXmlProgressListener(new CosXmlProgressListener() {
153-
@Override
154-
public void onProgress(long complete, long target) {
155-
// todo Do something to update progress...
156-
}
157-
});
158-
//设置返回结果回调
159-
cosxmlUploadTask.setCosXmlResultListener(new CosXmlResultListener() {
160-
@Override
161-
public void onSuccess(CosXmlRequest request, CosXmlResult result) {
162-
COSXMLUploadTask.COSXMLUploadTaskResult cOSXMLUploadTaskResult =
163-
(COSXMLUploadTask.COSXMLUploadTaskResult) result;
164-
}
165-
166-
@Override
167-
public void onFail(CosXmlRequest request,
168-
CosXmlClientException clientException,
169-
CosXmlServiceException serviceException) {
170-
if (clientException != null) {
171-
clientException.printStackTrace();
172-
} else {
173-
serviceException.printStackTrace();
174-
}
175-
}
176-
});
177-
//设置任务状态回调, 可以查看任务过程
178-
cosxmlUploadTask.setTransferStateListener(new TransferStateListener() {
179-
@Override
180-
public void onStateChanged(TransferState state) {
181-
// todo notify transfer state
182-
}
183-
});
184115
//.cssg-snippet-body-end
185116
}
186117

Demo/app/src/androidTest/java/com/tencent/qcloud/cosxml/cssg/SetCustomDomain.java

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,18 @@ protected QCloudLifecycleCredentials fetchNewCredentials() throws QCloudClientEx
5959
private void setCdnDomain() {
6060
//.cssg-snippet-body-start:[set-cdn-domain]
6161
String region = "ap-beijing"; // 您的存储桶地域
62-
String cdnHost = "examplebucket-1250000000.file.myqcloud.com"; // 存储桶的默认加速域名
62+
String cdnDomain = "examplebucket-1250000000.file.myqcloud.com"; // 存储桶的默认加速域名
6363

6464
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
6565
.isHttps(true)
6666
.setRegion(region)
6767
.setDebuggable(false)
68-
.setHostFormat("${bucket}.file.myqcloud.com") // 修改存储请求的域名
69-
.addHeader("Host", cdnHost) // 修改 header 中的 host 字段
68+
.setHostFormat(cdnDomain) // 修改请求的域名
69+
.addHeader("Host", cdnDomain) // 修改 header 中的 host 字段
7070
.builder();
7171

72-
/**
73-
* 不提供 credentialProvider 类
74-
*/
72+
// 不提供 credentialProvider 类,下载时可以通过给 url 添加 params 参数,来
73+
// 支持 CDN 权限校验
7574
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig);
7675
//.cssg-snippet-body-end
7776
}
@@ -81,48 +80,65 @@ private void setCdnDomain() {
8180
*/
8281
private void setCdnCustomDomain() {
8382
//.cssg-snippet-body-start:[set-cdn-custom-domain]
84-
8583
String region = "ap-beijing"; // 您的存储桶地域
86-
String cdnCustomDomain = "example.com"; // 自定义加速域名
84+
String cdnCustomDomain = "exampledomain.com"; // 自定义加速域名
8785

8886
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
8987
.isHttps(true)
9088
.setRegion(region)
9189
.setDebuggable(false)
92-
.setHostFormat(cdnCustomDomain) // cdn 默认域名 host 格式
90+
.setHostFormat(cdnCustomDomain) // 修改请求的域名
91+
.addHeader("Host", cdnCustomDomain) // 修改 header 中的 host 字段
9392
.builder();
94-
95-
/**
96-
* 不提供 credentialProvider 类
97-
*/
93+
// 不提供 credentialProvider 类,下载时可以通过给 url 添加 params 参数,来
94+
// 支持 CDN 权限校验
9895
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig);
99-
10096
//.cssg-snippet-body-end
10197
}
10298

10399
/**
104100
* 设置自定义域名
105101
*/
106102
private void setCustomDomain() {
103+
104+
ServerCredentialProvider credentialProvider = new ServerCredentialProvider();
107105
//.cssg-snippet-body-start:[set-custom-domain]
106+
String region = "ap-beijing"; // 您的存储桶地域
107+
String customDomain = "exampledomain.com"; // 自定义加速域名
108+
109+
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
110+
.isHttps(true)
111+
.setRegion(region)
112+
.setDebuggable(false)
113+
.setHostFormat(customDomain) // 修改请求的域名
114+
.builder();
108115

116+
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig, credentialProvider);
117+
//.cssg-snippet-body-end
118+
}
119+
120+
/**
121+
* 设置全球加速域名
122+
*/
123+
private void setAccelerateDomain() {
124+
125+
ServerCredentialProvider credentialProvider = new ServerCredentialProvider();
126+
127+
//.cssg-snippet-body-start:[set-accelerate-domain]
109128
String region = "ap-beijing"; // 您的存储桶地域
110-
String customDomain = "example.com"; // 自定义加速域名
111129

112130
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
113131
.isHttps(true)
114132
.setRegion(region)
115133
.setDebuggable(false)
116-
.setHostFormat(customDomain) // cdn 默认域名 host 格式
134+
.setAccelerate(true) // 使能全球加速域名
117135
.builder();
118136

119-
/**
120-
* 不提供 credentialProvider 类
121-
*/
122-
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig);
137+
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig, credentialProvider);
123138
//.cssg-snippet-body-end
124139
}
125140

141+
126142
// .cssg-methods-pragma
127143

128144
private void initService() {
@@ -149,6 +165,10 @@ public void testSetCustomDomain() {
149165

150166
// 设置自定义域名
151167
setCustomDomain();
168+
169+
// 设置全球加速域名
170+
setAccelerateDomain();
171+
152172

153173
// .cssg-methods-pragma
154174
}

Demo/app/src/androidTest/java/com/tencent/qcloud/cosxml/cssg/SetCustomHeaders.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,21 @@ protected QCloudLifecycleCredentials fetchNewCredentials() throws QCloudClientEx
5757
* 设置自定义头部
5858
*/
5959
private void setCustomHeaders() {
60+
61+
ServerCredentialProvider credentialProvider = new ServerCredentialProvider();
6062
//.cssg-snippet-body-start:[set-custom-headers]
6163
String region = "ap-beijing"; // 您的存储桶地域
62-
String customHeaderKey = "Host"; // 自定义 Header 的键
63-
String customHeaderValue = "examplebucket-1250000000.file.myqcloud.com"; // 自定义 Header 的值
64+
String customHeaderKey = "examplekey"; // 自定义 Header 的键
65+
String customHeaderValue = "examplevalue"; // 自定义 Header 的值
6466

6567
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
6668
.isHttps(true)
6769
.setRegion(region)
6870
.setDebuggable(false)
69-
.addHeader(customHeaderKey, customHeaderValue) // 自定义 Header
71+
.addHeader(customHeaderKey, customHeaderValue) // 添加自定义 Header
7072
.builder();
7173

72-
/**
73-
* 不提供 credentialProvider 类
74-
*/
75-
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig);
74+
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig, credentialProvider);
7675
//.cssg-snippet-body-end
7776
}
7877

0 commit comments

Comments
 (0)