internal string FromAssemblyType(string[] classNames, string settingsData) { var settings = JsonConvert.DeserializeObject <AssemblyTypeToSwaggerGeneratorSettings>(settingsData); RegisterReferencePaths(GetAllReferencePaths(settings)); var document = new SwaggerDocument(); var generator = new JsonSchemaGenerator(settings); var schemaResolver = new SchemaResolver(); var schemaDefinitionAppender = new SwaggerDocumentSchemaDefinitionAppender(document, settings.TypeNameGenerator); #if FullNet var assembly = Assembly.LoadFrom(settings.AssemblyPath); #else var assembly = Context.LoadFromAssemblyPath(settings.AssemblyPath); #endif foreach (var className in classNames) { var type = assembly.GetType(className); var schema = generator.Generate(type, schemaResolver, schemaDefinitionAppender); document.Definitions[type.Name] = schema; } return(document.ToJson()); }
/// <summary>Generates a Swagger specification for the given controller types.</summary> /// <param name="controllerTypes">The types of the controller.</param> /// <returns>The <see cref="SwaggerDocument" />.</returns> /// <exception cref="InvalidOperationException">The operation has more than one body parameter.</exception> public SwaggerDocument GenerateForControllers(IEnumerable <Type> controllerTypes) { var document = CreateDocument(Settings); var schemaResolver = new SchemaResolver(); var schemaDefinitionAppender = new SwaggerDocumentSchemaDefinitionAppender(document, Settings.TypeNameGenerator); foreach (var controllerType in controllerTypes) { GenerateForController(document, controllerType, new SwaggerGenerator(_schemaGenerator, Settings, schemaResolver, schemaDefinitionAppender)); } AppendRequiredSchemasToDefinitions(document, schemaResolver); document.GenerateOperationIds(); foreach (var processor in Settings.DocumentProcessors) { processor.Process(new DocumentProcessorContext(document, controllerTypes)); } return(document); }