コード例 #1
0
ファイル: TemplateBinder.cs プロジェクト: leloulight/Routing
        public TemplateBinder(
            UrlEncoder urlEncoder,
            ObjectPool<UriBuildingContext> pool,
            RouteTemplate template,
            RouteValueDictionary defaults)
        {
            if (urlEncoder == null)
            {
                throw new ArgumentNullException(nameof(urlEncoder));
            }

            if (pool == null)
            {
                throw new ArgumentNullException(nameof(pool));
            }

            if (template == null)
            {
                throw new ArgumentNullException(nameof(template));
            }

            _urlEncoder = urlEncoder;
            _pool = pool;
            _template = template;
            _defaults = defaults;

            // Any default that doesn't have a corresponding parameter is a 'filter' and if a value
            // is provided for that 'filter' it must match the value in defaults.
            _filters = new RouteValueDictionary(_defaults);
            foreach (var parameter in _template.Parameters)
            {
                _filters.Remove(parameter.Name);
            }
        }
コード例 #2
0
 public ChunkingCookieManager(UrlEncoder urlEncoder)
 {
     // Lowest common denominator. Safari has the lowest known limit (4093), and we leave little extra just in case.
     // See http://browsercookielimits.x64.me/.
     ChunkSize = 4090;
     ThrowForPartialCookies = true;
     Encoder = urlEncoder ?? UrlEncoder.Default;
 }
コード例 #3
0
 public JwtAuthenticationHandler(
     IOptionsMonitor <AuthenticationSchemeOptions> authOptions,
     ILoggerFactory logger,
     UrlEncoder encoder,
     ISystemClock clock)
     : base(authOptions, logger, encoder, clock)
 {
 }
コード例 #4
0
        public UriBuildingContext(UrlEncoder urlEncoder)
        {
            _urlEncoder = urlEncoder;
            _uri = new StringBuilder();
            _buffer = new List<BufferValue>();
            Writer = new StringWriter(_uri);
            _lastValueOffset = -1;

            BufferState = SegmentState.Beginning;
            UriState = SegmentState.Beginning;
        }
        /// <summary>
        /// Enables the NTLM route for challenge/response handshaking
        /// </summary>
        /// <param name="app"></param>
        /// <param name="options">An ActiveDirectoryOptions configuration</param>
        /// <returns></returns>
        public static IApplicationBuilder UseNtlm(this IApplicationBuilder app, ActiveDirectoryOptions options = null, UrlEncoder encoder = null)
        {
            if (app == null)
            {
                throw new ArgumentNullException(nameof(app));
            }

            //set default encoder if none is provided
            if (encoder == null) encoder = UrlEncoder.Default;

            if (options != null)
            {
                return app.UseMiddleware<ActiveDirectoryMiddleware>(options, encoder);
            }

            return app.UseMiddleware<ActiveDirectoryMiddleware>(encoder);
        }
コード例 #6
0
ファイル: AttributeRoute.cs プロジェクト: phinq19/git_example
        public AttributeRoute(
            IRouter target,
            IActionDescriptorCollectionProvider actionDescriptorCollectionProvider,
            IInlineConstraintResolver constraintResolver,
            ObjectPool<UriBuildingContext> contextPool,
            UrlEncoder urlEncoder,
            ILoggerFactory loggerFactory)
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target));
            }

            if (actionDescriptorCollectionProvider == null)
            {
                throw new ArgumentNullException(nameof(actionDescriptorCollectionProvider));
            }

            if (constraintResolver == null)
            {
                throw new ArgumentNullException(nameof(constraintResolver));
            }

            if (contextPool == null)
            {
                throw new ArgumentNullException(nameof(contextPool));
            }

            if (urlEncoder == null)
            {
                throw new ArgumentNullException(nameof(urlEncoder));
            }

            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _target = target;
            _actionDescriptorCollectionProvider = actionDescriptorCollectionProvider;
            _constraintResolver = constraintResolver;
            _contextPool = contextPool;
            _urlEncoder = urlEncoder;
            _loggerFactory = loggerFactory;
        }
コード例 #7
0
 public UrlEncoder(TextEncoderSettings filter)
 {
     _encoder = System.Text.Encodings.Web.UrlEncoder.Create(filter);
 }
コード例 #8
0
 public UrlEncoder()
 {
     _encoder = System.Text.Encodings.Web.UrlEncoder.Default;
 }
コード例 #9
0
        private static void RunTest(
            string template,
            RouteValueDictionary defaults,
            RouteValueDictionary ambientValues,
            RouteValueDictionary values,
            string expected,
            UrlEncoder encoder = null)
        {
            // Arrange
            encoder = encoder ?? new UrlTestEncoder();

            var binder = new TemplateBinder(
                encoder,
                new DefaultObjectPoolProvider().Create(new UriBuilderContextPooledObjectPolicy(encoder)),
                TemplateParser.Parse(template),
                defaults);

            // Act & Assert
            var result = binder.GetValues(ambientValues, values);
            if (result == null)
            {
                if (expected == null)
                {
                    return;
                }
                else
                {
                    Assert.NotNull(result);
                }
            }

            var boundTemplate = binder.BindValues(result.AcceptedValues);
            if (expected == null)
            {
                Assert.Null(boundTemplate);
            }
            else
            {
                Assert.NotNull(boundTemplate);

                // We want to chop off the query string and compare that using an unordered comparison
                var expectedParts = new PathAndQuery(expected);
                var actualParts = new PathAndQuery(boundTemplate);

                Assert.Equal(expectedParts.Path, actualParts.Path);

                if (expectedParts.Parameters == null)
                {
                    Assert.Null(actualParts.Parameters);
                }
                else
                {
                    Assert.Equal(expectedParts.Parameters.Count, actualParts.Parameters.Count);

                    foreach (var kvp in expectedParts.Parameters)
                    {
                        string value;
                        Assert.True(actualParts.Parameters.TryGetValue(kvp.Key, out value));
                        Assert.Equal(kvp.Value, value);
                    }
                }
            }
        }