public void GivenIHaveInitialisedTheOpenApiDocumentProviderFromTestYAMLFile(string embeddedResourceName) { OpenApiDocument document = OpenApiServiceDefinitions.ReadOpenApiServiceFromEmbeddedDefinitionWithDiagnostics( Assembly.GetExecutingAssembly(), embeddedResourceName, out OpenApiDiagnostic diagnostic); Assert.IsEmpty(diagnostic.Errors); var documentProvider = new OpenApiDocumentProvider(new LoggerFactory().CreateLogger <OpenApiDocumentProvider>()); documentProvider.Add(document); this.scenarioContext.Set <IOpenApiDocumentProvider>(documentProvider); }
public void WhenIAddTheOpenApiDocumentContainingTheOpenApiOperationToAOpenApiDocumentProvider() { this.exception = null; var doc = new OpenApiDocumentProvider(new Mock <ILogger <OpenApiDocumentProvider> >().Object); try { doc.Add(this.document !); } catch (Exception x) { this.exception = x; } }
/// <summary>Initializes a new instance of the <see cref="OpenApiDocumentMiddleware"/> class.</summary> /// <param name="nextDelegate">The next delegate.</param> /// <param name="serviceProvider">The service provider.</param> /// <param name="documentName">The document name.</param> /// <param name="path">The document path.</param> /// <param name="settings">The settings.</param> public OpenApiDocumentMiddleware(RequestDelegate nextDelegate, IServiceProvider serviceProvider, string documentName, string path, OpenApiDocumentMiddlewareSettings settings) { _nextDelegate = nextDelegate; _documentName = documentName; _path = path; _apiDescriptionGroupCollectionProvider = serviceProvider.GetService <IApiDescriptionGroupCollectionProvider>() ?? throw new InvalidOperationException("API Explorer not registered in DI."); _documentProvider = serviceProvider.GetService <OpenApiDocumentProvider>() ?? throw new InvalidOperationException("The NSwag DI services are not registered: Call " + nameof(NSwagServiceCollectionExtensions.AddSwaggerDocument) + "() in ConfigureServices()."); _settings = settings; }
public void Generate(ITypeProvider typeProvider) { Log.Information("Starting Code Generation in {RootDirectory}", _settings.RootDirectory); if (_settings.NewAppSettings?.CreateNew == true) { var newProjectGen = new NewProjectGenerator(_settings, _fs); var newProjectResult = newProjectGen.Generate(); if (newProjectResult == false) { Log.Error("Error generating new project - exiting"); return; } } if (_settings.AddGeneratedOptionsToDatabase) { var sb = new StringBuilder(); sb.AppendLine("-- generated by a tool"); typeProvider.DropGeneratedOperations(_settings, sb); typeProvider.DropGeneratedTypes(_settings, sb); var dropFile = new CodeFile() { Contents = sb.ToString(), Name = "drop_generated.sql" }; _fileWriter.ApplyCodeFiles(new List <CodeFile> { dropFile }, DatabaseScriptsFolder); Log.Information("Finishing dropping generated operations"); } var domain = typeProvider.GetDomain(_settings); Log.Information("Finished building domain"); domain.DefaultNamespace = _settings.ApplicationName; SetupRootFolder(); GenerateDbFunctions(domain, _settings.AddGeneratedOptionsToDatabase, typeProvider); Log.Information("Finished generating db functions"); typeProvider.GetOperations(domain); Log.Information("Finished adding operations to domain"); SanityCheckDomain(domain); GenerateClasses(domain); Log.Information("Finished generating classes"); GenerateRepositories(domain); Log.Information("Finished generating repositories"); if (_settings.GenerateTestRepos && !string.IsNullOrEmpty(_settings.TestDataDirectory)) { // this is very much a work-in-progress GenerateTestRepositories(domain); Log.Information("Finished generating test repositories"); } if (domain.ResultTypes.Any(rt => !rt.Ignore)) { GenerateReturnTypes(domain); Log.Information("Finished generating return types"); } if (_settings.WebUIType == WebUIType.MVC) { GenerateControllers(domain); GenerateViews(domain); GenerateViewModels(domain); Log.Information("Finished generating MVC UI"); } if (_settings.WebUIType == WebUIType.React) { GenerateWebApi(domain); GenerateWebApiModels(domain); if (!string.IsNullOrEmpty(_settings.OpenApiUri)) { var openApiDocProvider = new OpenApiDocumentProvider(_fs, _settings); var openApiDomainProvider = new OpenApiDomainProvider(openApiDocProvider); openApiDomainProvider.AugmentDomainFromOpenApi(domain); } GenerateClientServiceProxy(domain); GenerateClientApiModels(domain); GenerateClientPages(domain); Log.Information("Finished generating react UI"); } if (_settings.ClientAppTypes.Contains(ClientAppUIType.Flutter)) { var flutterGen = new Flutter.Generator(_fs, _settings, _fileWriter); flutterGen.Generate(domain); } if (_settings.TestDataSize != null && _settings.TestDataSize > 0) { var testDataGen = new TestDataGenerator(); var testData = testDataGen.Generate(domain); if (testData.Any()) { typeProvider.AddTestData(testData); } } Log.Information("Finished Code Generation"); }