private static bool IsRetryConditionSatisfied(HttpResponseMessage httpResponseMessage, RetryType retryType, object retryParameter)
{
switch (retryType)
{
case RetryType.UntilStatusCodeEquals:
{
if (httpResponseMessage.StatusCode == (HttpStatusCode)retryParameter)
{
return true;
}
break;
}
case RetryType.UntilBodyIncludes:
{
var result = httpResponseMessage.Content.ReadAsStringAsync().Result;
var enumerableParameter = retryParameter as IEnumerable<object>;
if (enumerableParameter != null)
{
if (enumerableParameter.All(p => result.Contains(p.ToString())))
return true;
}
else if (result.Contains(retryParameter.ToString()))
{
return true;
}
break;
}
case RetryType.UntilBodyDoesNotInclude:
{
var result = httpResponseMessage.Content.ReadAsStringAsync().Result;
var enumerableParameter = retryParameter as IEnumerable<object>;
if (enumerableParameter != null)
{
if (!enumerableParameter.Any(p => result.Contains(p.ToString())))
return true;
}
else if (!result.Contains(retryParameter.ToString()))
{
return true;
}
break;
}
}
return false;
}