public ResponseMessage Transform(RequestMessage requestMessage, ResponseMessage original, bool useTransformerForBodyAsFile) { var handlebarsContext = _factory.Create(); var responseMessage = new ResponseMessage(); var template = new { request = requestMessage }; switch (original.BodyData?.DetectedBodyType) { case BodyType.Json: TransformBodyAsJson(handlebarsContext.Handlebars, template, original, responseMessage); break; case BodyType.File: TransformBodyAsFile(handlebarsContext, template, original, responseMessage, useTransformerForBodyAsFile); break; case BodyType.String: responseMessage.BodyOriginal = original.BodyData.BodyAsString; TransformBodyAsString(handlebarsContext.Handlebars, template, original, responseMessage); break; } responseMessage.FaultType = original.FaultType; responseMessage.FaultPercentage = original.FaultPercentage; // Headers var newHeaders = new Dictionary <string, WireMockList <string> >(); foreach (var header in original.Headers) { var templateHeaderKey = handlebarsContext.Handlebars.Compile(header.Key); var templateHeaderValues = header.Value .Select(handlebarsContext.Handlebars.Compile) .Select(func => func(template)) .ToArray(); newHeaders.Add(templateHeaderKey(template), new WireMockList <string>(templateHeaderValues)); } responseMessage.Headers = newHeaders; switch (original.StatusCode) { case int statusCodeAsInteger: responseMessage.StatusCode = statusCodeAsInteger; break; case string statusCodeAsString: var templateForStatusCode = handlebarsContext.Handlebars.Compile(statusCodeAsString); responseMessage.StatusCode = templateForStatusCode(template); break; } return(responseMessage); }
public ResponseMessage Transform(RequestMessage requestMessage, ResponseMessage original) { var handlebarsContext = _factory.Create(); var responseMessage = new ResponseMessage { StatusCode = original.StatusCode }; var template = new { request = requestMessage }; switch (original.BodyData.DetectedBodyType) { case BodyType.Json: TransformBodyAsJson(handlebarsContext, template, original, responseMessage); break; case BodyType.File: TransformBodyAsFile(handlebarsContext, template, original, responseMessage); break; case BodyType.String: responseMessage.BodyOriginal = original.BodyData.BodyAsString; TransformBodyAsString(handlebarsContext, template, original, responseMessage); break; } // Headers var newHeaders = new Dictionary <string, WireMockList <string> >(); foreach (var header in original.Headers) { var templateHeaderKey = handlebarsContext.Compile(header.Key); var templateHeaderValues = header.Value .Select(handlebarsContext.Compile) .Select(func => func(template)) .ToArray(); newHeaders.Add(templateHeaderKey(template), new WireMockList <string>(templateHeaderValues)); } responseMessage.Headers = newHeaders; return(responseMessage); }