// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseCors("all"); var jsCodeBuilder = new JSClassContainer <ControllerBase>(); jsCodeBuilder.Configuration.OutputDirectory = "wwwroot\\js"; app.GenerateJSContext <ControllerBase>(jsCodeBuilder); app.UseHttpsRedirection(); app.UseMvc(); app.UseStaticFiles(); }
public JSClassContext(JSClassContainer <T> container) { Classes = new List <IJSClass>(); StringBuilder outputFileContents = new StringBuilder(); var outputDirectoryContext = Path.Combine(Directory.GetCurrentDirectory(), container.Configuration.OutputDirectory); if (Directory.Exists(outputDirectoryContext)) { Directory.Move(outputDirectoryContext, Path.Combine(Directory.GetCurrentDirectory(), "deletedTemp")); Directory.Delete(Path.Combine(Directory.GetCurrentDirectory(), "deletedTemp"), true); } Directory.CreateDirectory(outputDirectoryContext); var shouldCreateMultipuleFiles = container.Configuration.MultiFileOutput; foreach (var filePath in container.InstanceConfiguration.AdditionalFiles.Keys) { var outputDir = Path.Combine(outputDirectoryContext, filePath); if (shouldCreateMultipuleFiles) { Directory.CreateDirectory(Path.GetDirectoryName(outputDir)); File.WriteAllText(outputDir, container.InstanceConfiguration.AdditionalFiles[filePath]); } else { outputFileContents.AppendLine(container.InstanceConfiguration.AdditionalFiles[filePath]); } } foreach (var model in container.Models.Values) { var newClass = container.InstanceConfiguration.CreateJSClassFromTypeStructure(model); var result = newClass.GetText(); var outputDir = Path.Combine(outputDirectoryContext, container.Configuration.ModelsFolder); if (shouldCreateMultipuleFiles) { Directory.CreateDirectory(outputDir); File.WriteAllText(Path.Combine(outputDir, model.TypeName + ".js"), result); } else { outputFileContents.AppendLine(result); } Debug.WriteLine(result); } foreach (var classDef in container.Classes) { var newClass = container.InstanceConfiguration.CreateJSClassFromStructure(classDef); Classes.Add(newClass); var result = newClass.GetText(); if (shouldCreateMultipuleFiles) { File.WriteAllText(Path.Combine(outputDirectoryContext, classDef.Name + ".js"), result); } else { outputFileContents.AppendLine(result); } Debug.WriteLine(result); } if (!shouldCreateMultipuleFiles) { File.WriteAllText(Path.Combine(outputDirectoryContext, container.Configuration.SingleFileOutputName), outputFileContents.ToString()); } }