Пример #1
0
 internal static void AssertNotInTerminalState(this IIdxResponse response)
 {
     if (response?.IdxMessages?.Messages?.Any() ?? false)
     {
         throw new TerminalStateException(response.IdxMessages);
     }
 }
Пример #2
0
        internal static async Task <IIdxResponse> ProceedWithRemediationOptionAsync(this IIdxResponse response, string remediationType, IdxRequestPayload request, CancellationToken cancellationToken = default)
        {
            var remediationOption = response.FindRemediationOption(remediationType, true);

            return(await remediationOption
                   .ProceedAsync(request, cancellationToken));
        }
Пример #3
0
        internal static IRemediationOption FindRemediationOption(this IIdxResponse response, string remediationType, bool throwIfNotFound = false)
        {
            var option = response
                         .Remediation?
                         .RemediationOptions?
                         .FirstOrDefault(x => x.Name == remediationType);

            if (option == null && throwIfNotFound)
            {
                throw new UnexpectedRemediationException(remediationType, response);
            }

            return(option);
        }
Пример #4
0
        private static string GetDetailedErrorMessage(IList <string> expectedRemediationNames, IIdxResponse receivedResponse)
        {
            var remediationNamesList = receivedResponse?.Remediation?.RemediationOptions?.Select(x => x.Name).ToList() ?? new List <string>();

            return($@"Unexpected remediation step: Expected '['{string.Join(" or ", expectedRemediationNames)}']' but received ['{string.Join(",", remediationNamesList)}'].
                    Verify that your policies are configured as expected.");
        }
Пример #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UnexpectedRemediationException"/> class.
 /// </summary>
 /// <param name="expectedRemediationNames">The expected remediation names.</param>
 /// <param name="receivedResponse">The received response.</param>
 public UnexpectedRemediationException(IList <string> expectedRemediationNames, IIdxResponse receivedResponse)
     : base(GetDetailedErrorMessage(expectedRemediationNames, receivedResponse))
 {
 }
Пример #6
0
 internal static bool ContainsRemediationOption(this IIdxResponse response, string remediationType) =>
 response.Remediation?.RemediationOptions?.Any(x => x.Name == remediationType) ?? false;