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); } }
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)); }
/// <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)); }