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