private IEnumerable <IOpenApiDocumentProvider> GetProviders(IEnumerable <string> uris, bool treatUriAsDiscovery, string discoveryKey, ILogger logger) { foreach (string uri in uris) { var uriType = DocumentSourceTypeProvider.GetSourceType(uri); if (uriType == DocumentSourceType.Unknown) { LogUnknownUriType(uri); continue; } yield return(treatUriAsDiscovery ? new DiscoveryOpenApiDocumentProvider(ClientFactory, uri, discoveryKey, logger) : GetProvider(uriType, uri)); } }
public IEnumerable <OpenApiDocument> GetDocuments() { var type = DocumentSourceTypeProvider.GetSourceType(Uri); if (type == DocumentSourceType.Unknown) { return(Enumerable.Empty <OpenApiDocument>()); } var discoveryFile = LoadDiscoveryFile(Uri, type); var uris = GetUris(discoveryFile); var tasks = uris .Select(LoadSpecsAsync) .Select(x => x.ContinueWith(ConvertToSpec)) .ToArray(); Task.WhenAll(tasks).Wait(); return(tasks.Select(x => x.Result).Where(x => x != null)); }