From 2857c4a1ae2de0e29f4ffa96b62dd7cba29e3828 Mon Sep 17 00:00:00 2001 From: He Lishi Date: Sat, 8 Feb 2014 13:50:13 +0800 Subject: [PATCH 1/9] Add transform and fopTimeout Put Policy --- src/main/java/com/qiniu/api/rs/PutPolicy.java | 27 +++++++++++++++++++ src/test/java/com/qiniu/testing/IOTest.java | 22 ++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/qiniu/api/rs/PutPolicy.java b/src/main/java/com/qiniu/api/rs/PutPolicy.java index 572ccca72..23d37ae24 100644 --- a/src/main/java/com/qiniu/api/rs/PutPolicy.java +++ b/src/main/java/com/qiniu/api/rs/PutPolicy.java @@ -47,6 +47,27 @@ public class PutPolicy { public long deadline; + /** + * + * 对文件先进行一次变换操作(比如将音频统一转为某种码率的mp3)再进行存储。 + * transform的值就是一个fop指令,比如 "avthumb/mp3"。其含义是对上传的文件 + * 执行这个 fop 指令,然后把结果保存到七牛。最后保存的是经过处理过的文件, + * 而不是用户上传的原始文件。 + **/ + public String transform; + + /** + * + * 单位: 秒 + * 文件变换操作执行的超时时间(单位:秒),上传和转码操作是同步进行的, + * 先上传后转码,这个时间只是转码所需时间,不包括上传文件所需时间。 + * 这个值太小可能会导致误判(最终存储成功了但客户端得到超时的错误), + * 但太大可能会导致服务端将其判断为低优先级任务。建议取一个相对准确的 + * 时间估计值*N(N不要超过5)。 + * + **/ + public long fopTimeout; + public PutPolicy(String scope) { this.scope = scope; } @@ -91,6 +112,12 @@ public String marshal() throws JSONException { if (this.persistentOps != null && this.persistentOps.length() > 0) { stringer.key("persistentOps").value(this.persistentOps); } + if (this.transform != null && this.transform.length() > 0) { + stringer.key("transform").value(this.transform); + } + if (this.fopTimeout > 0) { + stringer.key("fopTimeout").value(this.fopTimeout); + } stringer.key("deadline").value(this.deadline); stringer.endObject(); diff --git a/src/test/java/com/qiniu/testing/IOTest.java b/src/test/java/com/qiniu/testing/IOTest.java index c09e25e7b..348a6e89f 100644 --- a/src/test/java/com/qiniu/testing/IOTest.java +++ b/src/test/java/com/qiniu/testing/IOTest.java @@ -64,6 +64,26 @@ public void testPut() throws Exception { } } + /** + * 这个案例测试上传后转码并将转码结果保存为目标文件。例中使用了 PutPolicy 中的 + * transform 和 fopTimeout 两个参数,分别对应要进行的转码操作和转码超时时间, + * 测试的时候请将例中的 localFile 改成合法的文件路径。 + **/ + public void testPutTransform() throws Exception { + PutPolicy putPolicy = new PutPolicy(bucketName); + putPolicy.transform = "avthumb/mp3"; + putPolicy.fopTimeout = 60; + + String uptoken = putPolicy.token(mac); + String localFile = "/Users/ikbear/7niu/music.mp4"; + String key = "music-ikbear.mp3"; + + PutExtra extra = new PutExtra(); + + PutRet ret = IoApi.putFile(uptoken, key, localFile, extra); + assertTrue(ret.ok()); + } + @Override public void tearDown() { // delete the metadata from rs @@ -89,4 +109,4 @@ public void tearDown() { assertTrue(!sr.ok()); } } -} \ No newline at end of file +} From 1d687d2f5fe1e1a058ce93c9b408335a5290da86 Mon Sep 17 00:00:00 2001 From: He Lishi Date: Sat, 8 Feb 2014 13:59:16 +0800 Subject: [PATCH 2/9] format --- src/main/java/com/qiniu/api/rs/PutPolicy.java | 51 ++++++++++--------- src/test/java/com/qiniu/testing/IOTest.java | 20 ++++---- 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/qiniu/api/rs/PutPolicy.java b/src/main/java/com/qiniu/api/rs/PutPolicy.java index 23d37ae24..01f2a36e9 100644 --- a/src/main/java/com/qiniu/api/rs/PutPolicy.java +++ b/src/main/java/com/qiniu/api/rs/PutPolicy.java @@ -47,26 +47,27 @@ public class PutPolicy { public long deadline; - /** - * - * 对文件先进行一次变换操作(比如将音频统一转为某种码率的mp3)再进行存储。 - * transform的值就是一个fop指令,比如 "avthumb/mp3"。其含义是对上传的文件 - * 执行这个 fop 指令,然后把结果保存到七牛。最后保存的是经过处理过的文件, - * 而不是用户上传的原始文件。 - **/ - public String transform; + /** + * + * 对文件先进行一次变换操作(比如将音频统一转为某种码率的mp3)再进行存储。 + * transform的值就是一个fop指令,比如 "avthumb/mp3"。其含义是对上传的文件 + * 执行这个 fop 指令,然后把结果保存到七牛。最后保存的是经过处理过的文件, + * 而不是用户上传的原始文件。 + * + **/ + public String transform; - /** - * - * 单位: 秒 - * 文件变换操作执行的超时时间(单位:秒),上传和转码操作是同步进行的, - * 先上传后转码,这个时间只是转码所需时间,不包括上传文件所需时间。 - * 这个值太小可能会导致误判(最终存储成功了但客户端得到超时的错误), - * 但太大可能会导致服务端将其判断为低优先级任务。建议取一个相对准确的 - * 时间估计值*N(N不要超过5)。 - * - **/ - public long fopTimeout; + /** + * + * 单位: 秒 + * 文件变换操作执行的超时时间(单位:秒),上传和转码操作是同步进行的, + * 先上传后转码,这个时间只是转码所需时间,不包括上传文件所需时间。 + * 这个值太小可能会导致误判(最终存储成功了但客户端得到超时的错误), + * 但太大可能会导致服务端将其判断为低优先级任务。建议取一个相对准确的 + * 时间估计值*N(N不要超过5)。 + * + **/ + public long fopTimeout; public PutPolicy(String scope) { this.scope = scope; @@ -112,12 +113,12 @@ public String marshal() throws JSONException { if (this.persistentOps != null && this.persistentOps.length() > 0) { stringer.key("persistentOps").value(this.persistentOps); } - if (this.transform != null && this.transform.length() > 0) { - stringer.key("transform").value(this.transform); - } - if (this.fopTimeout > 0) { - stringer.key("fopTimeout").value(this.fopTimeout); - } + if (this.transform != null && this.transform.length() > 0) { + stringer.key("transform").value(this.transform); + } + if (this.fopTimeout > 0) { + stringer.key("fopTimeout").value(this.fopTimeout); + } stringer.key("deadline").value(this.deadline); stringer.endObject(); diff --git a/src/test/java/com/qiniu/testing/IOTest.java b/src/test/java/com/qiniu/testing/IOTest.java index 348a6e89f..68c50be35 100644 --- a/src/test/java/com/qiniu/testing/IOTest.java +++ b/src/test/java/com/qiniu/testing/IOTest.java @@ -64,19 +64,19 @@ public void testPut() throws Exception { } } - /** - * 这个案例测试上传后转码并将转码结果保存为目标文件。例中使用了 PutPolicy 中的 - * transform 和 fopTimeout 两个参数,分别对应要进行的转码操作和转码超时时间, - * 测试的时候请将例中的 localFile 改成合法的文件路径。 - **/ + /** + * 这个案例测试上传后转码并将转码结果保存为目标文件。例中使用了 PutPolicy 中的 + * transform 和 fopTimeout 两个参数,分别对应要进行的转码操作和转码超时时间, + * 测试的时候请将例中的 localFile 改成合法的文件路径。 + **/ public void testPutTransform() throws Exception { - PutPolicy putPolicy = new PutPolicy(bucketName); - putPolicy.transform = "avthumb/mp3"; - putPolicy.fopTimeout = 60; + PutPolicy putPolicy = new PutPolicy(bucketName); + putPolicy.transform = "avthumb/mp3"; + putPolicy.fopTimeout = 60; - String uptoken = putPolicy.token(mac); + String uptoken = putPolicy.token(mac); String localFile = "/Users/ikbear/7niu/music.mp4"; - String key = "music-ikbear.mp3"; + String key = "music-ikbear.mp3"; PutExtra extra = new PutExtra(); From 933283a728a9369efc5a6a92abfe2dbc753b353b Mon Sep 17 00:00:00 2001 From: He Lishi Date: Sat, 8 Feb 2014 14:09:20 +0800 Subject: [PATCH 3/9] format --- src/main/java/com/qiniu/api/rs/PutPolicy.java | 6 +++--- src/test/java/com/qiniu/testing/IOTest.java | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/qiniu/api/rs/PutPolicy.java b/src/main/java/com/qiniu/api/rs/PutPolicy.java index 01f2a36e9..ce8d4db42 100644 --- a/src/main/java/com/qiniu/api/rs/PutPolicy.java +++ b/src/main/java/com/qiniu/api/rs/PutPolicy.java @@ -113,11 +113,11 @@ public String marshal() throws JSONException { if (this.persistentOps != null && this.persistentOps.length() > 0) { stringer.key("persistentOps").value(this.persistentOps); } - if (this.transform != null && this.transform.length() > 0) { - stringer.key("transform").value(this.transform); + if (this.transform != null && this.transform.length() > 0) { + stringer.key("transform").value(this.transform); } if (this.fopTimeout > 0) { - stringer.key("fopTimeout").value(this.fopTimeout); + stringer.key("fopTimeout").value(this.fopTimeout); } stringer.key("deadline").value(this.deadline); stringer.endObject(); diff --git a/src/test/java/com/qiniu/testing/IOTest.java b/src/test/java/com/qiniu/testing/IOTest.java index 68c50be35..e43898553 100644 --- a/src/test/java/com/qiniu/testing/IOTest.java +++ b/src/test/java/com/qiniu/testing/IOTest.java @@ -70,16 +70,16 @@ public void testPut() throws Exception { * 测试的时候请将例中的 localFile 改成合法的文件路径。 **/ public void testPutTransform() throws Exception { - PutPolicy putPolicy = new PutPolicy(bucketName); - putPolicy.transform = "avthumb/mp3"; - putPolicy.fopTimeout = 60; + PutPolicy putPolicy = new PutPolicy(bucketName); + putPolicy.transform = "avthumb/mp3"; + putPolicy.fopTimeout = 60; - String uptoken = putPolicy.token(mac); + String uptoken = putPolicy.token(mac); String localFile = "/Users/ikbear/7niu/music.mp4"; - String key = "music-ikbear.mp3"; + String key = "music-ikbear.mp3"; PutExtra extra = new PutExtra(); - + PutRet ret = IoApi.putFile(uptoken, key, localFile, extra); assertTrue(ret.ok()); } From bed7d08cc66ceb597f45e03757d65d1fb95b5a06 Mon Sep 17 00:00:00 2001 From: He Lishi Date: Sat, 8 Feb 2014 14:10:52 +0800 Subject: [PATCH 4/9] format --- src/main/java/com/qiniu/api/rs/PutPolicy.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/qiniu/api/rs/PutPolicy.java b/src/main/java/com/qiniu/api/rs/PutPolicy.java index ce8d4db42..2166cfcba 100644 --- a/src/main/java/com/qiniu/api/rs/PutPolicy.java +++ b/src/main/java/com/qiniu/api/rs/PutPolicy.java @@ -59,13 +59,13 @@ public class PutPolicy { /** * - * 单位: 秒 - * 文件变换操作执行的超时时间(单位:秒),上传和转码操作是同步进行的, - * 先上传后转码,这个时间只是转码所需时间,不包括上传文件所需时间。 - * 这个值太小可能会导致误判(最终存储成功了但客户端得到超时的错误), - * 但太大可能会导致服务端将其判断为低优先级任务。建议取一个相对准确的 - * 时间估计值*N(N不要超过5)。 - * + * 单位: 秒 + * 文件变换操作执行的超时时间(单位:秒),上传和转码操作是同步进行的, + * 先上传后转码,这个时间只是转码所需时间,不包括上传文件所需时间。 + * 这个值太小可能会导致误判(最终存储成功了但客户端得到超时的错误), + * 但太大可能会导致服务端将其判断为低优先级任务。建议取一个相对准确的 + * 时间估计值*N(N不要超过5)。 + * **/ public long fopTimeout; From e7205428419be4127777c958fc7cf3b728cfd560 Mon Sep 17 00:00:00 2001 From: He Lishi Date: Sat, 8 Feb 2014 14:18:42 +0800 Subject: [PATCH 5/9] format --- src/main/java/com/qiniu/api/rs/PutPolicy.java | 16 ++++++++-------- src/test/java/com/qiniu/testing/IOTest.java | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/qiniu/api/rs/PutPolicy.java b/src/main/java/com/qiniu/api/rs/PutPolicy.java index 2166cfcba..cf16aa711 100644 --- a/src/main/java/com/qiniu/api/rs/PutPolicy.java +++ b/src/main/java/com/qiniu/api/rs/PutPolicy.java @@ -58,14 +58,14 @@ public class PutPolicy { public String transform; /** - * - * 单位: 秒 - * 文件变换操作执行的超时时间(单位:秒),上传和转码操作是同步进行的, - * 先上传后转码,这个时间只是转码所需时间,不包括上传文件所需时间。 - * 这个值太小可能会导致误判(最终存储成功了但客户端得到超时的错误), - * 但太大可能会导致服务端将其判断为低优先级任务。建议取一个相对准确的 - * 时间估计值*N(N不要超过5)。 - * + * + * 单位: 秒 + * 文件变换操作执行的超时时间(单位:秒),上传和转码操作是同步进行的, + * 先上传后转码,这个时间只是转码所需时间,不包括上传文件所需时间。 + * 这个值太小可能会导致误判(最终存储成功了但客户端得到超时的错误), + * 但太大可能会导致服务端将其判断为低优先级任务。建议取一个相对准确的 + * 时间估计值*N(N不要超过5)。 + * **/ public long fopTimeout; diff --git a/src/test/java/com/qiniu/testing/IOTest.java b/src/test/java/com/qiniu/testing/IOTest.java index e43898553..210688f7a 100644 --- a/src/test/java/com/qiniu/testing/IOTest.java +++ b/src/test/java/com/qiniu/testing/IOTest.java @@ -65,9 +65,9 @@ public void testPut() throws Exception { } /** - * 这个案例测试上传后转码并将转码结果保存为目标文件。例中使用了 PutPolicy 中的 - * transform 和 fopTimeout 两个参数,分别对应要进行的转码操作和转码超时时间, - * 测试的时候请将例中的 localFile 改成合法的文件路径。 + * 这个案例测试上传后转码并将转码结果保存为目标文件。例中使用了 PutPolicy 中的 + * transform 和 fopTimeout 两个参数,分别对应要进行的转码操作和转码超时时间, + * 测试的时候请将例中的 localFile 改成合法的文件路径。 **/ public void testPutTransform() throws Exception { PutPolicy putPolicy = new PutPolicy(bucketName); From a3c0b588a72e96e974a6b678afb44235dc347558 Mon Sep 17 00:00:00 2001 From: He Lishi Date: Sat, 8 Feb 2014 14:22:37 +0800 Subject: [PATCH 6/9] format --- src/main/java/com/qiniu/api/rs/PutPolicy.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/qiniu/api/rs/PutPolicy.java b/src/main/java/com/qiniu/api/rs/PutPolicy.java index cf16aa711..c61b646ee 100644 --- a/src/main/java/com/qiniu/api/rs/PutPolicy.java +++ b/src/main/java/com/qiniu/api/rs/PutPolicy.java @@ -115,10 +115,10 @@ public String marshal() throws JSONException { } if (this.transform != null && this.transform.length() > 0) { stringer.key("transform").value(this.transform); - } - if (this.fopTimeout > 0) { - stringer.key("fopTimeout").value(this.fopTimeout); - } + } + if (this.fopTimeout > 0) { + stringer.key("fopTimeout").value(this.fopTimeout); + } stringer.key("deadline").value(this.deadline); stringer.endObject(); From 5a29c8a8ca4f8faa4aa8bdb23331d52a5fca3f93 Mon Sep 17 00:00:00 2001 From: He Lishi Date: Mon, 10 Feb 2014 13:14:13 +0800 Subject: [PATCH 7/9] Add tramsform test --- src/main/java/com/qiniu/api/rs/PutPolicy.java | 12 +-- src/test/java/com/qiniu/testing/IOTest.java | 20 ----- .../java/com/qiniu/testing/TransformTest.java | 83 +++++++++++++++++++ 3 files changed, 89 insertions(+), 26 deletions(-) create mode 100644 src/test/java/com/qiniu/testing/TransformTest.java diff --git a/src/main/java/com/qiniu/api/rs/PutPolicy.java b/src/main/java/com/qiniu/api/rs/PutPolicy.java index c61b646ee..73f55555d 100644 --- a/src/main/java/com/qiniu/api/rs/PutPolicy.java +++ b/src/main/java/com/qiniu/api/rs/PutPolicy.java @@ -48,12 +48,12 @@ public class PutPolicy { public long deadline; /** - * - * 对文件先进行一次变换操作(比如将音频统一转为某种码率的mp3)再进行存储。 - * transform的值就是一个fop指令,比如 "avthumb/mp3"。其含义是对上传的文件 - * 执行这个 fop 指令,然后把结果保存到七牛。最后保存的是经过处理过的文件, - * 而不是用户上传的原始文件。 - * + * + * 对文件先进行一次变换操作(比如将音频统一转为某种码率的mp3)再进行存储。 + * transform的值就是一个fop指令,比如 "avthumb/mp3"。其含义是对上传的文件 + * 执行这个 fop 指令,然后把结果保存到七牛。最后保存的是经过处理过的文件, + * 而不是用户上传的原始文件。 + * **/ public String transform; diff --git a/src/test/java/com/qiniu/testing/IOTest.java b/src/test/java/com/qiniu/testing/IOTest.java index 210688f7a..b9c8ab062 100644 --- a/src/test/java/com/qiniu/testing/IOTest.java +++ b/src/test/java/com/qiniu/testing/IOTest.java @@ -64,26 +64,6 @@ public void testPut() throws Exception { } } - /** - * 这个案例测试上传后转码并将转码结果保存为目标文件。例中使用了 PutPolicy 中的 - * transform 和 fopTimeout 两个参数,分别对应要进行的转码操作和转码超时时间, - * 测试的时候请将例中的 localFile 改成合法的文件路径。 - **/ - public void testPutTransform() throws Exception { - PutPolicy putPolicy = new PutPolicy(bucketName); - putPolicy.transform = "avthumb/mp3"; - putPolicy.fopTimeout = 60; - - String uptoken = putPolicy.token(mac); - String localFile = "/Users/ikbear/7niu/music.mp4"; - String key = "music-ikbear.mp3"; - - PutExtra extra = new PutExtra(); - - PutRet ret = IoApi.putFile(uptoken, key, localFile, extra); - assertTrue(ret.ok()); - } - @Override public void tearDown() { // delete the metadata from rs diff --git a/src/test/java/com/qiniu/testing/TransformTest.java b/src/test/java/com/qiniu/testing/TransformTest.java new file mode 100644 index 000000000..8d6074989 --- /dev/null +++ b/src/test/java/com/qiniu/testing/TransformTest.java @@ -0,0 +1,83 @@ +package com.qiniu.testing; + +import java.io.*; + +import junit.framework.TestCase; + +import com.qiniu.api.auth.digest.Mac; +import com.qiniu.api.config.Config; +import com.qiniu.api.io.IoApi; +import com.qiniu.api.io.PutExtra; +import com.qiniu.api.io.PutRet; +import com.qiniu.api.net.CallRet; +import com.qiniu.api.rs.Entry; +import com.qiniu.api.rs.PutPolicy; +import com.qiniu.api.rs.RSClient; + +public class TransformTest extends TestCase { + + // because all the testcase concurrently executes + // so the key should be different. + public final String key = "IOTest-key"; + + public final String expectedHash = "FivxSqsM1SyWCnYeIGPUqZM5LL4b"; + + public String bucketName; + + public Mac mac; + @Override + public void setUp() { + Config.ACCESS_KEY = System.getenv("QINIU_ACCESS_KEY"); + Config.SECRET_KEY = System.getenv("QINIU_SECRET_KEY"); + Config.RS_HOST = System.getenv("QINIU_RS_HOST"); + bucketName = System.getenv("QINIU_TEST_BUCKET"); + + assertNotNull(Config.ACCESS_KEY); + assertNotNull(Config.SECRET_KEY); + assertNotNull(Config.RS_HOST); + assertNotNull(bucketName); + mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY); + } + + public void testPutTransform() throws Exception { + PutPolicy putPolicy = new PutPolicy(bucketName); + putPolicy.transform = "imageView/2/w/100/h/100"; + putPolicy.fopTimeout = 10; + + String uptoken = putPolicy.token(mac); + String dir = System.getProperty("user.dir"); + String localFile = dir + "/testdata/" + "logo.png"; + + PutExtra extra = new PutExtra(); + + PutRet ret = IoApi.putFile(uptoken, key, localFile, extra); + assertTrue(ret.ok()); + } + + @Override + public void tearDown() { + // delete the metadata from rs + // confirms it exists. + { + RSClient rs = new RSClient(mac); + Entry sr = rs.stat(bucketName, key); + System.out.println(sr.getHash()); + assertTrue(sr.ok()); + assertTrue(expectedHash.equals(sr.getHash())); + } + + // deletes it from rs + { + RSClient rs = new RSClient(mac); + CallRet cr = rs.delete(bucketName, key); + assertTrue(cr.ok()); + } + + // confirms that it's deleted + { + RSClient rs = new RSClient(mac); + Entry sr = rs.stat(bucketName, key); + assertTrue(!sr.ok()); + } + } +} \ No newline at end of file From 0cdc1e45250681cb816aa09f9350d38cf58d194c Mon Sep 17 00:00:00 2001 From: xushiwei Date: Mon, 10 Feb 2014 14:51:29 +0800 Subject: [PATCH 8/9] Update CHANGELOG.md --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index db67ce176..e67eb15e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ ## CHANGE LOG +### v6.1.2 + +2014-1-13 [#98](https://github.com/qiniu/java-sdk/pull/98) + +- Add transform and fopTimeout Put Policy + ### v6.1.0 2014-1-13 [#93](https://github.com/qiniu/java-sdk/pull/93) From 853af848381a230441e75d05a50a832df1367e1c Mon Sep 17 00:00:00 2001 From: xushiwei Date: Mon, 10 Feb 2014 14:51:44 +0800 Subject: [PATCH 9/9] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e67eb15e8..b1df4cdfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ### v6.1.2 -2014-1-13 [#98](https://github.com/qiniu/java-sdk/pull/98) +2014-2-10 [#98](https://github.com/qiniu/java-sdk/pull/98) - Add transform and fopTimeout Put Policy