コード例 #1
0
        private static void ProcessPreRequestHandlers(IExecutionContext executionContext)
        {
            AmazonWebServiceRequest originalRequest  = executionContext.get_RequestContext().get_OriginalRequest();
            IClientConfig           clientConfig     = executionContext.get_RequestContext().get_ClientConfig();
            PutObjectRequest        putObjectRequest = originalRequest as PutObjectRequest;

            if (putObjectRequest != null)
            {
                if (putObjectRequest.InputStream != null && !string.IsNullOrEmpty(putObjectRequest.FilePath))
                {
                    throw new ArgumentException("Please specify one of either an InputStream or a FilePath to be PUT as an S3 object.");
                }
                if (!string.IsNullOrEmpty(putObjectRequest.ContentBody) && !string.IsNullOrEmpty(putObjectRequest.FilePath))
                {
                    throw new ArgumentException("Please specify one of either a FilePath or the ContentBody to be PUT as an S3 object.");
                }
                if (putObjectRequest.InputStream != null && !string.IsNullOrEmpty(putObjectRequest.ContentBody))
                {
                    throw new ArgumentException("Please specify one of either an InputStream or the ContentBody to be PUT as an S3 object.");
                }
                if (!putObjectRequest.Headers.IsSetContentType())
                {
                    string text = null;
                    if (!string.IsNullOrEmpty(putObjectRequest.FilePath))
                    {
                        text = AWSSDKUtils.GetExtension(putObjectRequest.FilePath);
                    }
                    if (string.IsNullOrEmpty(text) && putObjectRequest.IsSetKey())
                    {
                        text = AWSSDKUtils.GetExtension(putObjectRequest.Key);
                    }
                    if (!string.IsNullOrEmpty(text))
                    {
                        putObjectRequest.Headers.ContentType = AmazonS3Util.MimeTypeFromExtension(text);
                    }
                }
                if (putObjectRequest.InputStream != null && putObjectRequest.AutoResetStreamPosition && putObjectRequest.InputStream.CanSeek)
                {
                    putObjectRequest.InputStream.Seek(0L, SeekOrigin.Begin);
                }
                if (!string.IsNullOrEmpty(putObjectRequest.FilePath))
                {
                    putObjectRequest.SetupForFilePath();
                }
                else if (putObjectRequest.InputStream == null)
                {
                    if (string.IsNullOrEmpty(putObjectRequest.Headers.ContentType))
                    {
                        putObjectRequest.Headers.ContentType = "text/plain";
                    }
                    byte[] bytes = Encoding.UTF8.GetBytes(putObjectRequest.ContentBody ?? "");
                    putObjectRequest.InputStream = new MemoryStream(bytes);
                }
            }
            PutBucketRequest putBucketRequest = originalRequest as PutBucketRequest;

            if (putBucketRequest != null && putBucketRequest.UseClientRegion && !putBucketRequest.IsSetBucketRegionName() && !putBucketRequest.IsSetBucketRegion())
            {
                string text2 = DetermineBucketRegionCode(clientConfig);
                if (text2 == "us-east-1")
                {
                    text2 = null;
                }
                else if (text2 == "eu-west-1")
                {
                    text2 = "EU";
                }
                putBucketRequest.BucketRegion = text2;
            }
            DeleteBucketRequest deleteBucketRequest = originalRequest as DeleteBucketRequest;

            if (deleteBucketRequest != null && deleteBucketRequest.UseClientRegion && !deleteBucketRequest.IsSetBucketRegion())
            {
                string text3 = DetermineBucketRegionCode(clientConfig);
                if (text3 == "us-east-1")
                {
                    text3 = null;
                }
                if (text3 != null)
                {
                    deleteBucketRequest.BucketRegion = text3;
                }
            }
            UploadPartRequest uploadPartRequest = originalRequest as UploadPartRequest;

            if (uploadPartRequest != null)
            {
                if (uploadPartRequest.InputStream != null && !string.IsNullOrEmpty(uploadPartRequest.FilePath))
                {
                    throw new ArgumentException("Please specify one of either a InputStream or a FilePath to be PUT as an S3 object.");
                }
                if (uploadPartRequest.IsSetFilePath())
                {
                    uploadPartRequest.SetupForFilePath();
                }
            }
            InitiateMultipartUploadRequest initiateMultipartUploadRequest = originalRequest as InitiateMultipartUploadRequest;

            if (initiateMultipartUploadRequest != null && !initiateMultipartUploadRequest.Headers.IsSetContentType())
            {
                string extension = AWSSDKUtils.GetExtension(initiateMultipartUploadRequest.Key);
                if (!string.IsNullOrEmpty(extension))
                {
                    initiateMultipartUploadRequest.Headers.ContentType = AmazonS3Util.MimeTypeFromExtension(extension);
                }
            }
        }