public SwaggerDocument GetSwagger( string documentName, string host = null, string basePath = null, string[] schemes = null) { if (!_options.SwaggerDocs.TryGetValue(documentName, out Info info)) { throw new UnknownSwaggerDocument(documentName); } var entry = _serviceEntryProvider.GetALLEntries(); var schemaRegistry = _schemaRegistryFactory.Create(); var swaggerDoc = new SwaggerDocument { Info = info, Host = host, BasePath = basePath, Schemes = schemes, Paths = CreatePathItems(entry, schemaRegistry), Definitions = schemaRegistry.Definitions, SecurityDefinitions = _options.SecurityDefinitions.Any() ? _options.SecurityDefinitions : null, Security = _options.SecurityRequirements.Any() ? _options.SecurityRequirements : null }; return(swaggerDoc); }
/// <summary> /// Initializes a new instance of the <see cref="DocumentGenerator{T}"/> class. /// </summary> /// <param name="artifactMapper"><see cref="IArtifactMapper{T}"/> for mapping artifacts.</param> /// <param name="schemaRegistryFactory"><see cref="ISchemaRegistryFactory"/> for creating schemas.</param> public DocumentGenerator( IArtifactMapper <T> artifactMapper, ISchemaRegistryFactory schemaRegistryFactory) { _artifactMapper = artifactMapper; _schemaRegistry = schemaRegistryFactory.Create(); }
public SwaggerDocument GetSwagger( string documentName, string host = null, string basePath = null, string[] schemes = null) { if (!_options.SwaggerDocs.TryGetValue(documentName, out Info info)) { throw new UnknownSwaggerDocument(documentName); } var mapRoutePaths = Swagger.AppConfig.SwaggerConfig.Options?.MapRoutePaths; var isOnlyGenerateLocalHostDocs = Swagger.AppConfig.SwaggerConfig.Options?.IsOnlyGenerateLocalHostDocs; IEnumerable <ServiceEntry> entries; if (isOnlyGenerateLocalHostDocs != null && isOnlyGenerateLocalHostDocs.Value) { entries = _serviceEntryProvider.GetEntries().Where(p => !p.Descriptor.DisableNetwork()); } else { entries = _serviceEntryProvider.GetALLEntries().Where(p => !p.Descriptor.DisableNetwork()); } if (mapRoutePaths != null) { foreach (var path in mapRoutePaths) { var entry = entries.Where(p => p.RoutePath == path.SourceRoutePath).FirstOrDefault(); if (entry != null) { entry.RoutePath = path.TargetRoutePath; entry.Descriptor.RoutePath = path.TargetRoutePath; } } } entries = entries.Where(apiDesc => _options.DocInclusionPredicateV2(documentName, apiDesc)); var schemaRegistry = _schemaRegistryFactory.Create(); var swaggerDoc = new SwaggerDocument { Info = info, Host = host, BasePath = basePath, Schemes = schemes, Paths = CreatePathItems(entries, schemaRegistry), Definitions = schemaRegistry.Definitions, SecurityDefinitions = _options.SecurityDefinitions.Any() ? _options.SecurityDefinitions : null, Security = _options.SecurityRequirements.Any() ? _options.SecurityRequirements : null }; return(swaggerDoc); }
public SwaggerDocument GetSwagger( string documentName, string host = null, string basePath = null, string[] schemes = null) { var schemaRegistry = _schemaRegistryFactory.Create(); Info info; if (!_settings.SwaggerDocs.TryGetValue(documentName, out info)) { throw new UnknownSwaggerDocument(documentName); } var apiDescriptions = _apiDescriptionsProvider.ApiDescriptionGroups.Items .SelectMany(group => group.Items) .Where(apiDesc => _settings.DocInclusionPredicate(documentName, apiDesc)) .Where(apiDesc => !_settings.IgnoreObsoleteActions || !apiDesc.IsObsolete()) .OrderBy(_settings.SortKeySelector); var paths = apiDescriptions .GroupBy(apiDesc => apiDesc.RelativePathSansQueryString()) .ToDictionary(group => "/" + group.Key, group => CreatePathItem(group, schemaRegistry)); var securityDefinitions = _settings.SecurityDefinitions; var securityRequirements = _settings.SecurityRequirements; var swaggerDoc = new SwaggerDocument { Info = info, Host = host, BasePath = basePath, Schemes = schemes, Paths = paths, Definitions = schemaRegistry.Definitions, SecurityDefinitions = securityDefinitions.Any() ? securityDefinitions : null, Security = securityRequirements.Any() ? securityRequirements : null }; var filterContext = new DocumentFilterContext( _apiDescriptionsProvider.ApiDescriptionGroups, apiDescriptions, schemaRegistry); foreach (var filter in _settings.DocumentFilters) { filter.Apply(swaggerDoc, filterContext); } return(swaggerDoc); }
IParameter CreateFormParameterWithNameAndType(string name, string location, Type type) { var parameter = new NonBodyParameter { Name = name, In = location, Required = true, }; var schema = _schemaRegistryFactory.Create().GetOrRegister(type); parameter.Type = schema.Type; parameter.Format = schema.Format; return(parameter); }
public SwaggerDocument GetSwagger( string apiVersion, string host = null, string basePath = null, string[] schemes = null) { var schemaRegistry = _schemaRegistryFactory.Create(); var info = _options.ApiVersions.FirstOrDefault(v => v.Version == apiVersion); if (info == null) { throw new UnknownApiVersion(apiVersion); } var paths = GetApiDescriptionsFor(apiVersion) .Where(apiDesc => !(_options.IgnoreObsoleteActions && apiDesc.IsObsolete())) .OrderBy(_options.GroupNameSelector, _options.GroupNameComparer) .GroupBy(apiDesc => apiDesc.RelativePathSansQueryString()) .ToDictionary(group => "/" + group.Key, group => CreatePathItem(group, schemaRegistry)); var swaggerDoc = new SwaggerDocument { Info = info, Host = host, BasePath = basePath, Schemes = schemes, Paths = paths, Definitions = schemaRegistry.Definitions, SecurityDefinitions = _options.SecurityDefinitions }; var filterContext = new DocumentFilterContext( _apiDescriptionsProvider.ApiDescriptionGroups, null); foreach (var filter in _options.DocumentFilters) { filter.Apply(swaggerDoc, filterContext); } return(swaggerDoc); }
public SwaggerDocument GetSwagger( string documentName, string host = null, string basePath = null, string[] schemes = null) { if (!_options.SwaggerDocs.TryGetValue(documentName, out Info info)) { throw new UnknownSwaggerDocument(documentName); } var applicableApiDescriptions = _apiDescriptionsProvider.ApiDescriptionGroups.Items .SelectMany(group => group.Items) .Where(apiDesc => _options.DocInclusionPredicate(documentName, apiDesc)) .Where(apiDesc => !_options.IgnoreObsoleteActions || !apiDesc.IsObsolete()); var schemaRegistry = _schemaRegistryFactory.Create(); var swaggerDoc = new SwaggerDocument { Info = info, Host = host, BasePath = basePath, Schemes = schemes, Paths = CreatePathItems(applicableApiDescriptions, schemaRegistry), Definitions = schemaRegistry.Definitions, SecurityDefinitions = _options.SecurityDefinitions.Any() ? _options.SecurityDefinitions : null, Security = _options.SecurityRequirements.Any() ? _options.SecurityRequirements : null }; var filterContext = new DocumentFilterContext( _apiDescriptionsProvider.ApiDescriptionGroups, applicableApiDescriptions, schemaRegistry); foreach (var filter in _options.DocumentFilters) { filter.Apply(swaggerDoc, filterContext); } return(swaggerDoc); }
public SwaggerDocument GetSwagger( string documentName, string host = null, string basePath = null, string[] schemes = null) { if (!_options.SwaggerDocs.TryGetValue(documentName, out Info info)) { throw new UnknownSwaggerDocument(documentName); } var entry = _serviceEntryProvider.GetALLEntries(); var schemaRegistry = _schemaRegistryFactory.Create(); var swaggerDoc = new SwaggerDocument { Info = info, Host = host, BasePath = basePath, Schemes = schemes, Paths = CreatePathItems(entry, schemaRegistry), Definitions = schemaRegistry.Definitions, SecurityDefinitions = _options.SecurityDefinitions.Any() ? _options.SecurityDefinitions : null, Security = _options.SecurityRequirements.Any() ? _options.SecurityRequirements : null }; //var filterContext = new DocumentFilterContext( // _apiDescriptionsProvider.ApiDescriptionGroups, // applicableApiDescriptions, // schemaRegistry); //foreach (var filter in _options.DocumentFilters) //{ // filter.Apply(swaggerDoc, filterContext); //} return(swaggerDoc); }
public OpenApiDocument GetSwagger(string documentName, string host = null, string basePath = null) { if (!_options.SwaggerDocs.TryGetValue(documentName, out OpenApiInfo info)) { throw new UnknownSwaggerDocument(documentName, _options.SwaggerDocs.Select(d => d.Key)); } var applicableApiDescriptions = _apiDescriptionsProvider.ApiDescriptionGroups.Items .SelectMany(group => group.Items) .Where(apiDesc => _options.DocInclusionPredicate(documentName, apiDesc)) .Where(apiDesc => !_options.IgnoreObsoleteActions || !apiDesc.IsObsolete()); var schemaRegistry = _schemaRegistryFactory.Create(); var swaggerDoc = new OpenApiDocument { Info = info, Servers = GenerateServers(host, basePath), Paths = GeneratePaths(applicableApiDescriptions, schemaRegistry), Components = new OpenApiComponents { Schemas = schemaRegistry.Schemas, SecuritySchemes = _options.SecuritySchemes }, SecurityRequirements = _options.SecurityRequirements }; var filterContext = new DocumentFilterContext(applicableApiDescriptions, schemaRegistry); foreach (var filter in _options.DocumentFilters) { filter.Apply(swaggerDoc, filterContext); } return(swaggerDoc); }