private void AddOrUpdateModels(RamlChooserActionParams parameters, string contractsFolderPath, ProjectItem ramlItem, WebApiGeneratorModel model, ProjectItem contractsFolderItem, string extensionPath) { templatesManager.CopyServerTemplateToProjectFolder(contractsFolderPath, ModelTemplateName, Settings.Default.ModelsTemplateTitle, TemplateSubFolder); var templatesFolder = Path.Combine(contractsFolderPath, "Templates"); var models = model.Objects; // when is an XML model, skip empty objects if (model.Objects.Any(o => !string.IsNullOrWhiteSpace(o.GeneratedCode))) { models = model.Objects.Where(o => o.Properties.Any() || !string.IsNullOrWhiteSpace(o.GeneratedCode)); } models = models.Where(o => !o.IsArray || o.Type == null); // skip array of primitives models = models.Where(o => !o.IsScalar); // skip scalar types var targetFolderPath = GetTargetFolderPath(contractsFolderPath, ramlItem.FileNames[0]); var apiObjectTemplateParams = new TemplateParams <ApiObject>( Path.Combine(templatesFolder, ModelTemplateName), ramlItem, "apiObject", models, contractsFolderPath, contractsFolderItem, extensionPath, parameters.TargetNamespace, GetVersionPrefix(parameters.IncludeApiVersionInRoutePrefix, model.ApiVersion) + (parameters.AddGeneratedSuffixToFiles ? ".generated" : string.Empty)) { Title = Settings.Default.ModelsTemplateTitle, RelativeFolder = parameters.ModelsFolder, TargetFolder = TargetFolderResolver.GetModelsTargetFolder(ramlItem.ContainingProject, targetFolderPath, parameters.ModelsFolder) }; codeGenerator.GenerateCodeFromTemplate(apiObjectTemplateParams); }
private void AddOrUpdateEnums(RamlChooserActionParams parameters, string contractsFolderPath, ProjectItem ramlItem, WebApiGeneratorModel model, ProjectItem folderItem, string extensionPath) { templatesManager.CopyServerTemplateToProjectFolder(contractsFolderPath, EnumTemplateName, Settings.Default.EnumsTemplateTitle, TemplateSubFolder); var templatesFolder = Path.Combine(contractsFolderPath, "Templates"); var targetFolderPath = GetTargetFolderPath(contractsFolderPath, ramlItem.FileNames[0]); var apiEnumTemplateParams = new TemplateParams <ApiEnum>( Path.Combine(templatesFolder, EnumTemplateName), ramlItem, "apiEnum", model.Enums, targetFolderPath, folderItem, extensionPath, parameters.TargetNamespace, GetVersionPrefix(parameters.IncludeApiVersionInRoutePrefix, model.ApiVersion)) { Title = Settings.Default.ModelsTemplateTitle, RelativeFolder = parameters.ModelsFolder, TargetFolder = TargetFolderResolver.GetModelsTargetFolder(ramlItem.ContainingProject, targetFolderPath, parameters.ModelsFolder) }; codeGenerator.GenerateCodeFromTemplate(apiEnumTemplateParams); }