private IEnumerable <string> GetDiscoveryUrls(HttpRequestMessage swaggerRequest)
        {
            var basePath = _swaggerSpecConfig.BasePathResolver(swaggerRequest);

            if (_swaggerSpecConfig.Versions == null)
            {
                return new[] { basePath + "/swagger/api-docs" }
            }
            ;

            return(_swaggerSpecConfig.Versions
                   .Select(version => String.Format("{0}/swagger/{1}/api-docs", basePath, version)));
        }
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var swaggerProvider = _config.GetSwaggerProvider(request.GetConfiguration().Services.GetApiExplorer());

            var basePath = _config.BasePathResolver(request);
            var version  = _config.TargetVersionResolver(request);

            object resourceName;

            request.GetRouteData().Values.TryGetValue("resourceName", out resourceName);

            var content = (resourceName == null)
                ? ContentFor(swaggerProvider.GetListing(basePath, version))
                : ContentFor(swaggerProvider.GetDeclaration(basePath, version, resourceName.ToString()));

            return(Task.Factory.StartNew(() => new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = content
            }));
        }