/// <summary>
        /// Creates a new <see cref="DefaultModelMetadata"/>.
        /// </summary>
        /// <param name="provider">The <see cref="IModelMetadataProvider"/>.</param>
        /// <param name="detailsProvider">The <see cref="ICompositeMetadataDetailsProvider"/>.</param>
        /// <param name="details">The <see cref="DefaultMetadataDetails"/>.</param>
        public DefaultModelMetadata(
            IModelMetadataProvider provider,
            ICompositeMetadataDetailsProvider detailsProvider,
            DefaultMetadataDetails details)
            : base(details.Key)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            if (detailsProvider == null)
            {
                throw new ArgumentNullException(nameof(detailsProvider));
            }

            if (details == null)
            {
                throw new ArgumentNullException(nameof(details));
            }

            _provider = provider;
            _detailsProvider = detailsProvider;
            _details = details;
        }
 /// <summary>
 /// Creates a new <see cref="DefaultModelMetadata"/>.
 /// </summary>
 /// <param name="provider">The <see cref="IModelMetadataProvider"/>.</param>
 /// <param name="detailsProvider">The <see cref="ICompositeMetadataDetailsProvider"/>.</param>
 /// <param name="cache">The <see cref="DefaultMetadataDetailsCache"/>.</param>
 public DefaultModelMetadata(
     [NotNull] IModelMetadataProvider provider,
     [NotNull] ICompositeMetadataDetailsProvider detailsProvider,
     [NotNull] DefaultMetadataDetailsCache cache)
     : base(cache.Key)
 {
     _provider = provider;
     _detailsProvider = detailsProvider;
     _cache = cache;
 }
Example #3
0
 /// <summary>
 /// Creates a new <see cref="DefaultModelMetadata"/>.
 /// </summary>
 /// <param name="provider">The <see cref="IModelMetadataProvider"/>.</param>
 /// <param name="detailsProvider">The <see cref="ICompositeMetadataDetailsProvider"/>.</param>
 /// <param name="details">The <see cref="DefaultMetadataDetails"/>.</param>
 public DefaultModelMetadata(
     [NotNull] IModelMetadataProvider provider,
     [NotNull] ICompositeMetadataDetailsProvider detailsProvider,
     [NotNull] DefaultMetadataDetails details)
     : base(details.Key)
 {
     _provider = provider;
     _detailsProvider = detailsProvider;
     _details = details;
 }
 public XpoMetadataProvider(ICompositeMetadataDetailsProvider detailsProvider) : base(detailsProvider)
 {
 }
 public XpoMetadataProvider(ICompositeMetadataDetailsProvider detailsProvider, IOptions <MvcOptions> optionsAccessor) : base(detailsProvider, optionsAccessor)
 {
 }
 public EntityModelMetadata(IModelMetadataProvider provider, ICompositeMetadataDetailsProvider detailsProvider,
                            EntityMetadataDetails details) : base(provider, detailsProvider, details)
 {
     _details         = details;
     _detailsProvider = detailsProvider;
 }
 public AbpModelMetadataProvider(ICompositeMetadataDetailsProvider detailsProvider)
     : base(detailsProvider)
 {
 }
 /// <inheritdoc />
 public JsonApiModelMetadataProvider(ICompositeMetadataDetailsProvider detailsProvider, IOptions <MvcOptions> optionsAccessor, IRequestScopedServiceProvider serviceProvider)
     : base(detailsProvider, optionsAccessor)
 {
     _jsonApiValidationFilter = new JsonApiValidationFilter(serviceProvider);
 }
Example #9
0
        /// <summary>
        /// Creates a new <see cref="DefaultModelMetadataProvider"/>.
        /// </summary>
        /// <param name="detailsProvider">The <see cref="ICompositeMetadataDetailsProvider"/>.</param>
        public DefaultModelMetadataProvider(ICompositeMetadataDetailsProvider detailsProvider)
        {
            DetailsProvider = detailsProvider;

            _cacheEntryFactory = CreateCacheEntry;
        }
