Example #1
0
 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());
 }
Example #2
0
 /// <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;
 }
Example #3
0
 /// <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)
 {
 }
Example #4
0
            /// <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);
            }
Example #5
0
 /// <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;
 }