Open
Description
Issues #247 and #248 have highlighted that making conditional behaviour can be too difficult and unintuitive to achieve.
Consider implementing additional functionality to make it easy to add extra matching conditions to requests so that registrations for the same URL can be matched depending on arbitrary conditions. For example this could be used to cause fuzzing by having requests randomly fail.
Something like this where 50% of requests on average get rate-limited:
var builder200 = new HttpRequestInterceptionBuilder()
.Requests()
.ForHttps()
.ForHost("api.github.com")
.ForPath("orgs/justeat")
.AndFor(() => DateTime.UtcNow.Millisecond % 2 != 0)
.Responds()
.WithJsonContent(new { id = 1516790, login = "justeat", url = "https://api.github.com/orgs/justeat" });
var builder429 = new HttpRequestInterceptionBuilder()
.Requests()
.ForHttps()
.ForHost("api.github.com")
.ForPath("orgs/justeat")
.AndFor(() => DateTime.UtcNow.Millisecond % 2 == 0)
.Responds()
.WithStatus(HttpStatusCode.TooManyRequests)
.WithJsonContent(new { error = "Too many requests" });
var options = new HttpClientInterceptorOptions()
.Register(builder200)
.Register(builder429);