예제 #1
0
        /// <summary>Generates the Swagger definition for all controllers in the assembly.</summary>
        /// <param name="controllerClassNames">The controller class names.</param>
        /// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception>
        /// <returns>The Swagger definition.</returns>
        public override async Task <SwaggerDocument> GenerateForControllersAsync(IEnumerable <string> controllerClassNames)
        {
            if (!(Settings.SchemaNameGenerator is DefaultSchemaNameGenerator))
            {
                throw new InvalidOperationException("The SchemaNameGenerator cannot be customized when loading types from external assemblies.");
            }

            if (!(Settings.TypeNameGenerator is DefaultTypeNameGenerator))
            {
                throw new InvalidOperationException("The TypeNameGenerator cannot be customized when loading types from external assemblies.");
            }

#if FullNet
            using (var isolated = new AppDomainIsolation <WebApiAssemblyLoader>(Path.GetDirectoryName(Path.GetFullPath(Settings.AssemblyPaths.First())), Settings.AssemblyConfig))
            {
                var document = await Task.Run(() => isolated.Object.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings))).ConfigureAwait(false);

                return(await SwaggerDocument.FromJsonAsync(document).ConfigureAwait(false));
            }
#else
            var loader = new WebApiAssemblyLoader();
            var data   = loader.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings));
            return(await SwaggerDocument.FromJsonAsync(data).ConfigureAwait(false));
#endif
        }
        /// <summary>Generates the Swagger definition for all controllers in the assembly.</summary>
        /// <param name="controllerClassNames">The controller class names.</param>
        /// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception>
        /// <returns>The Swagger definition.</returns>
        public override SwaggerDocument GenerateForControllers(IEnumerable <string> controllerClassNames)
        {
            var loader = new WebApiAssemblyLoader();
            var data   = loader.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings));

            return(SwaggerDocument.FromJson(data));
        }
예제 #3
0
        /// <summary>Generates the Swagger definition for all controllers in the assembly.</summary>
        /// <param name="controllerClassNames">The controller class names.</param>
        /// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception>
        /// <returns>The Swagger definition.</returns>
        public override SwaggerDocument GenerateForControllers(IEnumerable <string> controllerClassNames)
        {
#if FullNet
            using (var isolated = new AppDomainIsolation <WebApiAssemblyLoader>(Path.GetDirectoryName(Path.GetFullPath(Settings.AssemblyPaths.First())), Settings.AssemblyConfig))
            {
                var document = isolated.Object.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings));
                return(SwaggerDocument.FromJson(document));
            }
#else
            var loader = new WebApiAssemblyLoader();
            var data   = loader.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings));
            return(SwaggerDocument.FromJson(data));
#endif
        }
        /// <summary>Generates the Swagger definition for all controllers in the assembly.</summary>
        /// <param name="controllerClassNames">The controller class names.</param>
        /// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception>
        /// <returns>The Swagger definition.</returns>
        public override SwaggerDocument GenerateForControllers(IEnumerable<string> controllerClassNames)
        {
#if FullNet
            using (var isolated = new AppDomainIsolation<WebApiAssemblyLoader>(Path.GetDirectoryName(Path.GetFullPath(Settings.AssemblyPaths.First())), Settings.AssemblyConfig))
            {
                var document = isolated.Object.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings));
                return SwaggerDocument.FromJson(document);
            }
#else
            var loader = new WebApiAssemblyLoader();
            var data = loader.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings));
            return SwaggerDocument.FromJson(data);
#endif
        }
예제 #5
0
        /// <summary>Generates the Swagger definition for all controllers in the assembly.</summary>
        /// <param name="controllerClassNames">The controller class names.</param>
        /// <exception cref="InvalidOperationException">No assembly paths have been provided.</exception>
        /// <returns>The Swagger definition.</returns>
        public override async Task <SwaggerDocument> GenerateForControllersAsync(IEnumerable <string> controllerClassNames)
        {
#if FullNet
            using (var isolated = new AppDomainIsolation <WebApiAssemblyLoader>(Path.GetDirectoryName(Path.GetFullPath(Settings.AssemblyPaths.First())), Settings.AssemblyConfig))
            {
                var document = await Task.Run(() => isolated.Object.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings))).ConfigureAwait(false);

                return(await SwaggerDocument.FromJsonAsync(document).ConfigureAwait(false));
            }
#else
            var loader = new WebApiAssemblyLoader();
            var data   = loader.GenerateForControllers(controllerClassNames, JsonConvert.SerializeObject(Settings));
            return(await SwaggerDocument.FromJsonAsync(data).ConfigureAwait(false));
#endif
        }