예제 #1
0
        private static HttpStatusCode?ToHttpStatusCode(IFulcrumError error)
        {
            switch (error.TypeId)
            {
            case BusinessRuleException.ExceptionTypeId:
            case ServerContractException.ExceptionTypeId:
            case NotFoundException.ExceptionTypeId:
                return(HttpStatusCode.BadRequest);

            case ConflictException.ExceptionTypeId:
                return(HttpStatusCode.Conflict);

            case UnauthorizedException.ExceptionTypeId:
                return(HttpStatusCode.Unauthorized);

            case AssertionFailedException.ExceptionTypeId:
                return(HttpStatusCode.InternalServerError);

            case NotImplementedException.ExceptionTypeId:
                return(HttpStatusCode.InternalServerError);

            case TryAgainException.ExceptionTypeId:
                return(HttpStatusCode.ServiceUnavailable);

            default:
                return(null);
            }
        }
예제 #2
0
        private static void ValidateExceptionType <T>(IFulcrumError fulcrumError)
            where T : FulcrumException, new()
        {
            var expectedException = new T();

            Assert.AreEqual(expectedException.TypeId, fulcrumError.TypeId,
                            $"Expected error with Fulcrum exception type {typeof(T).Name} ({expectedException.TypeId}. Error had type {fulcrumError.GetType().FullName} ({fulcrumError.TypeId}). Message was {fulcrumError.TechnicalMessage}.");
            Assert.AreEqual(expectedException.IsRetryMeaningful, fulcrumError.IsRetryMeaningful,
                            $"Error with Fulcrum exception type {typeof(T).Name} ({expectedException.TypeId} unexpectedly had IsRetryMeaningful set to {fulcrumError.IsRetryMeaningful}.");
            Assert.AreEqual(expectedException.RecommendedWaitTimeInSeconds, fulcrumError.RecommendedWaitTimeInSeconds,
                            $"Error with Fulcrum exception type {typeof(T).Name} ({expectedException.TypeId} unexpectedly had RecommendedWaitTimeInSeconds set to {fulcrumError.RecommendedWaitTimeInSeconds}.");
            Assert.IsFalse(string.IsNullOrWhiteSpace(fulcrumError.InstanceId));
        }
예제 #3
0
 /// <inheritdoc />
 public void CopyFrom(IFulcrumError fulcrumError)
 {
     TechnicalMessage             = fulcrumError.TechnicalMessage;
     FriendlyMessage              = fulcrumError.FriendlyMessage;
     MoreInfoUrl                  = fulcrumError.MoreInfoUrl;
     IsRetryMeaningful            = fulcrumError.IsRetryMeaningful;
     RecommendedWaitTimeInSeconds = fulcrumError.RecommendedWaitTimeInSeconds;
     ServerTechnicalName          = fulcrumError.ServerTechnicalName;
     InstanceId    = fulcrumError.InstanceId;
     Code          = fulcrumError.Code;
     Type          = fulcrumError.Type;
     CorrelationId = fulcrumError.CorrelationId;
 }
        /// <inheritdoc />
        public IFulcrumError CopyFrom(IFulcrumError fulcrumError)
        {
            InternalContract.RequireNotNull(fulcrumError, nameof(fulcrumError));
            TechnicalMessage             = TechnicalMessage ?? fulcrumError.TechnicalMessage;
            IsRetryMeaningful            = fulcrumError.IsRetryMeaningful;
            RecommendedWaitTimeInSeconds = fulcrumError.RecommendedWaitTimeInSeconds;
            if (fulcrumError.Type != Type)
            {
                InnerInstanceId = fulcrumError.InstanceId;
                return(this);
            }

            CorrelationId       = fulcrumError.CorrelationId;
            InstanceId          = fulcrumError.InstanceId;
            InnerInstanceId     = fulcrumError.InnerInstanceId;
            ServerTechnicalName = fulcrumError.ServerTechnicalName;
            FriendlyMessage     = fulcrumError.FriendlyMessage;
            MoreInfoUrl         = fulcrumError.MoreInfoUrl ?? MoreInfoUrl;
            Code          = fulcrumError.Code ?? Code;
            ErrorLocation = fulcrumError.ErrorLocation;
            return(this);
        }
 /// <summary>
 /// Converts <paramref name="fulcrumError"/> into a JSON string.
 /// </summary>
 /// <returns></returns>
 private static string ToJsonString(IFulcrumError fulcrumError, Formatting formatting)
 {
     return(JObject.FromObject(fulcrumError).ToString(formatting));
 }