/* * Copyright 2010-2016 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. */ using System; using System.Collections.Generic; using System.Net; using System.Text; using Amazon.Runtime; namespace Amazon.S3 { /// /// Base exception for S3 errors. /// #if !PCL && !NETSTANDARD [Serializable] #endif public class AmazonS3Exception : AmazonServiceException { /// /// Construct an instance of AmazonS3Exception /// /// public AmazonS3Exception(string message) : base(message) { } /// /// Construct an instance of AmazonS3Exception /// /// /// public AmazonS3Exception(string message, Exception innerException) : base(message, innerException) { } /// /// Construct an instance of AmazonS3Exception /// /// public AmazonS3Exception(Exception innerException) : base(innerException.Message, innerException) { } /// /// Construct an instance of AmazonS3Exception /// /// /// /// /// /// public AmazonS3Exception(string message, ErrorType errorType, string errorCode, string requestId, HttpStatusCode statusCode) : base(message, errorType, errorCode, requestId, statusCode) { } /// /// Construct an instance of AmazonS3Exception /// /// /// /// /// /// /// public AmazonS3Exception(string message, Exception innerException, ErrorType errorType, string errorCode, string requestId, HttpStatusCode statusCode) : base(message, innerException, errorType, errorCode, requestId, statusCode) { } /// /// Construct an instance of AmazonS3Exception /// /// /// /// /// /// /// /// public AmazonS3Exception(string message, Exception innerException, ErrorType errorType, string errorCode, string requestId, HttpStatusCode statusCode, string amazonId2) : base(message, innerException, errorType, errorCode, requestId, statusCode) { this.AmazonId2 = amazonId2; } /// /// Construct an instance of AmazonS3Exception /// /// /// /// /// /// /// /// /// public AmazonS3Exception(string message, Exception innerException, ErrorType errorType, string errorCode, string requestId, HttpStatusCode statusCode, string amazonId2, string amazonCfId) : base(message, innerException, errorType, errorCode, requestId, statusCode) { this.AmazonId2 = amazonId2; this.AmazonCloudFrontId = amazonCfId; } /// /// A special token that helps AWS troubleshoot problems. /// public string AmazonId2 { get; protected set; } /// /// A special token that helps AWS troubleshoot S3 accelerate problems. /// public string AmazonCloudFrontId { get; protected set; } /// /// The entire response body for this exception, if available. /// public string ResponseBody { get; internal set; } /// /// The region that the AmazonS3Exception relates to. /// internal string Region { get; set; } #region Overrides /// /// Gets the exception message. /// public override string Message { get { if (string.IsNullOrEmpty(ResponseBody)) return base.Message; else return base.Message + " " + "Response Body: " + ResponseBody; } } #endregion #if !PCL && !NETSTANDARD /// /// Constructs a new instance of the AmazonS3Exception class with serialized data. /// /// The that holds the serialized object data about the exception being thrown. /// The that contains contextual information about the source or destination. /// The parameter is null. /// The class name is null or is zero (0). protected AmazonS3Exception(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { if (info != null) { this.AmazonId2 = info.GetString("AmazonId2"); this.ResponseBody = info.GetString("ResponseBody"); } } /// /// Sets the with information about the exception. /// /// The that holds the serialized object data about the exception being thrown. /// The that contains contextual information about the source or destination. /// The parameter is a null reference (Nothing in Visual Basic). #if BCL35 [System.Security.Permissions.SecurityPermission( System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.SerializationFormatter)] #endif [System.Security.SecurityCritical] // These FxCop rules are giving false-positives for this method [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2134:MethodsMustOverrideWithConsistentTransparencyFxCopRule")] public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { base.GetObjectData(info, context); if (info != null) { info.AddValue("AmazonId2", this.AmazonId2); info.AddValue("ResponseBody", this.ResponseBody); } } #endif } }