Exemplo n.º 1
0
        internal ODataRouteBuilderContext(
            HttpConfiguration configuration,
            ODataRoute route,
            HttpActionDescriptor actionDescriptor,
            IReadOnlyList <ApiParameterDescription> parameterDescriptions,
            ModelTypeBuilder modelTypeBuilder,
            ODataApiExplorerOptions options)
        {
            Contract.Requires(configuration != null);
            Contract.Requires(route != null);
            Contract.Requires(actionDescriptor != null);
            Contract.Requires(parameterDescriptions != null);
            Contract.Requires(modelTypeBuilder != null);
            Contract.Requires(options != null);

            serviceProvider    = configuration.GetODataRootContainer(route);
            EdmModel           = serviceProvider.GetRequiredService <IEdmModel>();
            AssembliesResolver = configuration.Services.GetAssembliesResolver();
            routeAttribute     = actionDescriptor.GetCustomAttributes <ODataRouteAttribute>().FirstOrDefault();
            RouteTemplate      = routeAttribute?.PathTemplate;
            Route                 = route;
            ActionDescriptor      = actionDescriptor;
            ParameterDescriptions = parameterDescriptions;
            Options               = options;
            UrlKeyDelimiter       = configuration.GetUrlKeyDelimiter();

            var container = EdmModel.EntityContainer;

            if (container == null)
            {
                IsRouteExcluded = true;
                return;
            }

            EntitySet = container.FindEntitySet(actionDescriptor.ControllerDescriptor.ControllerName);
            Operation = container.FindOperationImports(actionDescriptor.ActionName).FirstOrDefault()?.Operation ??
                        EdmModel.FindDeclaredOperations(container.Namespace + "." + actionDescriptor.ActionName).FirstOrDefault();
            ActionType = GetActionType(EntitySet, Operation);

            if (Operation?.IsAction() == true)
            {
                ConvertODataActionParametersToTypedModel(modelTypeBuilder, (IEdmAction)Operation);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataApiExplorer"/> class.
 /// </summary>
 /// <param name="configuration">The current <see cref="HttpConfiguration">HTTP configuration</see>.</param>
 /// <param name="options">The associated <see cref="ODataApiExplorerOptions">API explorer options</see>.</param>
 public ODataApiExplorer(HttpConfiguration configuration, ODataApiExplorerOptions options) : base(configuration, options)
 {
     Options          = options;
     ModelTypeBuilder = new DefaultModelTypeBuilder(configuration.Services.GetAssembliesResolver().GetAssemblies());
 }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataApiExplorer"/> class.
 /// </summary>
 /// <param name="configuration">The current <see cref="HttpConfiguration">HTTP configuration</see>.</param>
 /// <param name="options">The associated <see cref="ODataApiExplorerOptions">API explorer options</see>.</param>
 public ODataApiExplorer(HttpConfiguration configuration, ODataApiExplorerOptions options) : base(configuration, options)
 {
     Options = options;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataApiExplorer"/> class.
 /// </summary>
 /// <param name="configuration">The current <see cref="HttpConfiguration">HTTP configuration</see>.</param>
 /// <param name="options">The associated <see cref="ODataApiExplorerOptions">API explorer options</see>.</param>
 public ODataApiExplorer( HttpConfiguration configuration, ODataApiExplorerOptions options ) : base( configuration, options )
 {
     Options = options;
     ModelTypeBuilder = new DefaultModelTypeBuilder();
 }