/// <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(); }
/// <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); }); }
/// <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; }
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); }