Example #10
0
 public CustomModelMetadataProviderSingleton(ICompositeMetadataDetailsProvider detailsProvider)
     : base(detailsProvider)
 {
 }
 public BodyAndOtherSourcesModelBinder(ILoggerFactory loggerFactory, IOptions <MvcOptions> options, IModelBinderFactory modelBinderFactory, IModelMetadataProvider modelMetadataProvider, ICompositeMetadataDetailsProvider detailsProvider)
 {
     _logger                      = loggerFactory.CreateLogger <BodyOrOtherSourcesModelBinder>();
     _modelBinderFactory          = modelBinderFactory;
     _modelMetadataProvider       = modelMetadataProvider;
     _modelBindingMessageProvider = options.Value.ModelBindingMessageProvider;
     _detailsProvider             = detailsProvider;
 }
 public DynamicFormsModelMetadataProviderSingleton(ICompositeMetadataDetailsProvider detailsProvider, IOptions <MvcOptions> optionsAccessor)
     : base(detailsProvider, optionsAccessor)
 {
 }
Example #13
0
 /// <summary>
 /// Creates a new <see cref="DefaultModelMetadataProvider"/>.
 /// </summary>
 /// <param name="detailsProvider">The <see cref="ICompositeMetadataDetailsProvider"/>.</param>
 public DefaultModelMetadataProvider(ICompositeMetadataDetailsProvider detailsProvider)
     : this(detailsProvider, new DefaultModelBindingMessageProvider())
 {
 }
 public DynamicFormsModelMetadataProviderSingleton(ICompositeMetadataDetailsProvider detailsProvider)
     : base(detailsProvider)
 {
 }
Example #15
0
        public FunctionApiDescriptionProvider(
            IOptions <Option> functionsOptions,
            SwashBuckleStartupConfig startupConfig,
            IModelMetadataProvider modelMetadataProvider,
            ICompositeMetadataDetailsProvider compositeMetadataDetailsProvider,
            IOutputFormatter outputFormatter,
            IOptions <HttpOptions> httOptions)
        {
            _option = functionsOptions.Value;
            _modelMetadataProvider            = modelMetadataProvider;
            _compositeMetadataDetailsProvider = compositeMetadataDetailsProvider;
            _outputFormatter = outputFormatter;

            var methods = startupConfig.Assembly.GetTypes()
                          .SelectMany(t => t.GetMethods())
                          .Where(m => m.GetCustomAttributes(typeof(FunctionNameAttribute), false).Any())
                          .ToArray();

            var apiDescGroups = new Dictionary <string, List <ApiDescription> >();

            foreach (var methodInfo in methods)
            {
                if (!TryGetHttpTrigger(methodInfo, out var triggerAttribute))
                {
                    continue;
                }

                var functionAttr =
                    (FunctionNameAttribute)methodInfo.GetCustomAttribute(typeof(FunctionNameAttribute), false);
                var apiExplorerSettingsAttribute =
                    (ApiExplorerSettingsAttribute)methodInfo.GetCustomAttribute(typeof(ApiExplorerSettingsAttribute),
                                                                                false) ??
                    (ApiExplorerSettingsAttribute)methodInfo.DeclaringType.GetCustomAttribute(
                        typeof(ApiExplorerSettingsAttribute), false);

                var prefix = string.IsNullOrWhiteSpace(httOptions.Value.RoutePrefix)
                    ? ""
                    : $"{httOptions.Value.RoutePrefix.TrimEnd('/')}/";
                string route;
                if (_option.PrepandOperationWithRoutePrefix)
                {
                    route =
                        $"{prefix}{(!string.IsNullOrWhiteSpace(triggerAttribute.Route) ? triggerAttribute.Route : functionAttr.Name)}";
                }
                else
                {
                    route = !string.IsNullOrWhiteSpace(triggerAttribute.Route)
                        ? triggerAttribute.Route
                        : functionAttr.Name;
                }

                var routes = new List <(string Route, string RemoveParamName)>();

                var regex = new Regex("/\\{(?<paramName>\\w+)\\?\\}$");
                var match = regex.Match(route);

                if (match.Success && match.Captures.Count == 1)
                {
                    routes.Add(
                        (route.Replace(match.Value, "").Replace("//", "/"), match.Groups["paramName"].ToString()));
                    routes.Add((route.Replace(match.Value, match.Value.Replace("?", "")), ""));
                }
                else
                {
                    routes.Add((route, ""));
                }

                var verbs = triggerAttribute.Methods ??
                            new[] { "get", "post", "delete", "head", "patch", "put", "options" };


                for (var index = 0; index < routes.Count; index++)
                {
                    var r       = routes[index];
                    var apiName = functionAttr.Name + (index == 0 ? "" : $"-{index}");
                    var items   = verbs.Select(verb =>
                                               CreateDescription(methodInfo, r.Route, index, functionAttr, apiExplorerSettingsAttribute, verb,
                                                                 triggerAttribute.AuthLevel, r.RemoveParamName, verbs.Length > 1)).ToArray();

                    var groupName =
                        (items.FirstOrDefault()?.ActionDescriptor as ControllerActionDescriptor)?.ControllerName ??
                        apiName;
                    if (!apiDescGroups.ContainsKey(groupName))
                    {
                        apiDescGroups[groupName] = new List <ApiDescription>();
                    }

                    apiDescGroups[groupName].AddRange(items);
                }
            }

            ApiDescriptionGroups =
                new ApiDescriptionGroupCollection(
                    new ReadOnlyCollection <ApiDescriptionGroup>(
                        apiDescGroups.Select(kv => new ApiDescriptionGroup(kv.Key, kv.Value)).ToList()
                        ), 1);
        }
 public DynamicFormsModelMetadata(IDynamicFormsModelMetadataProviderSingleton provider, ICompositeMetadataDetailsProvider detailsProvider, DefaultMetadataDetails details, DefaultModelBindingMessageProvider modelBindingMessageProvider)
     : base(provider, detailsProvider, details, modelBindingMessageProvider)
 {
     _customProvider = provider;
 }
 public DynamicFormsModelMetadata(IDynamicFormsModelMetadataProviderSingleton provider, ICompositeMetadataDetailsProvider detailsProvider, DefaultMetadataDetails details)
     : base(provider, detailsProvider, details)
 {
     _customProvider = provider;
 }
 public CompositeMetadataDetailsProviderSetup()
 {
     _compositeMetadataDetailsProvider = _provider.GetRequiredService <ICompositeMetadataDetailsProvider>();
 }
Example #19
0
 /// <summary>
 /// Creates a new <see cref="DefaultModelMetadataProvider"/>.
 /// </summary>
 /// <param name="detailsProvider">The <see cref="ICompositeMetadataDetailsProvider"/>.</param>
 /// <param name="optionsAccessor">The accessor for <see cref="MvcOptions"/>.</param>
 public DefaultModelMetadataProvider(
     ICompositeMetadataDetailsProvider detailsProvider,
     IOptions <MvcOptions> optionsAccessor)
     : this(detailsProvider, GetMessageProvider(optionsAccessor))
 {
 }
Example #20
0
 public SignumModelMetadata(IModelMetadataProvider provider, ICompositeMetadataDetailsProvider detailsProvider, DefaultMetadataDetails details) :
     base(provider, detailsProvider, details)
 {
 }
 public BodyAndOtherSourcesModelBinder(IHttpRequestStreamReaderFactory readerFactory, ILoggerFactory loggerFactory, IOptions <MvcOptions> options, IModelBinderFactory modelBinderFactory, IModelMetadataProvider modelMetadataProvider, ICompositeMetadataDetailsProvider detailsProvider)
     : base(options.Value.InputFormatters, readerFactory, loggerFactory, options.Value)
 {
     _logger                      = loggerFactory.CreateLogger <BodyOrOtherSourcesModelBinder>();
     _modelBinderFactory          = modelBinderFactory;
     _providers                   = options.Value.ModelBinderProviders.ToArray();
     _modelMetadataProvider       = modelMetadataProvider;
     _modelBindingMessageProvider = options.Value.ModelBindingMessageProvider;
     _detailsProvider             = detailsProvider;
 }
Example #22
0
 public DisplayNameMetadataProviderProxy(ICompositeMetadataDetailsProvider detailsProvider)
     : base(detailsProvider)
 {
 }