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.UseOriginalHost = 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
            {
                return(false);
            }

            return(true);
        }
示例#2
0
        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);
        }