private static string[] GetAllReferencePaths(WebApiAssemblyToSwaggerGeneratorSettings settings) { return(settings.AssemblySettings.AssemblyPaths.Select(p => Path.GetDirectoryName(PathUtilities.MakeAbsolutePath(p, Directory.GetCurrentDirectory()))) .Concat(settings.AssemblySettings.ReferencePaths) .Distinct() .ToArray()); }
/// <summary>Initializes a new instance of the <see cref="WebApiAssemblyToSwaggerGenerator"/> class.</summary> /// <param name="settings">The generator settings.</param> public WebApiAssemblyToSwaggerGenerator(WebApiAssemblyToSwaggerGeneratorSettings settings) { Settings = settings; }
/// <summary>Initializes a new instance of the <see cref="WebApiAssemblyToSwaggerGenerator"/> class.</summary> /// <param name="settings">The generator settings.</param> public WebApiAssemblyToSwaggerGenerator(WebApiAssemblyToSwaggerGeneratorSettings settings) : base(settings) { }
/// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception> #pragma warning disable 1998 private async Task <IEnumerable <Type> > GetControllerTypesAsync(IEnumerable <string> controllerClassNames, WebApiAssemblyToSwaggerGeneratorSettings settings) #pragma warning restore 1998 { if (settings.AssemblySettings.AssemblyPaths == null || settings.AssemblySettings.AssemblyPaths.Length == 0) { throw new InvalidOperationException("No assembly paths have been provided."); } #if FullNet var assemblies = PathUtilities.ExpandFileWildcards(settings.AssemblySettings.AssemblyPaths) .Select(path => Assembly.LoadFrom(path)).ToArray(); #else var currentDirectory = await DynamicApis.DirectoryGetCurrentDirectoryAsync().ConfigureAwait(false); var assemblies = PathUtilities.ExpandFileWildcards(settings.AssemblySettings.AssemblyPaths) .Select(path => Context.LoadFromAssemblyPath(PathUtilities.MakeAbsolutePath(path, currentDirectory))).ToArray(); #endif var allExportedClassNames = assemblies.SelectMany(a => a.ExportedTypes).Select(t => t.FullName).ToList(); var matchedControllerClassNames = controllerClassNames .SelectMany(n => PathUtilities.FindWildcardMatches(n, allExportedClassNames, '.')) .Distinct(); var controllerClassNamesWithoutWildcard = controllerClassNames.Where(n => !n.Contains("*")).ToArray(); if (controllerClassNamesWithoutWildcard.Any(n => !matchedControllerClassNames.Contains(n))) { throw new TypeLoadException("Unable to load type for controllers: " + string.Join(", ", controllerClassNamesWithoutWildcard)); } var controllerTypes = new List <Type>(); foreach (var className in matchedControllerClassNames) { var controllerType = assemblies.Select(a => a.GetType(className)).FirstOrDefault(t => t != null); if (controllerType != null) { controllerTypes.Add(controllerType); } else { throw new TypeLoadException("Unable to load type for controller: " + className); } } return(controllerTypes); }
/// <summary>Initializes a new instance of the <see cref="WebApiAssemblyToSwaggerGeneratorBase"/> class.</summary> /// <param name="settings">The generator settings.</param> protected WebApiAssemblyToSwaggerGeneratorBase(WebApiAssemblyToSwaggerGeneratorSettings settings) { Settings = settings; }