Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   *
   * Licensed under the Apache License, Version 2.0 (the "License").
   * You may not use this file except in compliance with the License.
   * A copy of the License is located at
   *
   *  http://aws.amazon.com/apache2.0
   *
  * or in the "license" file accompanying this file. This file is distributed
  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  * express or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
 package com.amazonaws.services.s3.model;
 
 import java.util.Date;
 import java.util.Map;
 

Contains options to generate a pre-signed URL for an Amazon S3 resource.

Pre-signed URLs allow clients to form a URL for an Amazon S3 resource and sign it with the current AWS security credentials. A pre-signed URL may be passed around for other users to access the resource without providing them access to an account's AWS security credentials.

 
         implements SSECustomerKeyProvider {
    
The HTTP method (GET, PUT, DELETE, HEAD) to be used in this request and when the pre-signed URL is used
 
     private HttpMethod method;

    
The name of the bucket involved in this request
 
     private String bucketName;

    
The key of the object involved in this request
 
     private String key;

    
The optional Content-Type header that will be sent when the presigned URL is accessed
 
     private String contentType;

    
The optional Content-MD5 header that will be sent when the presigned URL is accessed
 
     private String contentMd5;

    
An optional expiration date at which point the generated pre-signed URL will no longer be accepted by Amazon S3. If not specified, a default value will be supplied.
 
     private Date expiration;

    
True if the request content is set to zero byte instead of null. This is necessary to make pre-signed URL generation work for multi-part upload initiation using SigV4. Ref: TT0050059365
 
     private boolean zeroByteContent;

    
An optional map of additional parameters to include in the pre-signed URL. Adding additional request parameters enables more advanced pre-signed URLs, such as accessing Amazon S3's torrent resource for an object, or for specifying a version ID when accessing an object.
 
     private Map<StringStringrequestParameters = new HashMap<StringString>();

    
Optional field that overrides headers on the response.
 
     private ResponseHeaderOverrides responseHeaders;

    
Optional customer-provided server-side encryption key to use as part of the generated pre-signed URL.
 
     private SSECustomerKey sseCustomerKey;

    
Used to specify the server side encryption algorithm. Null means no server side encryption is in use.
 
     private String sseAlgorithm;

    
Used to specify the KMS CMS Key ID when KMS server side encryption is in use.
 
     private String kmsCmkId;

    
Returns the KMS customer key id used for server side encryption; or null if there is none.
    public String getKmsCmkId() {
        return ;
    }

    
Sets the KMS customer key id used for server side encryption.

Note S3 does not require HTTP header ???x-amz-server-side-encryption-aws-kms-key-id??? to be always present (a default key ID will be used if this header is not present).

It is also possible to set the header to ???alias/aws/s3??? to refer to the default KMS CMK ID.

    public void setKmsCmkId(String kmsCmkId) {
        this. = kmsCmkId;
    }

    
    public GeneratePresignedUrlRequest withKmsCmkId(String kmsCmkId) {
        setKmsCmkId(kmsCmkId);
        return this;
    }

    
Returns the SSE algorithm used for SSE (with server side key); or null if SSE (with server side key) is not in use.
    public String getSSEAlgorithm() {
        return ;
    }

    
Sets the SSE algorithm for server side encryption.

Parameters:
currently supported values: "AES256" or "aws:kms".
    public void setSSEAlgorithm(String sseAlgorithm) {
        this. = sseAlgorithm;
    }

    
    public GeneratePresignedUrlRequest withSSEAlgorithm(String sseAlgorithm) {
        setSSEAlgorithm(sseAlgorithm);
        return this;
    }

    
Sets the SSE algorithm for server side encryption.

Parameters:
currently supported values: "AES256" or "aws:kms".
    public void setSSEAlgorithm(SSEAlgorithm sseAlgorithm) {
        this. = sseAlgorithm.getAlgorithm();
    }

    
        setSSEAlgorithm(sseAlgorithm);
        return this;
    }

    
Creates a new request for generating a pre-signed URL that can be used as part of an HTTP GET request to access the Amazon S3 object stored under the specified key in the specified bucket.

Parameters:
bucketName The name of the bucket containing the desired Amazon S3 object.
key The key under which the desired Amazon S3 object is stored.
    public GeneratePresignedUrlRequest(String bucketNameString key) {
        this(bucketNamekey.);
    }

    

Creates a new request for generating a pre-signed URL that can be used as part of an HTTP request to access the specified Amazon S3 resource.

When specifying an HTTP method, you must send the pre-signed URL with the same HTTP method in order to successfully use the pre-signed URL.

Parameters:
bucketName The name of the Amazon S3 bucket involved in the operation.
key The key of the Amazon S3 object involved in the operation.
method The HTTP method (GET, PUT, DELETE, HEAD) to be used in the request when the pre-signed URL is used.
    public GeneratePresignedUrlRequest(String bucketNameString keyHttpMethod method) {
        this. = bucketName;
        this. = key;
        this. = method;
    }

    
