Example #1
0
        public static void GenerateTS(SwaggerDocument document, ApiClientDefinition definition, bool promptOnFileOverwrite)
        {
            var className = Path.GetFileNameWithoutExtension(definition.TypescriptClient);

            var settings = new SwaggerToTypeScriptClientGeneratorSettings()
            {
                Template = TypeScriptTemplate.Fetch,
                OperationNameGenerator      = new CustomOperationNameGenerator(),
                GenerateOptionalParameters  = true,
                UseTransformOptionsMethod   = true,
                ClientBaseClass             = "ClientBase",
                TypeScriptGeneratorSettings =
                {
                    PropertyNameGenerator = new CustomPropertyNameGenerator(c => c),
                    NullValue             = TypeScriptNullValue.Null
                }
            };

            if (definition.IsSingleClient)
            {
                // set the class name only when Swagger generates one client, otherwise all classes would have the same name
                settings.ClassName = className;
            }

            settings.TypeScriptGeneratorSettings.TemplateFactory = new DotvvmClientTemplateFactory(settings.CodeGeneratorSettings, new[] {
                typeof(TypeScriptGeneratorSettings).Assembly,
                typeof(SwaggerToTypeScriptClientGeneratorSettings).Assembly
            });

            var resolver  = new TypeScriptTypeResolver(settings.TypeScriptGeneratorSettings);
            var generator = new DotvvmSwaggerToTypeScriptClientGenerator(document, settings, resolver);
            var ts        = generator.GenerateFile();
            var baseClass = definition.CreateBaseClass();

            ts = definition.WrapInNamespace(ts, baseClass);
            FileSystemHelpers.WriteFile(definition.TypescriptClient, ts, promptOnFileOverwrite);

            if (definition.CompileTypescript)
            {
                Process.Start(new ProcessStartInfo()
                {
                    FileName        = "tsc",
                    Arguments       = definition.TypescriptClient,
                    UseShellExecute = true,
                    CreateNoWindow  = true,
                    WindowStyle     = ProcessWindowStyle.Hidden
                }).WaitForExit();
            }
        }
Example #2
0
        public static void GenerateTS(SwaggerDocument document, ApiClientDefinition definition)
        {
            var settings = new SwaggerToTypeScriptClientGeneratorSettings()
            {
                Template = TypeScriptTemplate.Fetch,
                OperationNameGenerator      = new CustomOperationNameGenerator(),
                GenerateOptionalParameters  = true,
                UseTransformOptionsMethod   = true,
                ClientBaseClass             = "ClientBase",
                TypeScriptGeneratorSettings =
                {
                    PropertyNameGenerator = new CustomPropertyNameGenerator(c => c),
                    NullValue             = TypeScriptNullValue.Null
                }
            };

            settings.TypeScriptGeneratorSettings.TemplateFactory = new DotvvmClientTemplateFactory(settings.CodeGeneratorSettings, new[] {
                typeof(TypeScriptGeneratorSettings).Assembly,
                typeof(SwaggerToTypeScriptClientGeneratorSettings).Assembly
            });

            var resolver  = new TypeScriptTypeResolver(settings.TypeScriptGeneratorSettings);
            var generator = new DotvvmSwaggerToTypeScriptClientGenerator(document, settings, resolver);
            var ts        = generator.GenerateFile();
            var baseClass = definition.CreateBaseClass();

            ts = definition.WrapInNamespace(ts, baseClass);
            File.WriteAllText(definition.TypescriptClient, ts);

            if (definition.CompileTypescript)
            {
                Process.Start(new ProcessStartInfo()
                {
                    FileName        = "tsc",
                    Arguments       = definition.TypescriptClient,
                    UseShellExecute = true,
                    CreateNoWindow  = true,
                    WindowStyle     = ProcessWindowStyle.Hidden
                }).WaitForExit();
            }
        }