public TestHttpMessageHandler(ILoggerFactory loggerFactory, bool autoNegotiate = true, bool handleFirstPoll = true) { _logger = loggerFactory?.CreateLogger <TestHttpMessageHandler>() ?? NullLoggerFactory.Instance.CreateLogger <TestHttpMessageHandler>(); if (autoNegotiate) { OnNegotiate((_, cancellationToken) => ResponseUtils.CreateResponse(HttpStatusCode.OK, ResponseUtils.CreateNegotiationContent())); } if (handleFirstPoll) { var firstPoll = true; OnRequest(async(request, next, cancellationToken) => { cancellationToken.ThrowIfCancellationRequested(); if (ResponseUtils.IsLongPollRequest(request) && firstPoll) { firstPoll = false; return(ResponseUtils.CreateResponse(HttpStatusCode.OK)); } else { return(await next()); } }); } }
public void OnLongPoll(Func <HttpRequestMessage, CancellationToken, Task <HttpResponseMessage> > handler) { OnRequest((request, next, cancellationToken) => { if (ResponseUtils.IsLongPollRequest(request)) { return(handler(request, cancellationToken)); } else { return(next()); } }); }