The HTTP method (GET, PUT, DELETE, HEAD) to be used in this request. The same HTTP method must be used in the request when the pre-signed URL is used.

Returns:
The HTTP method (GET, PUT, DELETE, HEAD) to be used in this request and when the pre-signed URL is used.
    public HttpMethod getMethod() {
        return ;
    }

    
Sets the HTTP method (GET, PUT, DELETE, HEAD) to be used in this request. The same HTTP method must be used in the request when the pre-signed URL is used.

Parameters:
method The HTTP method (GET, PUT, DELETE, HEAD) to be used in this request.
    public void setMethod(HttpMethod method) {
        this. = method;
    }

    
Sets the HTTP method (GET, PUT, DELETE, HEAD) to be used in this request, and returns this request object to enable additional method calls to be chained together.

The same HTTP method must be used in the request when the pre-signed URL is used.

Parameters:
method The HTTP method (GET, PUT, DELETE, HEAD) to be used in this request.
Returns:
The updated request object, so that additional method calls can be chained together.
        setMethod(method);
        return this;
    }

    
Returns the name of the bucket involved in this request.

Returns:
the name of the bucket involved in this request.
    public String getBucketName() {
        return ;
    }

    
Sets the name of the bucket involved in this request.

Parameters:
bucketName the name of the bucket involved in this request.
    public void setBucketName(String bucketName) {
        this. = bucketName;
    }

    
Sets the name of the bucket involved in this request, and returns this request object to enable additional method calls to be chained together.

Parameters:
bucketName the name of the bucket involved in this request.
Returns:
The updated request object, so that additional method calls can be chained together.
    public GeneratePresignedUrlRequest withBucketName(String bucketName) {
        setBucketName(bucketName);
        return this;
    }

    
Returns the key of the object involved in this request.

Returns:
The key of the object involved in this request.
    public String getKey() {
        return ;
    }

    
Sets the key of the object involved in this request.

Parameters:
key the key of the object involved in this request.
    public void setKey(String key) {
        this. = key;
    }

    
Sets the key of the object involved in this request, and returns this request object to enable additional method calls to be chained together.

Parameters:
key the key of the object involved in this request.
Returns:
The updated request object, so that additional method calls can be chained together.
        setKey(key);
        return this;
    }

    
The expiration date at which point the new pre-signed URL will no longer be accepted by Amazon S3. If not specified, a default value will be supplied.

Returns:
The expiration date at which point the new pre-signed URL will no longer be accepted by Amazon S3.
    public Date getExpiration() {
        return ;
    }

    
Sets the expiration date at which point the new pre-signed URL will no longer be accepted by Amazon S3. If not specified, a default value will be supplied.

Parameters:
expiration The expiration date at which point the new pre-signed URL will no longer be accepted by Amazon S3.
    public void setExpiration(Date expiration) {
        this. = expiration;
    }

    
Sets the expiration date at which point the new pre-signed URL will no longer be accepted by Amazon S3, and returns this request object to enable additional method calls to be chained together.

If not specified, a default value will be supplied.

Parameters:
expiration The expiration date at which point the new pre-signed URL will no longer be accepted by Amazon S3.
Returns:
The updated request object, so that additional method calls can be chained together.
    public GeneratePresignedUrlRequest withExpiration(Date expiration) {
        setExpiration(expiration);
        return this;
    }

    
Adds an additional request parameter to be included in the pre-signed URL. Adding additional request parameters enables more advanced pre-signed URLs, such as accessing Amazon S3's torrent resource for an object, or for specifying a version ID when accessing an object.

Parameters:
key The name of the request parameter, as it appears in the URL's query string (e.g. versionId).
value The (optional) value of the request parameter being added.
    public void addRequestParameter(String keyString value) {
        .put(keyvalue);
    }

    
Returns the complete map of additional request parameters to be included in the pre-signed URL.

Returns:
The complete map of additional request parameters to be included in the pre-signed URL.
    public Map<StringStringgetRequestParameters() {
        return ;
    }

    
Returns the headers to be overridden in the service response.

Returns:
the headers to be overridden in the service response.
        return ;
    }

    
Sets the headers to be overridden in the service response.

Parameters:
responseHeaders The headers to be overridden in the service response.
    public void setResponseHeaders(ResponseHeaderOverrides responseHeaders) {
        this. = responseHeaders;
    }

    
Sets the headers to be overridden in the service response and returns this object, for method chaining.

Parameters:
responseHeaders The headers to be overridden in the service response.
Returns:
This GeneratePresignedUrlRequest for method chaining.
        setResponseHeaders(responseHeaders);
        return this;
    }

    
Gets the expected content-type of the request. The content-type is included in the signature.

Returns:
The expected content-type
    public String getContentType() {
        return ;
    }

    
