Search in sources :

Example 1 with GeneratePresignedUrlRequest

use of com.aliyun.oss.model.GeneratePresignedUrlRequest in project aliyun-oss-java-sdk by aliyun.

the class OSSClientRequestTest method testGeneratePresignedUrlRequest.

@Test
public void testGeneratePresignedUrlRequest() throws Exception {
    URI endpoint = new URI("http://localhost/");
    String accessId = "test";
    String accessKey = "test";
    String bucketName = accessId + "bucket";
    String objectKey = "object";
    String server = endpoint.toString();
    OSS ossClient = new OSSClientBuilder().build(server, accessId, accessKey);
    URL url = null;
    // Simple case
    // 10 εˆ†ι’ŸθΏ‡ζœŸ
    Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10);
    try {
        url = ossClient.generatePresignedUrl(bucketName, objectKey, expiration);
    } catch (ClientException e) {
        fail(e.getMessage());
    }
    String expectedUrlPrefix = endpoint.getScheme() + "://" + endpoint.getHost() + "/" + bucketName + "/" + objectKey + "?Expires=" + Long.toString(expiration.getTime() / 1000) + "&OSSAccessKeyId=" + accessId + "&Signature=";
    Assert.assertTrue(url.toString().startsWith(expectedUrlPrefix));
    // Override response header
    ResponseHeaderOverrides responseHeaders = new ResponseHeaderOverrides();
    responseHeaders.setCacheControl("no-cache");
    GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectKey);
    request.setExpiration(expiration);
    request.setResponseHeaders(responseHeaders);
    expectedUrlPrefix = endpoint.getScheme() + "://" + endpoint.getHost() + "/" + bucketName + "/" + objectKey + "?Expires=" + Long.toString(expiration.getTime() / 1000) + "&OSSAccessKeyId=" + accessId + "&Signature=";
    try {
        url = ossClient.generatePresignedUrl(request);
        Assert.assertTrue(url.toString().startsWith(expectedUrlPrefix));
    } catch (ClientException e) {
        fail(e.getMessage());
    }
}
Also used : GeneratePresignedUrlRequest(com.aliyun.oss.model.GeneratePresignedUrlRequest) ResponseHeaderOverrides(com.aliyun.oss.model.ResponseHeaderOverrides) URI(java.net.URI) URL(java.net.URL) Date(java.util.Date) Test(org.junit.Test)

Example 2 with GeneratePresignedUrlRequest

use of com.aliyun.oss.model.GeneratePresignedUrlRequest in project aliyun-oss-java-sdk by aliyun.

the class OSSClientTest method testGeneratePresignedUrl.

@Test
@Ignore
public /**
 * TODO: needs the fix about local time.
 */
void testGeneratePresignedUrl() throws IOException {
    OSS client = new OSSClientBuilder().build("oss.aliyuncs.com", "id", "key");
    GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest("bucket", "key");
    Calendar ex = Calendar.getInstance();
    ex.set(2015, 1, 1, 0, 0, 0);
    Date expiration = ex.getTime();
    request.setExpiration(expiration);
    request.setContentMD5("md5");
    request.setContentType("type");
    assertEquals(request.getContentType(), "type");
    assertEquals(request.getContentMD5(), "md5");
    URL url = client.generatePresignedUrl(request);
    assertEquals(url.getPath(), "/key");
    assertEquals(url.getAuthority(), "bucket.oss.aliyuncs.com");
    assertEquals(url.getHost(), "bucket.oss.aliyuncs.com");
    assertEquals(url.getDefaultPort(), 80);
    assertEquals(url.getProtocol(), "http");
    assertEquals(url.getQuery(), "Expires=1422720000&OSSAccessKeyId=id&Signature=XA8ThdVKdJQ4vlkoggdzCs5s1RY%3D");
    assertEquals(url.getFile(), "/key?Expires=1422720000&OSSAccessKeyId=id&Signature=XA8ThdVKdJQ4vlkoggdzCs5s1RY%3D");
    request.setContentMD5("md5'");
    url = client.generatePresignedUrl(request);
    assertTrue(!url.getQuery().equals("Expires=1422720000&OSSAccessKeyId=id&Signature=XA8ThdVKdJQ4vlkoggdzCs5s1RY%3D"));
    request.setContentMD5("md5'");
    url = client.generatePresignedUrl(request);
    assertTrue(!url.getQuery().equals("Expires=1422720000&OSSAccessKeyId=id&Signature=XA8ThdVKdJQ4vlkoggdzCs5s1RY%3D"));
    request.setContentType("type'");
    request.setContentMD5("md5");
    url = client.generatePresignedUrl(request);
    assertTrue(!url.getQuery().equals("Expires=1422720000&OSSAccessKeyId=id&Signature=XA8ThdVKdJQ4vlkoggdzCs5s1RY%3D"));
}
Also used : GeneratePresignedUrlRequest(com.aliyun.oss.model.GeneratePresignedUrlRequest) Calendar(java.util.Calendar) OSS(com.aliyun.oss.OSS) OSSClientBuilder(com.aliyun.oss.OSSClientBuilder) Date(java.util.Date) URL(java.net.URL) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 3 with GeneratePresignedUrlRequest

use of com.aliyun.oss.model.GeneratePresignedUrlRequest in project aliyun-oss-java-sdk by aliyun.

the class UrlSignatureTest method testGetObject.

@Ignore
public void testGetObject() {
    try {
        Date expiration = DateUtil.parseRfc822Date("Thu, 19 Mar 2015 18:00:00 GMT");
        GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, key, HttpMethod.GET);
        request.setExpiration(expiration);
        request.setContentType("application/octet-stream");
        URL signedUrl = client.generatePresignedUrl(request);
        System.out.println("signed url for getObject: " + signedUrl);
        Map<String, String> customHeaders = new HashMap<String, String>();
        customHeaders.put("Range", "bytes=100-1000");
        customHeaders.put("Content-Type", "application/octet-stream");
        OSSObject object = client.getObject(signedUrl, customHeaders);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        String expectedETag = null;
        try {
            int bufSize = 1024 * 4;
            byte[] buffer = new byte[bufSize];
            int bytesRead;
            while ((bytesRead = object.getObjectContent().read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            expectedETag = BinaryUtil.encodeMD5(outputStream.toByteArray());
        } catch (IOException e) {
            Assert.fail(e.getMessage());
        } finally {
            IOUtils.safeClose(outputStream);
            IOUtils.safeClose(object.getObjectContent());
        }
        ObjectMetadata metadata = client.getObjectMetadata(bucketName, key);
        String actualETag = metadata.getETag();
        Assert.assertEquals(expectedETag, actualETag);
    } catch (Exception e) {
        Assert.fail(e.getMessage());
    }
}
Also used : OSSObject(com.aliyun.oss.model.OSSObject) HashMap(java.util.HashMap) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) Date(java.util.Date) URL(java.net.URL) IOException(java.io.IOException) GeneratePresignedUrlRequest(com.aliyun.oss.model.GeneratePresignedUrlRequest) ObjectMetadata(com.aliyun.oss.model.ObjectMetadata) Ignore(org.junit.Ignore)

Example 4 with GeneratePresignedUrlRequest

use of com.aliyun.oss.model.GeneratePresignedUrlRequest in project aliyun-oss-java-sdk by aliyun.

the class PutObjectTest method testPutObjectByUrlSignature.

