コード例 #1
0
        public ServiceResult <ContentType> BuildAppropiateErrorResult <ContentType>(JsonErrors?sensitiveJsonErrors, JsonErrors?insensitiveJsonErrors = null)
        {
            if (sensitiveJsonErrors is null && insensitiveJsonErrors is null)
            {
                return(ServiceResult <ContentType> .Failure());
            }

            if (!ReferenceEquals(sensitiveJsonErrors, null) && getIncludeErrorDetails())
            {
                if (!ReferenceEquals(insensitiveJsonErrors, null))
                {
                    var insensitiveJsonErrorsCount = insensitiveJsonErrors.Count;

                    for (var index = 0; index < insensitiveJsonErrorsCount; index++)
                    {
                        var jsonError = insensitiveJsonErrors[index];
                        sensitiveJsonErrors.Insert(index, jsonError);
                    }
                }

                return(ServiceResult <ContentType> .Failure(sensitiveJsonErrors));
            }

            return(ServiceResult <ContentType> .Failure(insensitiveJsonErrors));
        }
コード例 #2
0
 public ServiceResultDatransject(bool succeeded, object?content, JsonErrors?errors, Type declaredType,
                                 FormatterCollection <IOutputFormatter>?formatters, MediaTypeCollection?contentTypes, int?statusCode)
 {
     Succeeded    = succeeded;
     Content      = content;
     Errors       = errors;
     DeclaredType = declaredType;
     Formatters   = formatters;
     ContentTypes = contentTypes;
     StatusCode   = statusCode;
 }
コード例 #3
0
        /// <summary>
        /// Makes a copy of <see cref="jsonErrors"/>.
        /// </summary>
        public static JsonErrors DeepCopy(this JsonErrors?jsonErrors)
        {
            var newJsonErrors = new JsonErrors();

            if (jsonErrors?.Error is null)
            {
                return(newJsonErrors);
            }

            foreach (var error in jsonErrors.Errors)
            {
                newJsonErrors.Errors.Add(new JsonError(error.Error, error.ErrorCode));
            }

            return(newJsonErrors);
        }
コード例 #4
0
        public static Exception?ToSingleOrAggregatedException(this JsonErrors?jsonErrors)
        {
            if (jsonErrors is null)
            {
                return(null);
            }

            var errors      = jsonErrors.Errors;
            var errorsCount = errors.Count;

            if (errorsCount == 0)
            {
                return(null);
            }
            else if (errorsCount == 1)
            {
                return(errors[0].Error);
            }

            return(new AggregateException(StringResources.MoreThanOneExcpetionOccuredMessage, errors.Select(x => x.Error)
                                          .ToArray()));
        }
コード例 #5
0
        /// <summary>
        /// Creates a service result factory for creating a customized service result.
        /// </summary>
        /// <typeparam name="ContentType"></typeparam>
        /// <param name="error"></param>
        /// <returns></returns>
        public static IServiceResultPostConfiguration <ServiceResult <ContentType>, ContentType> ToServiceResultFactory <ContentType>(this JsonErrors?errors)
        {
            var serviceResult = ServiceResult <ContentType> .Failure(errors);

            return(new ServiceResultPostConfiguration <ServiceResult <ContentType>, ContentType>(serviceResult, serviceResult));
        }
コード例 #6
0
 /// <summary>
 /// Creates a servce result from provided <paramref name="error"/>.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="error"></param>
 /// <returns></returns>
 public static ServiceResult <T> ToServiceResult <T>(this JsonErrors?errors) =>
 ServiceResult <T> .Failure(errors);
コード例 #7
0
 /// <summary>
 /// Creates a servce result from provided <paramref name="errors"/>.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="error"></param>
 /// <returns></returns>
 public static ServiceResult ToServiceResult(this JsonErrors?errors) =>
 ServiceResult <object> .Failure(errors);
コード例 #8
0
 public static string ToStringOrDefaultMessage(this JsonErrors?jsonErrors) =>
 jsonErrors?.ToString() ?? StringResources.DefaultErrorMessage;
コード例 #9
0
 public static Exception ToSingleOrAggregatedOrDefaultException(this JsonErrors?jsonErrors) =>
 jsonErrors.ToSingleOrAggregatedException() ?? new Exception(StringResources.DefaultErrorMessage);
コード例 #10
0
        public ServiceResult <ContentType> LogCriticalThenBuildAppropiateError <ContentType>(JsonErrors?sensitiveJsonErrors, string?insensitiveErrorMessage = null)
        {
            var insensitiveJsonErrors = insensitiveErrorMessage.ToJsonErrors();

            return(LogCriticalThenBuildAppropiateError <ContentType>(sensitiveJsonErrors, insensitiveJsonErrors));
        }
コード例 #11
0
 public ServiceResult <ContentType> LogCriticalThenBuildAppropiateError <ContentType>(JsonErrors?sensitiveJsonErrors, JsonErrors?insensitiveJsonErrors = null) =>
 LogThenBuildAppropiateError <ContentType>(LogLevel.Critical, sensitiveJsonErrors, insensitiveJsonErrors);
コード例 #12
0
        public ServiceResult <ContentType> LogThenBuildAppropiateError <ContentType>(LogLevel logLevel, JsonErrors?sensitiveJsonErrors, JsonErrors?insensitiveJsonErrors = null)
        {
            var appropiateErrorResult = BuildAppropiateErrorResult <ContentType>(sensitiveJsonErrors, insensitiveJsonErrors);

            if (!ReferenceEquals(sensitiveJsonErrors, null) || !ReferenceEquals(insensitiveJsonErrors, null))
            {
                logger?.Log(logLevel, sensitiveJsonErrors.ToSingleOrAggregatedOrDefaultException(), insensitiveJsonErrors.ToStringOrDefaultMessage());
            }

            return(appropiateErrorResult);
        }
        public static ServiceResult <TargetContentType> CopyButFailedIfFailed <SourceContentType, TargetContentType>(this IServiceResult <SourceContentType> result, JsonErrors?errors = null)
        {
            result = result ?? throw new ArgumentNullException(nameof(result));

            if (!result.Succeeded)
            {
                return(result.CopyButFailed <SourceContentType, TargetContentType>(errors));
            }

            return(result.copy <SourceContentType, TargetContentType>());
        }
        public static ServiceResult <TargetContentType> CopyButFailed <SourceContentType, TargetContentType>(this IServiceResult <SourceContentType> result, JsonErrors?errors = null)
        {
            var copiedResult = result.copy <SourceContentType, TargetContentType>();
            IMutableServiceResult mutableServiceResult = copiedResult;

            mutableServiceResult.Succeeded = false;

            if (errors != null)
            {
                mutableServiceResult.Errors = errors;
            }

            return(copiedResult);
        }