Sets the expected content-type of the request. The content-type is included in the signature.

Parameters:
contentType The expected content-type
    public void setContentType(String contentType) {
        this. = contentType;
    }

    
Sets the expected content-type of the request and returns this object, for method chaining.

Parameters:
contentType The expected content-type
Returns:
This GeneratePresignedUrlRequest for method chaining.
    public GeneratePresignedUrlRequest withContentType(String contentType) {
        setContentType(contentType);
        return this;
    }

    
Gets the expected content-md5 header of the request. This header value will be included when calculating the signature, and future requests must include the same content-md5 header value to access the presigned URL.

Returns:
The expected content-md5 header value.
    public String getContentMd5() {
        return ;
    }

    
Sets the expected content-md5 header of the request. This header value will be included when calculating the signature, and future requests must include the same content-md5 header value to access the presigned URL.

Parameters:
contentMd5 The expected content-md5 header value.
    public void setContentMd5(String contentMd5) {
        this. = contentMd5;
    }

    
Sets the expected content-md5 header of the request and returns this object, for method chaining.

Parameters:
contentMd5 The expected content-md5 header value.
Returns:
This GeneratePresignedUrlRequest for method chaining.
    public GeneratePresignedUrlRequest withContentMd5(String contentMd5) {
        this. = contentMd5;
        return this;
    }
    @Override
    public SSECustomerKey getSSECustomerKey() {
        return ;
    }

    
Sets the customer-provided server-side encryption key to use as part of the generated pre-signed URL.

Parameters:
sseCustomerKey The customer-provided server-side encryption key to use as part of the generated pre-signed URL.
    public void setSSECustomerKey(SSECustomerKey sseCustomerKey) {
        this. = sseCustomerKey;
    }

    
Sets the customer-provided server-side encryption key to use as part of the generated pre-signed URL, and returns the updated request object so that additional method calls can be chained together.

Parameters:
sseKey The customer-provided server-side encryption key to use as part of the generated pre-signed URL.
Returns:
This updated request object so that additional method calls can be chained together.
        setSSECustomerKey(sseKey);
        return this;
    }

    
Sets the use of SSE-C (Server Side Encryption with Customer Key) using the given encryption algorithm.

Parameters:
sseAlgorithm The server-side encryption algorithm to use with this customer-provided server-side encryption key; or null if SSE-C is disabled. "AES256" is currently the only supported SSE-C encryption algorithm.
    public void setSSECustomerKeyAlgorithm(SSEAlgorithm sseAlgorithm) {
        if (sseAlgorithm == null)
            this. = null;
        else if (sseAlgorithm.getAlgorithm().equals(..getAlgorithm())) {
            this. =
                SSECustomerKey.generateSSECustomerKeyForPresignUrl(sseAlgorithm.getAlgorithm());
        } else {
            throw new IllegalArgumentException(
                "Currently the only supported Server Side Encryption algorithm is "
                + .);
        }
    }

    
        setSSECustomerKeyAlgorithm(algorithm);
        return this;
    }

    
Returns true if zero byte content is to be used for generating pre-signed URL; false otherwise.
    public boolean isZeroByteContent() {
        return ;
    }

    
Sets if zero byte content is to be used for generating pre-signed URL.
    public void setZeroByteContent(boolean zeroByteContent) {
        this. = zeroByteContent;
    }

    
Fluent method for setZeroByteContent(boolean).
    public GeneratePresignedUrlRequest withZeroByteContent(boolean zeroByteContent) {
        setZeroByteContent(zeroByteContent);
        return this;
    }

    
Rejects any illegal input (as attributes of this request) by the user.

Throws:
java.lang.IllegalArgumentException if there is illegal input from the user.
    public void rejectIllegalArguments() {
        if ( == null) {
            throw new IllegalArgumentException(
                    "The bucket name parameter must be specified when generating a pre-signed URL");
        }
        if (this. == null) {
            throw new IllegalArgumentException(
                    "The HTTP method request parameter must be specified when generating a pre-signed URL");
        }
        if (this. != null) {
            if (this. != null) {
                throw new IllegalArgumentException("Either SSE or SSE-C can be specified but not both");
            }
            if (this. != null) {
                throw new IllegalArgumentException("KMS CMK is not applicable for SSE-C");
            }
        } else if (this. != null) {
            if (!..getAlgorithm().equals()) {
                throw new IllegalArgumentException(
                        "For KMS server side encryption, the SSE algorithm must be set to "
                                + .);
            }
        }
        /*
         * S3 does not require HTTP header
         * ???x-amz-server-side-encryption-aws-kms-key-id??? to be always present (a
         * default key ID will be used if this header is not present).
         *
         * It is also possible to set the header to ???alias/aws/s3??? to refer
         * to the default KMS CMK ID.
         */
    }
New to GrepCode? Check out our FAQ X