/// <summary> /// <see cref="RecordingSessionInterceptorRequestBuilder"/> that plays back /// <paramref name="recordingSessions"/>! /// <para /> /// Based on <paramref name="requestNotFoundBehavior"/>, either initializes <see cref="RequestNotFoundResponseBuilder"/> /// to return a 404 response (<see cref="RequestNotFoundBehavior.Return404"/>) or passes through the request /// to get a live response (<see cref="RequestNotFoundBehavior.PassThrough"/>). /// </summary> public RecordingSessionInterceptorRequestBuilder( RequestNotFoundBehavior requestNotFoundBehavior, params RecordingSession[] recordingSessions) : this( req => DefaultRequestNotFoundResponseBuilder(req, requestNotFoundBehavior), recordingSessions) { }
/// <remarks> /// This is static so it can be referenced in constructor chaining /// </remarks> private static HttpWebResponse DefaultRequestNotFoundResponseBuilder( InterceptedRequest interceptedRequest, RequestNotFoundBehavior behavior) { switch (behavior) { case RequestNotFoundBehavior.PassThrough: return(interceptedRequest.PassThroughResponse()); case RequestNotFoundBehavior.Return404: return(interceptedRequest .HttpWebResponseCreator.Create( $"Request not found in {nameof(RecordedRequests)}", HttpStatusCode.NotFound)); default: throw new InvalidEnumArgumentException( $"Don't know how to handle behavior [{Enum.GetName(typeof(RequestNotFoundBehavior), behavior)}]. " + $"This is a bug in the {nameof(HttpWebRequestWrapper)} library."); } }