/// <summary>
        /// Creates an action selector, descriptors and route builder based on
        /// the specified controller
        /// </summary>
        /// <param name="controllerType"></param>
        /// <param name="actionName">Action name of the action descriptors to return</param>
        /// <param name="routeBuilder"></param>
        /// <param name="actionSelector"></param>
        /// <param name="actionDescriptors"></param>
        public static void SetupActionSelector(System.Type controllerType,
                                               string actionName,
                                               out IRouteBuilder routeBuilder,
                                               out ODataActionSelector actionSelector,
                                               out IReadOnlyList <ControllerActionDescriptor> actionDescriptors)

        {
            routeBuilder      = RoutingConfigurationFactory.Create();
            actionDescriptors = ControllerDescriptorFactory.Create(routeBuilder, controllerType.Name, controllerType)
                                as IReadOnlyList <ControllerActionDescriptor>;
            actionDescriptors = actionDescriptors.Where(a => a.ActionName == actionName).ToList();
            var serviceProvider = routeBuilder.ServiceProvider;

#if NETCOREAPP2_0
            var actionsProvider           = serviceProvider.GetRequiredService <IActionDescriptorCollectionProvider>();
            var actionConstraintsProvider = serviceProvider.GetRequiredService <ActionConstraintCache>();
            var loggerFactory             = serviceProvider.GetRequiredService <ILoggerFactory>();
            var modelBinderFactory        = serviceProvider.GetRequiredService <IModelBinderFactory>();
            var modelMetadataProvider     = serviceProvider.GetRequiredService <IModelMetadataProvider>();
            actionSelector = new ODataActionSelector(
                actionsProvider,
                actionConstraintsProvider,
                loggerFactory,
                modelBinderFactory,
                modelMetadataProvider);
        }
Beispiel #2
0
        private void InitializeConfiguration(Action <IContainerBuilder> action)
        {
            var    configuration = RoutingConfigurationFactory.Create();
            string routeName     = HttpRouteCollectionExtensions.RouteName;

            _rootContainer = configuration.CreateODataRootContainer(routeName, action);
        }
Beispiel #3
0
        private void InitializeConfiguration(Action <IContainerBuilder> action)
        {
            var                        configuration     = RoutingConfigurationFactory.Create();
            string                     routeName         = HttpRouteCollectionExtensions.RouteName;
            IPerRouteContainer         perRouteContainer = configuration.ServiceProvider.GetRequiredService <IPerRouteContainer>();
            Action <IContainerBuilder> builderAction     = ODataRouteBuilderExtensions.ConfigureDefaultServices(configuration, action);

            _rootContainer = perRouteContainer.CreateODataRootContainer(routeName, builderAction);
        }
Beispiel #4
0
        /// <summary>
        /// Initializes a new instance of the routing configuration class.
        /// </summary>
        /// <returns>A new instance of the routing configuration class.</returns>
        public static HttpRequestMessage CreateFromModel(IEdmModel model, string uri = "http://localhost", string routeName = "Route", ODataPath path = null)
        {
            var configuration = RoutingConfigurationFactory.Create();

            configuration.MapODataServiceRoute(routeName, null, model);

            var request = RequestFactory.Create(HttpMethod.Get, uri, configuration, routeName);

            if (path != null)
            {
                request.ODataProperties().Path = path;
            }

            return(request);
        }
        /// <summary>
        /// Initializes a new instance of the routing configuration class.
        /// </summary>
        /// <returns>A new instance of the routing configuration class.</returns>
        internal static IWebApiAssembliesResolver Create(MockAssembly assembly = null)
        {
            IRouteBuilder builder = RoutingConfigurationFactory.Create();

            ApplicationPartManager applicationPartManager = builder.ApplicationBuilder.ApplicationServices.GetRequiredService <ApplicationPartManager>();

            applicationPartManager.ApplicationParts.Clear();

            if (assembly != null)
            {
                AssemblyPart part = new AssemblyPart(assembly);
                applicationPartManager.ApplicationParts.Add(part);
            }

            return(new WebApiAssembliesResolver(applicationPartManager));
        }