@Test
public void testPutObjectByUrlSignature() throws Exception {
    final String key = "put-object-by-urlsignature";
    final String metaKey0 = "author";
    final String metaValue0 = "aliy";
    final String expirationString = "Sun, 12 Apr 2018 12:00:00 GMT";
    // 128KB
    final long inputStreamLength = 128 * 1024;
    GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, key, HttpMethod.PUT);
    Date expiration = DateUtil.parseRfc822Date(expirationString);
    request.setExpiration(expiration);
    request.setContentType(DEFAULT_OBJECT_CONTENT_TYPE);
    request.addUserMetadata(metaKey0, metaValue0);
    URL signedUrl = ossClient.generatePresignedUrl(request);
    Map<String, String> requestHeaders = new HashMap<String, String>();
    requestHeaders.put(HttpHeaders.CONTENT_TYPE, DEFAULT_OBJECT_CONTENT_TYPE);
    requestHeaders.put(OSS_USER_METADATA_PREFIX + metaKey0, metaValue0);
    // Override 1
    InputStream instream = null;
    try {
        instream = genFixedLengthInputStream(inputStreamLength);
        // Using url signature & chunked encoding to upload specified inputstream.
        ossClient.putObject(signedUrl, instream, -1, requestHeaders, true);
        OSSObject o = ossClient.getObject(bucketName, key);
        Assert.assertEquals(key, o.getKey());
        Assert.assertEquals(inputStreamLength, o.getObjectMetadata().getContentLength());
        Assert.assertEquals(o.getRequestId().length(), REQUEST_ID_LEN);
        ObjectMetadata metadata = o.getObjectMetadata();
        Assert.assertEquals(DEFAULT_OBJECT_CONTENT_TYPE, metadata.getContentType());
        Assert.assertTrue(metadata.getUserMetadata().containsKey(metaKey0));
    } catch (Exception ex) {
        Assert.fail(ex.getMessage());
    }
    // Override 2
    try {
        instream = genFixedLengthInputStream(inputStreamLength);
        // Using url signature encoding to upload specified inputstream.
        ossClient.putObject(signedUrl, instream, -1, requestHeaders);
        OSSObject o = ossClient.getObject(bucketName, key);
        Assert.assertEquals(key, o.getKey());
        Assert.assertEquals(inputStreamLength, o.getObjectMetadata().getContentLength());
        Assert.assertEquals(o.getRequestId().length(), REQUEST_ID_LEN);
        ObjectMetadata metadata = o.getObjectMetadata();
        Assert.assertEquals(DEFAULT_OBJECT_CONTENT_TYPE, metadata.getContentType());
        Assert.assertTrue(metadata.getUserMetadata().containsKey(metaKey0));
    } catch (Exception ex) {
        Assert.fail(ex.getMessage());
    }
    // Override 3
    String filePath = genFixedLengthFile(inputStreamLength);
    try {
        // Using url signature encoding to upload specified inputstream.
        ossClient.putObject(signedUrl, filePath, requestHeaders);
        OSSObject o = ossClient.getObject(bucketName, key);
        Assert.assertEquals(key, o.getKey());
        Assert.assertEquals(inputStreamLength, o.getObjectMetadata().getContentLength());
        Assert.assertEquals(o.getRequestId().length(), REQUEST_ID_LEN);
        ObjectMetadata metadata = o.getObjectMetadata();
        Assert.assertEquals(DEFAULT_OBJECT_CONTENT_TYPE, metadata.getContentType());
        Assert.assertTrue(metadata.getUserMetadata().containsKey(metaKey0));
    } catch (Exception ex) {
        Assert.fail(ex.getMessage());
    } finally {
        removeFile(filePath);
    }
    // Override 4
    filePath = genFixedLengthFile(inputStreamLength);
    try {
        // Using url signature encoding to upload specified inputstream.
        ossClient.putObject(signedUrl, filePath, requestHeaders, true);
        OSSObject o = ossClient.getObject(bucketName, key);
        Assert.assertEquals(key, o.getKey());
        Assert.assertEquals(inputStreamLength, o.getObjectMetadata().getContentLength());
        Assert.assertEquals(o.getRequestId().length(), REQUEST_ID_LEN);
        ObjectMetadata metadata = o.getObjectMetadata();
        Assert.assertEquals(DEFAULT_OBJECT_CONTENT_TYPE, metadata.getContentType());
        Assert.assertTrue(metadata.getUserMetadata().containsKey(metaKey0));
    } catch (Exception ex) {
        Assert.fail(ex.getMessage());
    } finally {
        removeFile(filePath);
    }
}
Also used : GeneratePresignedUrlRequest(com.aliyun.oss.model.GeneratePresignedUrlRequest) OSSObject(com.aliyun.oss.model.OSSObject) HashMap(java.util.HashMap) TestUtils.genFixedLengthInputStream(com.aliyun.oss.integrationtests.TestUtils.genFixedLengthInputStream) InputStream(java.io.InputStream) ObjectMetadata(com.aliyun.oss.model.ObjectMetadata) Date(java.util.Date) URL(java.net.URL) OSSException(com.aliyun.oss.OSSException) IOException(java.io.IOException) Test(org.junit.Test)

Example 5 with GeneratePresignedUrlRequest

