public bool Build(TransformBuilderContext context, IReadOnlyDictionary <string, string> transformValues) { if (transformValues.TryGetValue(RequestHeadersCopyKey, out var copyHeaders)) { TransformHelpers.CheckTooManyParameters(transformValues, expected: 1); context.CopyRequestHeaders = bool.Parse(copyHeaders); } else if (transformValues.TryGetValue(RequestHeaderOriginalHostKey, out var originalHost)) { TransformHelpers.CheckTooManyParameters(transformValues, expected: 1); context.AddOriginalHost(bool.Parse(originalHost)); } else if (transformValues.TryGetValue(RequestHeaderKey, out var headerName)) { TransformHelpers.CheckTooManyParameters(transformValues, expected: 2); if (transformValues.TryGetValue(SetKey, out var setValue)) { context.AddRequestHeader(headerName, setValue, append: false); } else if (transformValues.TryGetValue(AppendKey, out var appendValue)) { context.AddRequestHeader(headerName, appendValue, append: true); } else { throw new ArgumentException($"Unexpected parameters for RequestHeader: {string.Join(';', transformValues.Keys)}. Expected 'Set' or 'Append'"); } } else if (transformValues.TryGetValue(RequestHeaderRemoveKey, out var removeHeaderName)) { TransformHelpers.CheckTooManyParameters(transformValues, expected: 1); context.AddRequestHeaderRemove(removeHeaderName); } else if (transformValues.TryGetValue(RequestHeadersAllowedKey, out var allowedHeaders)) { TransformHelpers.CheckTooManyParameters(transformValues, expected: 1); var headersList = allowedHeaders.Split(';', options: StringSplitOptions.RemoveEmptyEntries #if NET | StringSplitOptions.TrimEntries #endif ); context.AddRequestHeadersAllowed(headersList); } else { return(false); } return(true); }