Skip to content

Commit 0bfd905

Browse files
authored
Merge pull request #318 from MistyL/master
add changeHeaders method to allow user to self define the response headers of files in bucket
2 parents ac95e13 + 45fe6fb commit 0bfd905

File tree

2 files changed

+47
-4
lines changed

2 files changed

+47
-4
lines changed

src/main/java/com/qiniu/storage/BucketManager.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import java.util.ArrayList;
1515
import java.util.Iterator;
16+
import java.util.Map;
1617

1718
/**
1819
* 主要涉及了空间资源管理及批量操作接口的实现,具体的接口规格可以参考
@@ -194,6 +195,26 @@ public Response changeMime(String bucket, String key, String mime)
194195
return rsPost(bucket, path, null);
195196
}
196197

198+
/**
199+
* 修改文件的元数据
200+
*
201+
* @param bucket 空间名称
202+
* @param key 文件名称
203+
* @param headers 需要修改的文件元数据
204+
* @throws QiniuException
205+
* @link https://developer.qiniu.com/kodo/api/1252/chgm
206+
*/
207+
public Response changeHeaders(String bucket, String key, Map<String, String> headers)
208+
throws QiniuException {
209+
String resource = encodedEntry(bucket, key);
210+
String path = String.format("/chgm/%s", resource);
211+
for (String k : headers.keySet()) {
212+
String encodedMetaValue = UrlSafeBase64.encodeToString(headers.get(k));
213+
path = String.format("%s/%s/%s", path, k, encodedMetaValue);
214+
}
215+
return rsPost(bucket, path, null);
216+
}
217+
197218

198219
//存储类型
199220
public enum StorageType {

src/test/java/test/com/qiniu/storage/BucketTest.java

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@
1313
import org.junit.Assert;
1414
import org.junit.Test;
1515

16-
import java.util.ArrayList;
17-
import java.util.HashMap;
18-
import java.util.List;
19-
import java.util.Map;
16+
import java.text.SimpleDateFormat;
17+
import java.util.*;
2018

2119
@SuppressWarnings("ConstantConditions")
2220
public class BucketTest extends TestCase {
@@ -267,6 +265,30 @@ public void testChangeMime() {
267265
}
268266
}
269267

268+
@Test
269+
public void testChangeHeaders() {
270+
List<String[]> cases = new ArrayList<String[]>();
271+
cases.add(new String[]{TestConfig.testBucket_z0, TestConfig.testKey_z0});
272+
cases.add(new String[]{TestConfig.testBucket_na0, TestConfig.testKey_na0});
273+
274+
for (String[] icase : cases) {
275+
String bucket = icase[0];
276+
String key = icase[1];
277+
try {
278+
Map<String, String> headers = new HashMap<>();
279+
Date d = new Date();
280+
SimpleDateFormat dateFm = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.ENGLISH);
281+
System.out.println(dateFm.format(d));
282+
headers.put("x-qn-meta-!Content-Type", "image/png");
283+
headers.put("x-qn-meta-!Last-Modifie", dateFm.format(d));
284+
bucketManager.changeHeaders(bucket, key, headers);
285+
} catch (QiniuException e) {
286+
fail(bucket + ":" + key + "==> " + e.response.toString());
287+
}
288+
}
289+
}
290+
291+
270292
@Test
271293
public void testPrefetch() {
272294
String[] buckets = new String[]{TestConfig.testBucket_z0, TestConfig.testBucket_na0};

0 commit comments

Comments
 (0)