use of com.aliyun.oss.model.GeneratePresignedUrlRequest in project aliyun-oss-java-sdk by aliyun.

the class CallbackTest method testGeneratePresignedUrlWithCallback.

@Test
public void testGeneratePresignedUrlWithCallback() {
    String key = "generate-presigned-url-callback";
    try {
        // callback
        Callback callback = new Callback();
        callback.setCallbackUrl(callbackUrl);
        callback.setCallbackHost("oss-cn-hangzhou.aliyuncs.com");
        callback.setCallbackBody("bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&" + "mimeType=${mimeType}&my_var1=${x:var1}&my_var2=${x:var2}");
        callback.addCallbackVar("x:var1", "value1");
        callback.addCallbackVar("x:var2", "value2");
        callback.setCalbackBodyType(CalbackBodyType.URL);
        // generate put url
        Map<String, String> cbHeaders = new HashMap<String, String>();
        OSSUtils.populateRequestCallback(cbHeaders, callback);
        Date expiration = new Date(new Date().getTime() + 3600 * 1000);
        GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, key, HttpMethod.PUT);
        request.setExpiration(expiration);
        request.setContentType("text/plain");
        request.setHeaders(cbHeaders);
        request.addHeader("x-oss-meta-author", "mingdi");
        URL signedUrl = ossClient.generatePresignedUrl(request);
        System.out.println("SignedUrl:" + signedUrl);
        // put with url
        Map<String, String> customHeaders = new HashMap<String, String>(cbHeaders);
        customHeaders.put("Content-Type", "text/plain");
        customHeaders.put("x-oss-meta-author", "mingdi");
        InputStream instream = genFixedLengthInputStream(instreamLength);
        PutObjectResult putResult = ossClient.putObject(signedUrl, instream, instreamLength, customHeaders);
        // check callback body
        byte[] buffer = new byte[bufferLength];
        int nRead = putResult.getCallbackResponseBody().read(buffer);
        putResult.getCallbackResponseBody().close();
        Assert.assertEquals(callbackResponse, new String(buffer, 0, nRead));
        // get object and check
        OSSObject ossObject = ossClient.getObject(bucketName, key);
        Assert.assertEquals(key, ossObject.getKey());
        Assert.assertEquals(instreamLength, ossObject.getObjectMetadata().getContentLength());
        Assert.assertEquals("mingdi", ossObject.getObjectMetadata().getUserMetadata().get("author"));
        ossObject.getObjectContent().close();
    } catch (Exception ex) {
        ex.printStackTrace();
        Assert.fail(ex.getMessage());
    }
}
Also used : OSSObject(com.aliyun.oss.model.OSSObject) HashMap(java.util.HashMap) PutObjectResult(com.aliyun.oss.model.PutObjectResult) TestUtils.genFixedLengthInputStream(com.aliyun.oss.integrationtests.TestUtils.genFixedLengthInputStream) InputStream(java.io.InputStream) Date(java.util.Date) URL(java.net.URL) OSSException(com.aliyun.oss.OSSException) Callback(com.aliyun.oss.model.Callback) GeneratePresignedUrlRequest(com.aliyun.oss.model.GeneratePresignedUrlRequest) Test(org.junit.Test)

Aggregations

GeneratePresignedUrlRequest (com.aliyun.oss.model.GeneratePresignedUrlRequest)8 URL (java.net.URL)8 Date (java.util.Date)8 Test (org.junit.Test)6 OSSObject (com.aliyun.oss.model.OSSObject)5 IOException (java.io.IOException)5 HashMap (java.util.HashMap)5 OSSException (com.aliyun.oss.OSSException)3 Ignore (org.junit.Ignore)3 OSS (com.aliyun.oss.OSS)2 OSSClientBuilder (com.aliyun.oss.OSSClientBuilder)2 TestUtils.genFixedLengthInputStream (com.aliyun.oss.integrationtests.TestUtils.genFixedLengthInputStream)2 ObjectMetadata (com.aliyun.oss.model.ObjectMetadata)2 PutObjectResult (com.aliyun.oss.model.PutObjectResult)2 InputStream (java.io.InputStream)2 Callback (com.aliyun.oss.model.Callback)1 ResponseHeaderOverrides (com.aliyun.oss.model.ResponseHeaderOverrides)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1