All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.s3.model.GetObjectRequest Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon S3 module holds the client classes that are used for communicating with Amazon Simple Storage Service

There is a newer version: 1.12.778
Show newest version
/*
 * Copyright 2010-2024 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 com.amazonaws.AmazonWebServiceRequest;
import com.amazonaws.event.ProgressListener;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.internal.Constants;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * 

Retrieves objects from Amazon S3. To use GET, you must have READ access to the object. If you * grant READ access to the anonymous user, you can return the object without using an authorization header.

* *

An Amazon S3 bucket has no directory hierarchy such as you would find in a typical computer file system. You can, however, * create a logical hierarchy by using object key names that imply a folder structure. For example, instead of naming an object * sample.jpg, you can name it photos/2006/February/sample.jpg.

* *

To get an object from such a logical hierarchy, specify the full key name for the object in the GET * operation. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg, * specify the resource as /photos/2006/February/sample.jpg. For a path-style request example, if you have the * object photos/2006/February/sample.jpg in the bucket named examplebucket, specify the resource as * /examplebucket/photos/2006/February/sample.jpg. For more information about request types, see * HTTP Host Header * Bucket Specification.

* *

To distribute large files to many people, you can save bandwidth costs by using BitTorrent. For more information, see * Amazon S3 Torrent. For more information about * returning the ACL of an object, see * GetObjectAcl.

* *

If the object you are retrieving is stored in the S3 Glacier or S3 Glacier Deep Archive storage class, or S3 Intelligent- * Tiering Archive or S3 Intelligent-Tiering Deep Archive tiers, before you can retrieve the object you must first restore a copy * using RestoreObject. Otherwise, this * action returns an InvalidObjectState error. For information about restoring archived objects, see * Restoring Archived Objects.

* *

Encryption request headers, like x-amz-server-side-encryption, should not be sent for GET requests if your * object uses server-side encryption with CMKs stored in Amazon Web Services KMS (SSE-KMS) or server-side encryption with Amazon * S3–managed encryption keys (SSE-S3). If your object does use these types of keys, you’ll get an HTTP 400 BadRequest error.

* *

If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the * object in Amazon S3, then when you GET the object, you must use the following headers:

* *
    *
  • x-amz-server-side-encryption-customer-algorithm

  • *
  • x-amz-server-side-encryption-customer-key

  • *
  • x-amz-server-side-encryption-customer-key-MD5

  • *
* *

For more information about SSE-C, see * Server-Side Encryption * (Using Customer-Provided Encryption Keys).

Assuming you have the relevant permission to read object tags, the * response also returns the x-amz-tagging-count header that provides the count of number of tags associated with * the object. You can use GetObjectTagging * to retrieve the tag set associated with an object.

* *

Permissions

* *

You need the relevant read object (or version) permission for this operation. For more information, * see Specifying Permissions in a * Policy. If the object you request does not exist, the error Amazon S3 returns depends on whether you also have the * s3:ListBucket permission.

* *
    *
  • If you have the s3:ListBucket permission on the bucket, Amazon S3 will return an HTTP status code * 404 (\"no such key\") error.

  • *
  • If you don’t have the s3:ListBucket permission, Amazon S3 will return an HTTP status code 403 * (\"access denied\") error.

  • *
* *

Versioning

* *

By default, the GET action returns the current version of an object. To return a different version, use the * versionId subresource.

* * *
    *
  • You need the s3:GetObjectVersion permission to access a specific version of an object.

  • *
  • If the current version of the object is a delete marker, Amazon S3 behaves as if the object was deleted and * includes x-amz-delete-marker: true in the response.

  • *
*
* *

For more information about versioning, see * PutBucketVersioning.

* *

Overriding Response Header Values

* *

There are times when you want to override certain response header values in a GET response. For example, you might * override the Content-Disposition response header value in your GET request.

You can override values for a set of * response headers using the following query parameters. These response header values are sent only on a successful request, * that is, when status code 200 OK is returned. The set of headers you can override using these parameters is a subset of the * headers that Amazon S3 accepts when you create an object. The response headers that you can override for the GET response * are Content-Type, Content-Language, Expires, Cache-Control, * Content-Disposition, and Content-Encoding. To override these header values in the GET response, you * use the following request parameters.

* * *

You must sign the request, either using an Authorization header or a presigned URL, when using these parameters. They * cannot be used with an unsigned (anonymous) request.

*
* *
    *
  • response-content-type

  • *
  • response-content-language

  • *
  • response-expires

  • *
  • response-cache-control

    *
  • response-content-disposition

  • *
  • response-content-encoding

  • *
* *

Additional Considerations about Request Headers

* *

If both of the If-Match and If-Unmodified-Since headers are present in the request as * follows: If-Match condition evaluates to true, and; If-Unmodified-Since condition * evaluates to false; then, S3 returns 200 OK and the data requested.

* *

If both of the If-None-Match and If-Modified-Since headers are present in the request as * follows: If-None-Match condition evaluates to false, and; If-Modified-Since condition * evaluates to true; then, S3 returns 304 Not Modified response code.

For more information about conditional * requests, see RFC 7232.

The following operations are related to * GetObject:

* * * * @see GetObjectRequest#GetObjectRequest(String, String) * @see GetObjectRequest#GetObjectRequest(String, String, String) * @see GetObjectMetadataRequest */ public class GetObjectRequest extends AmazonWebServiceRequest implements SSECustomerKeyProvider, Serializable, ExpectedBucketOwnerRequest { /** * Builder of an S3 object identifier. This member field is never null. */ private S3ObjectIdBuilder s3ObjectIdBuilder = new S3ObjectIdBuilder(); /** Optional member indicating the byte range of data to retrieve */ private long[] range; /** * Optional list of ETag values that constrain this request to only be * executed if the object's ETag matches one of the specified ETag values. */ private List matchingETagConstraints = new ArrayList(); /** * Optional list of ETag values that constrain this request to only be * executed if the object's ETag does not match any of the specified ETag * constraint values. */ private List nonmatchingEtagConstraints = new ArrayList(); /** * Optional field that constrains this request to only be executed if the * object has not been modified since the specified date. */ private Date unmodifiedSinceConstraint; /** * Optional field that constrains this request to only be executed if the * object has been modified since the specified date. */ private Date modifiedSinceConstraint; /** * Optional field that overrides headers on the response. */ private ResponseHeaderOverrides responseHeaders; /** * If enabled, the requester is charged for downloading the data from * Requester Pays Buckets. */ private boolean isRequesterPays; /** * The optional customer-provided server-side encryption key to use to * decrypt this object. */ private SSECustomerKey sseCustomerKey; /** * The part number of the requested part in a multipart object. */ private Integer partNumber; private String expectedBucketOwner; /** * Constructs a new {@link GetObjectRequest} with all the required parameters. * *

* When using this action with an access point, you must direct requests to the access point hostname. The * access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action * with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the * bucket name. For more information about access point ARNs, see Using access points * in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The * S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts in the * Amazon S3 User Guide. *

* * @param bucketName * The name of the bucket, or access point ARN, containing the desired object. *

* When using this action with an access point, you must direct requests to the access point hostname. * The access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this * action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in * place of the bucket name. For more information about access point ARNs, see Using access * points in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts * hostname. The S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts * in the Amazon S3 User Guide. * @param key * The key in the specified bucket under which the object is * stored. * * @see GetObjectRequest#GetObjectRequest(String, String, String) * @see GetObjectRequest#GetObjectRequest(String, String, boolean) */ public GetObjectRequest(String bucketName, String key) { this(bucketName, key, null); } /** * Constructs a new {@link GetObjectRequest} with all the required parameters. * *

* When using this action with an access point, you must direct requests to the access point hostname. The * access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action * with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the * bucket name. For more information about access point ARNs, see Using access points * in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The * S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts in the * Amazon S3 User Guide. *

* * @param bucketName * The name of the bucket, or access point ARN, containing the desired object. *

* When using this action with an access point, you must direct requests to the access point hostname. * The access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this * action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in * place of the bucket name. For more information about access point ARNs, see Using access * points in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts * hostname. The S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts * in the Amazon S3 User Guide. * @param key * The key in the specified bucket under which the object is * stored. * @param versionId * The Amazon S3 version ID specifying a specific version of the * object to download. * * @see GetObjectRequest#GetObjectRequest(String, String) * @see GetObjectRequest#GetObjectRequest(String, String, boolean) */ public GetObjectRequest(String bucketName, String key, String versionId) { setBucketName(bucketName); setKey(key); setVersionId(versionId); } public GetObjectRequest(S3ObjectId s3ObjectId) { this.s3ObjectIdBuilder = new S3ObjectIdBuilder(s3ObjectId); } /** * Constructs a new {@link GetObjectRequest} with all the required * parameters. * *

* When using this action with an access point, you must direct requests to the access point hostname. The * access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action * with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the * bucket name. For more information about access point ARNs, see Using access points * in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The * S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts in the * Amazon S3 User Guide. *

* * @param bucketName * The name of the bucket, or access point ARN, containing the desired object. *

* When using this action with an access point, you must direct requests to the access point hostname. * The access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this * action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in * place of the bucket name. For more information about access point ARNs, see Using access * points in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts * hostname. The S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts * in the Amazon S3 User Guide. * @param key * The key in the specified bucket under which the object is * stored. * @param isRequesterPays * If enabled, the requester is charged for downloading the data * from Requester Pays Buckets. * * @see GetObjectRequest#GetObjectRequest(String, String) * @see GetObjectRequest#GetObjectRequest(String, String, String) */ public GetObjectRequest(String bucketName, String key, boolean isRequesterPays) { this.s3ObjectIdBuilder .withBucket(bucketName) .withKey(key) ; this.isRequesterPays = isRequesterPays; } public String getExpectedBucketOwner() { return expectedBucketOwner; } public GetObjectRequest withExpectedBucketOwner(String expectedBucketOwner) { this.expectedBucketOwner = expectedBucketOwner; return this; } public void setExpectedBucketOwner(String expectedBucketOwner) { withExpectedBucketOwner(expectedBucketOwner); } /** *

* The bucket name containing the object. *

*

* When using this action with an access point, you must direct requests to the access point hostname. The * access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action * with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the * bucket name. For more information about access point ARNs, see Using access points * in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The * S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts in the * Amazon S3 User Guide. *

* * @return The bucket name containing the object.

*

* When using this action with an access point, you must direct requests to the access point hostname. * The access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this * action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in * place of the bucket name. For more information about access point ARNs, see Using access * points in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts * hostname. The S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts * in the Amazon S3 User Guide. * * @see GetObjectRequest#setBucketName(String) * @see GetObjectRequest#withBucketName(String) */ public String getBucketName() { return s3ObjectIdBuilder.getBucket(); } /** *

* The bucket name containing the object. *

*

* When using this action with an access point, you must direct requests to the access point hostname. The * access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action * with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the * bucket name. For more information about access point ARNs, see Using access points * in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The * S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts in the * Amazon S3 User Guide. *

* * @param bucketName * The bucket name containing the object.

*

* When using this action with an access point, you must direct requests to the access point hostname. * The access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this * action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in * place of the bucket name. For more information about access point ARNs, see Using access * points in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts * hostname. The S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts * in the Amazon S3 User Guide. * * @see GetObjectRequest#getBucketName() * @see GetObjectRequest#withBucketName(String) */ public void setBucketName(String bucketName) { s3ObjectIdBuilder.setBucket(bucketName); } /** *

* The bucket name containing the object. *

*

* When using this action with an access point, you must direct requests to the access point hostname. The * access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action * with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the * bucket name. For more information about access point ARNs, see Using access points * in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The * S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts in the * Amazon S3 User Guide. *

* * @param bucketName * The bucket name containing the object.

*

* When using this action with an access point, you must direct requests to the access point hostname. * The access point hostname takes the form * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this * action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in * place of the bucket name. For more information about access point ARNs, see Using access * points in the Amazon S3 User Guide. *

*

* When you use this action with Amazon S3 on Outposts, you must direct requests to the S3 on Outposts * hostname. The S3 on Outposts hostname takes the form * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. * When you use this action using S3 on Outposts through the Amazon Web Services SDKs, you provide the Outposts * access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, see What is S3 on Outposts * in the Amazon S3 User Guide. * * @return This {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @see GetObjectRequest#getBucketName() * @see GetObjectRequest#setBucketName(String) */ public GetObjectRequest withBucketName(String bucketName) { setBucketName(bucketName); return this; } /** * Gets the key under which the object to be downloaded is stored. * * @return The key under which the object to be downloaded is stored. * * @see GetObjectRequest#setKey(String) * @see GetObjectRequest#withKey(String) */ public String getKey() { return s3ObjectIdBuilder.getKey(); } /** * Sets the key under which the object to be downloaded is stored. * * @param key * The key under which the object to be downloaded is stored. * * @see GetObjectRequest#getKey() * @see GetObjectRequest#withKey(String) */ public void setKey(String key) { s3ObjectIdBuilder.setKey(key); } /** * Sets the key under which the object to be downloaded is stored. * Returns this {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @param key * The key under which the object to be downloaded is stored. * * @return This {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @see GetObjectRequest#getKey() * @see GetObjectRequest#setKey(String) */ public GetObjectRequest withKey(String key) { setKey(key); return this; } /** *

* Gets the optional version ID specifying which version of the object to * download. If not specified, the most recent version will be downloaded. *

*

* Objects created before versioning was enabled or when versioning is * suspended are given the default null version ID (see * {@link Constants#NULL_VERSION_ID}). Note that the * null version ID is a valid version ID and is not the * same as not having a version ID. *

*

* For more information about enabling versioning for a bucket, see * {@link AmazonS3#setBucketVersioningConfiguration(SetBucketVersioningConfigurationRequest)}. *

* * @return The optional version ID specifying which version of the object to * download. If not specified, the most recent version will be * downloaded. * * @see GetObjectRequest#setVersionId(String) * @see GetObjectRequest#withVersionId(String) */ public String getVersionId() { return s3ObjectIdBuilder.getVersionId(); } /** * Sets the optional version ID specifying which version of the object to * download. If not specified, the most recent version will be downloaded. *

* Objects created before versioning was enabled or when versioning is * suspended will be given the default null version ID (see * {@link Constants#NULL_VERSION_ID}). Note that the * null version ID is a valid version ID and is not the * same as not having a version ID. *

*

* For more information about enabling versioning for a bucket, see * {@link AmazonS3#setBucketVersioningConfiguration(SetBucketVersioningConfigurationRequest)}. *

* * @param versionId * The optional version ID specifying which version of the object * to download. * * @see GetObjectRequest#getVersionId() * @see GetObjectRequest#withVersionId(String) */ public void setVersionId(String versionId) { s3ObjectIdBuilder.setVersionId(versionId); } /** *

* Sets the optional version ID specifying which version of the object to * download and returns this object, enabling additional method calls to be * chained together. If not specified, the most recent version will be * downloaded. *

*

* Objects created before versioning was enabled or when versioning is * suspended will be given the default or null version ID (see * {@link Constants#NULL_VERSION_ID}). Note that the * null version ID is a valid version ID and is not the * same as not having a version ID. *

*

* For more information about enabling versioning for a bucket, see * {@link AmazonS3#setBucketVersioningConfiguration(SetBucketVersioningConfigurationRequest)}. *

* * @param versionId * The optional version ID specifying which version of the object * to download. * * @return The updated request object, enabling additional method calls to be * chained together. * * @see GetObjectRequest#getVersionId() * @see GetObjectRequest#setVersionId(String) */ public GetObjectRequest withVersionId(String versionId) { setVersionId(versionId); return this; } /* * Optional Request Parameters */ /** *

* Gets the optional inclusive byte range within the desired object * that will be downloaded by this request. *

*

* The range is returned as * a two element array, containing the start and end index of the byte range. * If no byte range has been specified, the entire object is downloaded and * this method returns null. *

* @return A two element array indicating the inclusive start index and end index * within the object being downloaded by this request. * Returns null if no range has been specified, * and the whole object is * to be downloaded. * * @see #setRange(long, long) * @see #withRange(long, long) */ public long[] getRange() { return range == null ? null : range.clone(); } /** *

* Sets the optional inclusive byte range within the desired object that * will be downloaded by this request. *

*

* The first byte in an object has * position 0; as an example, the first ten bytes of an object can be * downloaded by specifying a range of 0 to 9. *

*

* If no byte range is specified, this request downloads the entire * object from Amazon S3. *

* * @param start * The start of the inclusive byte range to download. * @param end * The end of the inclusive byte range to download. * * @see #getRange() * @see #withRange(long, long) */ public void setRange(long start, long end) { range = new long[] {start, end}; } /** *

* Sets the optional inclusive start range within the desired object that the * rest of which will be downloaded by this request. *

*

* The first byte in an object has * position 0; as an example, the object is of 10 bytes in length, the last * 4 bytes can be downloaded by specifying the start range as 6. *

*

* If no byte range is specified, this request downloads the entire * object from Amazon S3. *

* * @param start * The start of the inclusive byte range to download. * * @see #setRange(long, long) * @see #withRange(long) */ public void setRange(long start) { setRange(start, Long.MAX_VALUE - 1); } /** *

* Sets the optional inclusive byte range within the desired object that * will be downloaded by this request. * Returns this {@link GetObjectRequest}, enabling additional method * calls to be chained together. *

*

* The first byte in an object has * position 0; as an example, the first ten bytes of an object can be * downloaded by specifying a range of 0 to 9. *

*

* If no byte range is specified, this request downloads the entire * object from Amazon S3. *

* * @param start * The start of the inclusive byte range to download. * @param end * The end of the inclusive byte range to download. * * @return This {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @see GetObjectRequest#getRange() * @see GetObjectRequest#setRange(long, long) */ public GetObjectRequest withRange(long start, long end) { setRange(start, end); return this; } /** *

* Sets the optional inclusive start range within the desired object that the * rest of which will be downloaded by this request. *

* Returns this {@link GetObjectRequest}, enabling additional method * calls to be chained together. *

* The first byte in an object has * position 0; as an example, the object is of 10 bytes in length, the last * 4 bytes can be downloaded by specifying the start range as 6. *

*

* If no byte range is specified, this request downloads the entire * object from Amazon S3. *

* * @param start * The start of the inclusive byte range to download. * * @return This {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @see #withRange(long, long) * @see #setRange(long) */ public GetObjectRequest withRange(long start) { setRange(start); return this; } /** * Gets the optional list of ETag constraints that, when present, must * include a match for the object's current ETag in order for this * request to be executed. Only one ETag in the list needs to match for this * request to be executed by Amazon S3. * * @return The optional list of ETag constraints that when present must * include a match for the object's current ETag in order for this * request to be executed. * * @see GetObjectRequest#setMatchingETagConstraints(List) * @see GetObjectRequest#withMatchingETagConstraint(String) */ public List getMatchingETagConstraints() { return matchingETagConstraints; } /** * Sets the optional list of ETag constraints that when present must * include a match for the object's current ETag in order for this * request to be executed. If none of the specified ETags match the object's * current ETag, this request will not be executed. Only one ETag in the * list needs to match for the request to be executed by Amazon S3. * * @param eTagList * The optional list of ETag constraints that must include a * match for the object's current ETag in order for this request * to be executed. * * @see GetObjectRequest#getMatchingETagConstraints() * @see GetObjectRequest#withMatchingETagConstraint(String) */ public void setMatchingETagConstraints(List eTagList) { this.matchingETagConstraints = eTagList; } /** * Sets a single ETag constraint to this request. * Returns this {@link GetObjectRequest}, enabling additional method * calls to be chained together. *

* Multiple ETag constraints can be added to a request, but one must match the object's * current ETag in order for this request to be executed. If none of the * ETag constraints added to this request match the object's current ETag, * this request will not be executed by Amazon S3. *

* * @param eTag * The matching ETag constraint to add to this request. * * @return This {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @see GetObjectRequest#getMatchingETagConstraints() * @see GetObjectRequest#setMatchingETagConstraints(List) */ public GetObjectRequest withMatchingETagConstraint(String eTag) { this.matchingETagConstraints.add(eTag); return this; } /** * Gets the optional list of ETag constraints that when present, must * not include a match for the object's current ETag in order for this * request to be executed. If any entry in the non-matching ETag constraint * list matches the object's current ETag, this request will not be * executed by Amazon S3. * * @return The optional list of ETag constraints that when present, must * not include a match for the object's current ETag in order * for this request to be executed. * * @see GetObjectRequest#setNonmatchingETagConstraints(List) * @see GetObjectRequest#withNonmatchingETagConstraint(String) */ public List getNonmatchingETagConstraints() { return nonmatchingEtagConstraints; } /** * Sets the optional list of ETag constraints that when present must * not include a match for the object's current ETag in order for this * request to be executed. If any entry in the non-matching ETag constraint * list matches the object's current ETag, this request will not be * executed by Amazon S3. * * @param eTagList * The list of ETag constraints that, when present, must not * include a match for the object's current ETag in order for * this request to be executed. * * @see GetObjectRequest#getNonmatchingETagConstraints() * @see GetObjectRequest#withNonmatchingETagConstraint(String) */ public void setNonmatchingETagConstraints(List eTagList) { this.nonmatchingEtagConstraints = eTagList; } /** * Sets a single ETag constraint to this request. * Returns this {@link GetObjectRequest}, enabling additional method * calls to be chained together. *

* Multiple ETag * constraints can be added to a request, but all ETag constraints must * not match the object's current ETag in order for this request to be * executed. If any entry in the non-matching ETag constraint list matches * the object's current ETag, this request will not be executed by * Amazon S3. *

* * @param eTag * The non-matching ETag constraint to add to this request. * * @return This {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @see GetObjectRequest#getNonmatchingETagConstraints() * @see GetObjectRequest#setNonmatchingETagConstraints(List) */ public GetObjectRequest withNonmatchingETagConstraint(String eTag) { this.nonmatchingEtagConstraints.add(eTag); return this; } /** * Gets the optional unmodified constraint that restricts this * request to executing only if the object has not been * modified after the specified date. * * @return The optional unmodified constraint that restricts this * request to executing only if the object has not * been modified after the specified date. * * @see GetObjectRequest#setUnmodifiedSinceConstraint(Date) * @see GetObjectRequest#withUnmodifiedSinceConstraint(Date) */ public Date getUnmodifiedSinceConstraint() { return unmodifiedSinceConstraint; } /** * Sets the optional unmodified constraint that restricts this request * to executing only if the object has not been modified after * the specified date. *

* Note that Amazon S3 will ignore any dates occurring in the future. * * @param date * The unmodified constraint that restricts this request to * executing only if the object has not been * modified after this date. * * @see GetObjectRequest#getUnmodifiedSinceConstraint() * @see GetObjectRequest#withUnmodifiedSinceConstraint(Date) */ public void setUnmodifiedSinceConstraint(Date date) { this.unmodifiedSinceConstraint = date; } /** * Sets the optional unmodified constraint that restricts this request * to executing only if the object has not been modified after * the specified date. * Returns this {@link GetObjectRequest}, enabling additional method * calls to be chained together. *

* Note that Amazon S3 will ignore any dates occurring in the future. * * @param date * The unmodified constraint that restricts this request to * executing only if the object has not been * modified after this date. * * @return This {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @see GetObjectRequest#getUnmodifiedSinceConstraint() * @see GetObjectRequest#setUnmodifiedSinceConstraint(Date) */ public GetObjectRequest withUnmodifiedSinceConstraint(Date date) { setUnmodifiedSinceConstraint(date); return this; } /** * Gets the optional modified constraint that restricts this * request to executing only if the object has been * modified after the specified date. * * @return The optional modified constraint that restricts this * request to executing only if the object has * been modified after the specified date. * * @see GetObjectRequest#setModifiedSinceConstraint(Date) * @see GetObjectRequest#withModifiedSinceConstraint(Date) */ public Date getModifiedSinceConstraint() { return modifiedSinceConstraint; } /** * Sets the optional modified constraint that restricts this request * to executing only if the object has been modified after the * specified date. *

* Note that Amazon S3 will ignore any dates occurring in the future. *

* * @param date * The modified constraint that restricts this request to * executing only if the object has been modified * after the specified date. * * @see GetObjectRequest#getModifiedSinceConstraint() * @see GetObjectRequest#withModifiedSinceConstraint(Date) */ public void setModifiedSinceConstraint(Date date) { this.modifiedSinceConstraint = date; } /** * Sets the optional modified constraint that restricts this request * to executing only if the object has been modified after the * specified date. * Returns this {@link GetObjectRequest}, enabling additional method * calls to be chained together. *

* Note that Amazon S3 will ignore any dates occurring in the future. * * @param date * The modified constraint that restricts this request to * executing only if the object has been modified * after the specified date. * * @return This {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @see GetObjectRequest#getModifiedSinceConstraint() * @see GetObjectRequest#setModifiedSinceConstraint(Date) */ public GetObjectRequest withModifiedSinceConstraint(Date date) { setModifiedSinceConstraint(date); return this; } /** * Returns the headers to be overridden in the service response. * * @return the headers to be overridden in the service response. */ public ResponseHeaderOverrides getResponseHeaders() { return responseHeaders; } /** * Sets the headers to be overridden in the service response. * * @param responseHeaders * The headers to be overridden in the service response. */ public void setResponseHeaders(ResponseHeaderOverrides responseHeaders) { this.responseHeaders = responseHeaders; } /** * Sets the headers to be overridden in the service response and returns * this object, for method chaining. * * @param responseHeaders * The headers to be overridden in the service response. * * @return This {@link GetObjectRequest} for method chaining. */ public GetObjectRequest withResponseHeaders(ResponseHeaderOverrides responseHeaders) { setResponseHeaders(responseHeaders); return this; } /** * Sets the optional progress listener for receiving updates about object * download status. * * @param progressListener * The legacy progress listener that is used exclusively for Amazon S3 client. * * @deprecated use {@link #setGeneralProgressListener(ProgressListener)} * instead. */ @Deprecated public void setProgressListener(com.amazonaws.services.s3.model.ProgressListener progressListener) { setGeneralProgressListener(new LegacyS3ProgressListener(progressListener)); } /** * Returns the optional progress listener for receiving updates about object * download status. * * @return the optional progress listener for receiving updates about object * download status. * * @deprecated use {@link #getGeneralProgressListener()} instead. */ @Deprecated public com.amazonaws.services.s3.model.ProgressListener getProgressListener() { ProgressListener generalProgressListener = getGeneralProgressListener(); if (generalProgressListener instanceof LegacyS3ProgressListener) { return ((LegacyS3ProgressListener)generalProgressListener).unwrap(); } else { return null; } } /** * Sets the optional progress listener for receiving updates about object * download status, and returns this updated object so that additional method * calls can be chained together. * * @param progressListener * The legacy progress listener that is used exclusively for Amazon S3 client. * * @return This updated GetObjectRequest object. * * @deprecated use {@link #withGeneralProgressListener(ProgressListener)} * instead. */ @Deprecated public GetObjectRequest withProgressListener(com.amazonaws.services.s3.model.ProgressListener progressListener) { setProgressListener(progressListener); return this; } /** * Returns true if the user has enabled Requester Pays option when * downloading an object from Requester Pays Bucket; else false. * *

* If a bucket is enabled for Requester Pays, then any attempt to read an * object from it without Requester Pays enabled will result in a 403 error * and the bucket owner will be charged for the request. * *

* Enabling Requester Pays disables the ability to have anonymous access to * this bucket * * @return true if the user has enabled Requester Pays option for * downloading an object from Requester Pays Bucket. */ public boolean isRequesterPays() { return isRequesterPays; } /** * Used for downloading an Amazon S3 Object from a Requester Pays Bucket. If * set the requester is charged for downloading the data from the bucket. * *

* If a bucket is enabled for Requester Pays, then any attempt to read an * object from it without Requester Pays enabled will result in a 403 error * and the bucket owner will be charged for the request. * *

* Enabling Requester Pays disables the ability to have anonymous access to * this bucket * * @param isRequesterPays * Enable Requester Pays option for the operation. */ public void setRequesterPays(boolean isRequesterPays) { this.isRequesterPays = isRequesterPays; } /** * Used for conducting this operation from a Requester Pays Bucket. If * set the requester is charged for requests from the bucket. It returns this * updated GetObjectRequest object so that additional method calls can be * chained together. * *

* If a bucket is enabled for Requester Pays, then any attempt to upload or * download an object from it without Requester Pays enabled will result in * a 403 error and the bucket owner will be charged for the request. * *

* Enabling Requester Pays disables the ability to have anonymous access to * this bucket. * * @param isRequesterPays * Enable Requester Pays option for the operation. * * @return The updated GetObjectRequest object. */ public GetObjectRequest withRequesterPays(boolean isRequesterPays) { setRequesterPays(isRequesterPays); return this; } @Override public SSECustomerKey getSSECustomerKey() { return sseCustomerKey; } /** * Sets the optional customer-provided server-side encryption key to use to * decrypt this object. * * @param sseKey * The optional customer-provided server-side encryption key to * use to decrypt this object. */ public void setSSECustomerKey(SSECustomerKey sseKey) { this.sseCustomerKey = sseKey; } /** * Sets the optional customer-provided server-side encryption key to use to * decrypt this object, and returns the updated GetObjectRequest so that * additional method calls may be chained together. * * @param sseKey * The optional customer-provided server-side encryption key to * use to decrypt this object. * * @return The optional customer-provided server-side encryption key to use * to decrypt this object. */ public GetObjectRequest withSSECustomerKey(SSECustomerKey sseKey) { setSSECustomerKey(sseKey); return this; } /** *

* Returns the optional part number that indicates the part to be downloaded in a multipart object. *

* * @return The part number representing a part in a multipart object. * * @see GetObjectRequest#setPartNumber(Integer) * @see GetObjectRequest#withPartNumber(Integer) */ public Integer getPartNumber() { return partNumber; } /** *

* Sets the optional part number that indicates the part to be downloaded in a multipart object. *

*

* The valid range for part number is 1 - 10000 inclusive. * Part numbers are 1 based. If an object has 1 part, partNumber=1 would be the correct not 0. * For partNumber < 1, an AmazonS3Exception is thrown with response code 400 bad request. * For partNumber larger than actual part count, an AmazonS3Exception is thrown with response code 416 Request Range Not Satisfiable. *

* * @param partNumber * The part number representing a part in a multipart object. * * @see GetObjectRequest#getPartNumber() * @see GetObjectRequest#withPartNumber(Integer) */ public void setPartNumber(Integer partNumber) { this.partNumber = partNumber; } /** *

* Sets the optional part number that indicates the part to be downloaded in a multipart object. *

*

* The valid range for part number is 1 - 10000 inclusive. * Part numbers are 1 based. If an object has 1 part, partNumber=1 would be the correct not 0. * For partNumber < 1, an AmazonS3Exception is thrown with response code 400 bad request. * For partNumber larger than actual part count, an AmazonS3Exception is thrown with response code 416 Request Range Not Satisfiable. *

* * @param partNumber * The part number representing a part in a multipart object. * * @return This {@link GetObjectRequest}, enabling additional method * calls to be chained together. * * @see GetObjectRequest#getPartNumber() * @see GetObjectRequest#setPartNumber(Integer) */ public GetObjectRequest withPartNumber(Integer partNumber) { setPartNumber(partNumber); return this; } /** * Returns an immutable S3 object id. */ public S3ObjectId getS3ObjectId() { return s3ObjectIdBuilder.build(); } /** * Sets the S3 object id for this request. */ public void setS3ObjectId(S3ObjectId s3ObjectId) { this.s3ObjectIdBuilder = new S3ObjectIdBuilder(s3ObjectId); } /** * Fluent API to set the S3 object id for this request. */ public GetObjectRequest withS3ObjectId(S3ObjectId s3ObjectId) { setS3ObjectId(s3ObjectId); return this; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } final GetObjectRequest that = (GetObjectRequest) o; if (isRequesterPays != that.isRequesterPays) { return false; } if (s3ObjectIdBuilder != null ? !s3ObjectIdBuilder.equals(that.s3ObjectIdBuilder) : that.s3ObjectIdBuilder != null) { return false; } if (!Arrays.equals(range, that.range)) { return false; } if (matchingETagConstraints != null ? !matchingETagConstraints.equals(that.matchingETagConstraints) : that.matchingETagConstraints != null) { return false; } if (nonmatchingEtagConstraints != null ? !nonmatchingEtagConstraints.equals(that.nonmatchingEtagConstraints) : that.nonmatchingEtagConstraints != null) { return false; } if (unmodifiedSinceConstraint != null ? !unmodifiedSinceConstraint.equals(that.unmodifiedSinceConstraint) : that.unmodifiedSinceConstraint != null) { return false; } if (modifiedSinceConstraint != null ? !modifiedSinceConstraint.equals(that.modifiedSinceConstraint) : that.modifiedSinceConstraint != null) { return false; } if (responseHeaders != null ? !responseHeaders.equals(that.responseHeaders) : that.responseHeaders != null) { return false; } if (sseCustomerKey != null ? !sseCustomerKey.equals(that.sseCustomerKey) : that.sseCustomerKey != null) { return false; } return partNumber != null ? partNumber.equals(that.partNumber) : that.partNumber == null; } @Override public int hashCode() { int result = s3ObjectIdBuilder != null ? s3ObjectIdBuilder.hashCode() : 0; result = 31 * result + Arrays.hashCode(range); result = 31 * result + (matchingETagConstraints != null ? matchingETagConstraints.hashCode() : 0); result = 31 * result + (nonmatchingEtagConstraints != null ? nonmatchingEtagConstraints.hashCode() : 0); result = 31 * result + (unmodifiedSinceConstraint != null ? unmodifiedSinceConstraint.hashCode() : 0); result = 31 * result + (modifiedSinceConstraint != null ? modifiedSinceConstraint.hashCode() : 0); result = 31 * result + (responseHeaders != null ? responseHeaders.hashCode() : 0); result = 31 * result + (isRequesterPays ? 1 : 0); result = 31 * result + (sseCustomerKey != null ? sseCustomerKey.hashCode() : 0); result = 31 * result + (partNumber != null ? partNumber.hashCode() : 0); return result; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy