Exemple #1
0
        /// <summary>
        /// Default constructor
        /// </summary>
        /// <param name="path"></param>
        /// <param name="supportsLongerPaths"></param>
        /// <param name="handlers"></param>
        /// <param name="unknownEndPointHandler"></param>
        public HttpMethodEndPointHandler(string path, bool supportsLongerPaths, List <IEndPointMethodHandler> handlers, IUnmappedEndPointHandler unknownEndPointHandler)
        {
            Path = path;
            SupportsLongerPaths     = supportsLongerPaths;
            _unknownEndPointHandler = unknownEndPointHandler;


            _endPoints = handlers.ToArray();
        }
Exemple #2
0
        /// <inheritdoc />
        public virtual void Attach(IApplicationBuilder builder, IInternalApiConfiguration apiConfig, IServiceProvider scopedProvider)
        {
            _unmappedEndPointHandler = scopedProvider.GetService <IUnmappedEndPointHandler>();

            var endPoints = CreateEndPointDictionary(apiConfig, _unmappedEndPointHandler);

            var routeBuilder = scopedProvider.GetService <IInternalEndPointRouteBuilder>();

            _endPointHandlers = routeBuilder.BuildRouteFunc(endPoints);

            builder.Use(requestDelegate =>
            {
                _requestDelegate = requestDelegate;

                return(Execute);
            });
        }
Exemple #3
0
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="authorizationService"></param>
 /// <param name="serializationService"></param>
 /// <param name="parameterBinderDelegateBuilder"></param>
 /// <param name="methodInvokerCreationService"></param>
 /// <param name="errorHandler"></param>
 /// <param name="rawContentWriter"></param>
 /// <param name="responseDelegateCreator"></param>
 /// <param name="unmappedEndPointHandler"></param>
 /// <param name="configurationManager"></param>
 public EndPointServices(IEndPointAuthorizationService authorizationService,
                         IContentSerializationService serializationService,
                         IParameterBinderDelegateBuilder parameterBinderDelegateBuilder,
                         IMethodInvokerCreationService methodInvokerCreationService,
                         IErrorHandler errorHandler,
                         IRawContentWriter rawContentWriter,
                         IResponseDelegateCreator responseDelegateCreator,
                         IUnmappedEndPointHandler unmappedEndPointHandler,
                         IConfigurationManager configurationManager)
 {
     AuthorizationService           = authorizationService;
     SerializationService           = serializationService;
     ParameterBinderDelegateBuilder = parameterBinderDelegateBuilder;
     MethodInvokerCreationService   = methodInvokerCreationService;
     ErrorHandler            = errorHandler;
     RawContentWriter        = rawContentWriter;
     ResponseDelegateCreator = responseDelegateCreator;
     UnmappedEndPointHandler = unmappedEndPointHandler;
     ConfigurationManager    = configurationManager;
 }
Exemple #4
0
        protected virtual IDictionary <string, IEndPointHandler> CreateEndPointDictionary(
            IInternalApiConfiguration apiConfig, IUnmappedEndPointHandler unmappedEndPointHandler)
        {
            var endPointMethodHandlersDictionary = apiConfig.GetEndPointHandlers();

            var list = endPointMethodHandlersDictionary.SelectMany(pair => pair.Value.Values).ToList();

            _unmappedEndPointHandler.Configure(apiConfig, list);

            var endPointHandlerDictionary = new Dictionary <string, IEndPointHandler>();

            foreach (var kvp in endPointMethodHandlersDictionary)
            {
                var valuesList = kvp.Value.Values.ToList();

                var anyParameters = valuesList.Any(h => h.RouteInformation.Tokens.Count > 0);

                endPointHandlerDictionary[kvp.Key] = new HttpMethodEndPointHandler(kvp.Key, anyParameters, valuesList, _unmappedEndPointHandler);
            }

            return(endPointHandlerDictionary);
        }