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