public IInteraction TransformClientRequestForRealService(IInteraction clientRequest) { var builder = new MarkdownInteraction.Builder() .From(clientRequest) .RequestHeaders(clientRequest.RequestHeaders //Remove unwanted headers from client request .Where(h => !_requestHeaderExcludePatterns.Any(pattern => pattern.IsMatch($"{h.Item1}: {h.Item2}"))) //Fix host header .Select(h => { (string name, string value) = h; if (name.ToLower() == "host") { return(name, _realServiceHost); } else { return(h); } }) ); return(builder.Build()); }
public async Task <ServiceResponse> GetServiceResponseForRequest(Uri host, IInteraction interaction, bool lowerCaseHeaders) { var response = await _service.InvokeServiceEndpoint( interaction.Method, null, null, new Uri($"{_redirectHost.GetLeftPart(UriPartial.Authority)}{interaction.Path}"), interaction.RequestHeaders); var builder = new MarkdownInteraction.Builder() .From(interaction) .ResponseHeaders(response.Headers); if (response.Body != null && response.ContentType != null) { builder.ResponseBody(response.Body.ToString(), response.ContentType); } else { builder.RemoveResponseBody(); } var interactionToRecord = builder.Build(); _allInteractions[interactionToRecord.Number] = interactionToRecord; return(response); }