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

com.qcloud.cos.model.GeneratePresignedUrlRequest Maven / Gradle / Ivy

/*
 * Copyright 2010-2019 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.
 
 * According to cos feature, we modify some class,comment, field name, etc.
 */


package com.qcloud.cos.model;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import com.qcloud.cos.http.HttpMethodName;
import com.qcloud.cos.internal.CosServiceRequest;

public class GeneratePresignedUrlRequest extends CosServiceRequest {
    /** The HTTP method (GET, PUT, DELETE, HEAD) to be used in this request and when the pre-signed URL is used */
    private HttpMethodName 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 version ID of the object, only present if versioning has been
     * enabled for the bucket.
     */
    private String versionId;

    /** 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 COS. If not specified, a default
     * value will be supplied.
     */
    private Date expiration;

    /** the optional signPrefixMode decide the presigned url whether start with 'sign=' and encode value  */
    private boolean signPrefixMode = true;

    /**
     * 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 COS's torrent resource for an
     * object, or for specifying a version ID when accessing an object.
     */
    private Map requestParameters = new HashMap();

    /**
     * Optional field that overrides headers on the response.
     */
    private ResponseHeaderOverrides responseHeaders;
    
    /**
     * Creates a new request for generating a pre-signed URL that can be used as
     * part of an HTTP GET request to access the COS object stored under
     * the specified key in the specified bucket.
     *
     * @param bucketName
     *            The name of the bucket containing the desired COS
     *            object.
     * @param key
     *            The key under which the desired COS object is stored.
     */
    public GeneratePresignedUrlRequest(String bucketName, String key) {
        this(bucketName, key, HttpMethodName.GET);
    }

    /**
     * 

* Creates a new request for generating a pre-signed URL that can be used as * part of an HTTP request to access the specified COS 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. *

* * @param bucketName * The name of the COS bucket involved in the operation. * @param key * The key of the COS object involved in the operation. * @param method * The HTTP method (GET, PUT, DELETE, HEAD) to be used in the * request when the pre-signed URL is used. */ public GeneratePresignedUrlRequest(String bucketName, String key, HttpMethodName method) { this.bucketName = bucketName; this.key = key; this.method = 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. * * @return The HTTP method (GET, PUT, DELETE, HEAD) to be used in this * request and when the pre-signed URL is used. */ public HttpMethodName getMethod() { return method; } /** * 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. * * @param method * The HTTP method (GET, PUT, DELETE, HEAD) to be used in this * request. */ public void setMethod(HttpMethodName method) { this.method = 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. * * @param method * The HTTP method (GET, PUT, DELETE, HEAD) to be used in this * request. * * @return The updated request object, so that additional method calls can * be chained together. */ public GeneratePresignedUrlRequest withMethod(HttpMethodName method) { setMethod(method); return this; } /** * Returns the name of the bucket involved in this request. * * @return the name of the bucket involved in this request. */ public String getBucketName() { return bucketName; } /** * Sets the name of the bucket involved in this request. * * @param bucketName * the name of the bucket involved in this request. */ public void setBucketName(String bucketName) { this.bucketName = 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. * * @param bucketName * the name of the bucket involved in this request. * * @return 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. * * @return The key of the object involved in this request. */ public String getKey() { return key; } /** * Sets the key of the object involved in this request. * * @param key * the key of the object involved in this request. */ public void setKey(String key) { this.key = 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. * * @param key * the key of the object involved in this request. * * @return The updated request object, so that additional method calls can * be chained together. */ public GeneratePresignedUrlRequest withKey(String key) { setKey(key); return this; } /** * Returns the version ID of the object, only present if versioning has * been enabled for the bucket. * * @return The version ID of the object, only present if versioning has * been enabled for the bucket. */ public String getVersionId() { return versionId; } /** * Sets the version ID of the object, only present if versioning has * been enabled for the bucket. * * @param versionId * The version ID of the object, only present if versioning * has been enabled for the bucket. */ public void setVersionId(String versionId) { this.versionId = versionId; } /** * Sets the version ID of the object, only present if versioning has * been enabled for the bucket. Returns the {@link GeneratePresignedUrlRequest} * object for method chanining. * * @param versionId * The version ID of the object, only present if versioning * has been enabled for the bucket. * * @return This object for method chaining. */ public GeneratePresignedUrlRequest withVersionId(String versionId) { setVersionId(versionId); return this; } /** * The expiration date at which point the new pre-signed URL will no longer * be accepted by COS. If not specified, a default value will be * supplied. * * @return The expiration date at which point the new pre-signed URL will no * longer be accepted by COS. */ public Date getExpiration() { return expiration; } /** * Sets the expiration date at which point the new pre-signed URL will no * longer be accepted by COS. If not specified, a default value will * be supplied. * * @param expiration * The expiration date at which point the new pre-signed URL will * no longer be accepted by COS. */ public void setExpiration(Date expiration) { this.expiration = expiration; } /** * Sets the expiration date at which point the new pre-signed URL will no * longer be accepted by COS, and returns this request object to * enable additional method calls to be chained together. *

* If not specified, a default value will be supplied. * * @param expiration * The expiration date at which point the new pre-signed URL will * no longer be accepted by COS. * * @return 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. * * @param key * The name of the request parameter, as it appears in the URL's * query string (e.g. versionId). * @param value * The (optional) value of the request parameter being added. */ public void addRequestParameter(String key, String value) { requestParameters.put(key, value); } /** * Returns the complete map of additional request parameters to be included * in the pre-signed URL. * * @return The complete map of additional request parameters to be included * in the pre-signed URL. */ public Map getRequestParameters() { return requestParameters; } /** * 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 GeneratePresignedUrlRequest} for method chaining. */ public GeneratePresignedUrlRequest withResponseHeaders(ResponseHeaderOverrides responseHeaders) { setResponseHeaders(responseHeaders); return this; } /** * Gets the expected content-type of the request. The content-type is included in * the signature. * * @return The expected content-type */ public String getContentType() { return contentType; } /** * Sets the expected content-type of the request. The content-type is included in * the signature. * @param contentType * The expected content-type */ public void setContentType(String contentType) { this.contentType = contentType; } /** * Sets the expected content-type of the request and returns * this object, for method chaining. * * @param contentType * The expected content-type * * * @return This {@link 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. * * @return The expected content-md5 header value. */ public String getContentMd5() { return contentMd5; } /** * 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. * @param contentMd5 * The expected content-md5 header value. */ public void setContentMd5(String contentMd5) { this.contentMd5 = contentMd5; } /** * Sets the expected content-md5 header of the request and returns this * object, for method chaining. * * @param contentMd5 * The expected content-md5 header value. * * @return This {@link GeneratePresignedUrlRequest} for method chaining. */ public GeneratePresignedUrlRequest withContentMd5(String contentMd5) { this.contentMd5 = contentMd5; return this; } /** * Rejects any illegal input (as attributes of this request) by the user. * * @throws IllegalArgumentException if there is illegal input from the user. */ public void rejectIllegalArguments() { if (bucketName == null) { throw new IllegalArgumentException( "The bucket name parameter must be specified when generating a pre-signed URL"); } if (this.method == null) { throw new IllegalArgumentException( "The HTTP method request parameter must be specified when generating a pre-signed URL"); } } public boolean isSignPrefixMode() { return signPrefixMode; } public void setSignPrefixMode(boolean signPrefixMode) { this.signPrefixMode = signPrefixMode; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy