public LegacyOpenApiMetadataCacheProvider( IDomainModelProvider domainModelProvider, IResourceModelProvider resourceModelProvider, IProfileResourceModelProvider profileResourceModelProvider, IProfileResourceNamesProvider profileResourceNamesProvider, ICompositesMetadataProvider compositesMetadataProvider, ISchemaNameMapProvider schemaNameMapProvider, IOpenApiMetadataRouteProvider openApiMetadataRouteProvider, IOpenApiContentProvider[] openApiContentProviders) { _domainModelProvider = domainModelProvider; _resourceModelProvider = resourceModelProvider; _compositesMetadataProvider = compositesMetadataProvider; _schemaNameMapProvider = schemaNameMapProvider; _openApiMetadataRouteProvider = openApiMetadataRouteProvider; _profileResourceModelProvider = profileResourceModelProvider; _profileResourceNamesProvider = profileResourceNamesProvider; _openApiMetadataResourceFilters = new Dictionary <string, IOpenApiMetadataResourceStrategy>(StringComparer.InvariantCultureIgnoreCase) { { Descriptors, new SwaggerUiDescriptorOnlyStrategy() }, { Resources, new SwaggerUiResourceOnlyStrategy() }, { Extensions, new SdkGenExtensionResourceStrategy() }, { EdFi, new SdkGenAllEdFiResourceStrategy() }, { Profiles, new OpenApiProfileStrategy() }, { Composites, new OpenApiCompositeStrategy(_compositesMetadataProvider) }, { All, new SdkGenAllResourceStrategy() } }; _openApiMetadataSectionByRoute = new Dictionary <string, Func <IEnumerable <OpenApiContent> > > { { MetadataRouteConstants.Schema, CreateSchemaSpecificSections }, { MetadataRouteConstants.All, CreateSdkGenAllSection }, { MetadataRouteConstants.Profiles, CreateProfileSection }, { MetadataRouteConstants.Composites, CreateCompositeSection }, { MetadataRouteConstants.ResourceTypes, CreateSwaggerUiSection } }; foreach (var openApiContentProvider in openApiContentProviders) { var routeName = openApiContentProvider.RouteName; if (_openApiMetadataSectionByRoute.ContainsKey(routeName)) { throw new InvalidOperationException( $"Duplicate metadata route '{routeName}' encountered during initialization. Source: {openApiContentProvider.GetType().FullName}"); } _openApiMetadataSectionByRoute.Add(routeName, openApiContentProvider.GetOpenApiContent); } _swaggerMetadataCache = new ConcurrentDictionary <string, OpenApiContent>(StringComparer.InvariantCultureIgnoreCase); }
public OpenApiMetadataCacheProvider(IResourceModelProvider resourceModelProvider, IOpenApiMetadataRouteProvider openApiMetadataRouteProvider, IOpenApiContentProvider[] openApiContentProviders) { _openApiContentProviders = Preconditions.ThrowIfNull(openApiContentProviders, nameof(openApiContentProviders)); _resourceModelProvider = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider)); _openApiMetadataRouteProvider = Preconditions.ThrowIfNull( openApiMetadataRouteProvider, nameof(openApiMetadataRouteProvider)); _openApiMetadataResourceFilters = new Dictionary <string, IOpenApiMetadataResourceStrategy>(StringComparer.InvariantCultureIgnoreCase) { { Descriptors, new SwaggerUiDescriptorOnlyStrategy() }, { Resources, new SwaggerUiResourceOnlyStrategy() }, { All, new SdkGenAllResourceStrategy() } }; _swaggerMetadataCache = new ConcurrentDictionary <string, OpenApiContent>(StringComparer.InvariantCultureIgnoreCase); }