Пример #1
0
        public async Task When_generic_request()
        {
            //// Arrange
            var generator = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document  = await generator.GenerateForControllerAsync <DiscussionController>();

            var json = document.ToJson();

            //// Act
            var codeGen = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings
            {
                Template                    = TypeScriptTemplate.Angular,
                GenerateDtoTypes            = true,
                TypeScriptGeneratorSettings =
                {
                    TypeScriptVersion = 2.7m,
                    ExportTypes       = false
                }
            });
            var code = codeGen.GenerateFile();

            //// Assert
            Assert.Contains("this.request = new RequestBodyBase()", code);
            Assert.Contains("this.request = new RequestBody()", code);
        }
Пример #2
0
        static void Main(string[] args)
        {
            var currentFolder = Directory.GetCurrentDirectory();
            var pathToDll     = Path.Combine(currentFolder, "..", "ContactsList/bin/Debug/netcoreapp1.1/AspNetCoreSpa.dll");
            var settings      = new WebApiAssemblyToSwaggerGeneratorSettings
            {
                AssemblyPaths               = new string[] { pathToDll },
                DefaultUrlTemplate          = "api/{controller}/{action}/{id}",
                DefaultPropertyNameHandling = NJsonSchema.PropertyNameHandling.CamelCase
            };

            //var excluded = new string[] { "Manage", "Base", "Home" };
            var generator  = new WebApiAssemblyToSwaggerGenerator(settings);
            var allClasses = generator.GetControllerClasses();
            //var necessaryClasses = allClasses.Except(allClasses.Where(x => excluded.Any(y => x.Contains(y)))
            //    ).ToArray();
            var controllersToGenerate = new string[] { "File" };
            var necessaryClasses      = allClasses.Where(x => controllersToGenerate.Any(y => x.Contains(y)))
                                        .ToArray();
            var document = generator.GenerateForControllersAsync(necessaryClasses).Result;

            var settingsForClientApiGeneration = new SwaggerToTypeScriptClientGeneratorSettings
            {
                ClassName = "{controller}Client",
                Template  = TypeScriptTemplate.Angular
            };

            var generatorApi = new SwaggerToTypeScriptClientGenerator(document, settingsForClientApiGeneration);
            var code         = generatorApi.GenerateFile();

            code = ImproveGeneration(code);
            File.WriteAllText(Path.Combine(currentFolder, "..", "ContactsList/Client/app", "apiDefinitions.ts"), code);
        }
    public static void UseGeneratedClient(this IApplicationBuilder app, string url)
    {
        Task.Run(() => {
            Thread.Sleep(2000);

            SwaggerDocument document = null;
            int attemptCount         = 0;

            while (document == null && attemptCount < 5)
            {
                attemptCount++;
                System.Console.WriteLine("Attempting to load swagger specification for client generation.");
                try {
                    document = SwaggerDocument.FromUrlAsync(url).Result;
                } catch {
                    System.Console.WriteLine("Failed to load swagger specification. Retry in 2 seconds.");
                    Thread.Sleep(2000);
                }
            }

            var settings = new SwaggerToTypeScriptClientGeneratorSettings {
                Template           = TypeScriptTemplate.Angular,
                ClassName          = "{controller}Client",
                InjectionTokenType = InjectionTokenType.InjectionToken
            };

            var generator = new SwaggerToTypeScriptClientGenerator(document, settings);

            var code = generator.GenerateFile();

            System.Console.WriteLine(code);
            System.IO.File.WriteAllText(@"./ClientApp/src/app/app.service.ts", code);
        });
    }
        public async Task When_operations_have_no_tags_they_are_grouped_into_one_client()
        {
            //// Arrange
            var generator = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document  = await generator.GenerateForControllersAsync(new List <Type>() { typeof(PointControllerA), typeof(PointControllerB) });

            // Remove tags
            foreach (var path in document.Paths.Values)
            {
                foreach (var operation in path.Values)
                {
                    operation.Tags.Clear();
                }
            }
            var codeGenerator = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings
            {
                OperationNameGenerator = new MultipleClientsFromFirstTagAndPathSegmentsOperationNameGenerator()
            });

            //// Act
            var code = codeGenerator.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains("export class Client"));
            Assert.IsTrue(!code.Contains("export class PointControllerAClient"));
            Assert.IsTrue(!code.Contains("export class PointControllerBClient"));
        }
Пример #5
0
        public async Task When_query_parameter_is_enum_array_then_the_enum_is_referenced()
        {
            //// Arrange
            var settings = new WebApiToSwaggerGeneratorSettings
            {
                DefaultUrlTemplate          = "api/{controller}/{action}/{id}",
                DefaultEnumHandling         = EnumHandling.String,
                DefaultPropertyNameHandling = PropertyNameHandling.Default,
                SchemaType = SchemaType.Swagger2,
            };
            var generator = new WebApiToSwaggerGenerator(settings);

            //// Act
            var document = await generator.GenerateForControllerAsync <FooController>();

            var json = document.ToJson();

            var gen = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings
            {
                Template = TypeScriptTemplate.JQueryCallbacks
            });
            var code = gen.GenerateFile();

            //// Assert
            Assert.IsNotNull(document.Operations.First().Operation.Parameters.First().Item.SchemaReference);
            Assert.IsTrue(code.Contains("getFoos(bars: Bar[], "));
        }
Пример #6
0
        /// <summary>Initializes a new instance of the <see cref="TypeScriptOperationModel" /> class.</summary>
        /// <param name="operation">The operation.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="generator">The generator.</param>
        /// <param name="resolver">The resolver.</param>
        public TypeScriptOperationModel(
            SwaggerOperation operation,
            SwaggerToTypeScriptClientGeneratorSettings settings,
            SwaggerToTypeScriptClientGenerator generator,
            TypeResolverBase resolver)
            : base(null, operation, resolver, generator, settings)
        {
            _operation = operation;
            _settings  = settings;
            _generator = generator;

            var parameters = GetActualParameters();

            if (settings.GenerateOptionalParameters)
            {
                parameters = parameters
                             .OrderBy(p => p.Position ?? 0)
                             .OrderBy(p => !p.IsRequired)
                             .ToList();
            }

            Parameters = parameters
                         .Select(parameter =>
                                 new TypeScriptParameterModel(parameter.Name,
                                                              GetParameterVariableName(parameter, _operation.Parameters), ResolveParameterType(parameter),
                                                              parameter, parameters, _settings, _generator, resolver))
                         .ToList();
        }
Пример #7
0
        public static void GenerateTS(SwaggerDocument document, ApiClientDefinition definition)
        {
            var settings = new SwaggerToTypeScriptClientGeneratorSettings()
            {
                Template = TypeScriptTemplate.Fetch,
                OperationNameGenerator     = new CustomNameGenerator(),
                GenerateOptionalParameters = true,
                UseTransformOptionsMethod  = true,
                ClientBaseClass            = "ClientBase"
            };

            settings.TypeScriptGeneratorSettings.PropertyNameGenerator = new MyPropertyNameGenerator(c => ConversionUtilities.ConvertToLowerCamelCase(c, true));
            settings.TypeScriptGeneratorSettings.NullValue             = TypeScriptNullValue.Null;


            var generator = new SwaggerToTypeScriptClientGenerator(document, settings);
            var ts        = generator.GenerateFile();
            var baseClass = CreateBaseClass(definition);

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

            if (definition.CompileTypescript)
            {
                Process.Start("tsc", definition.TypescriptClient).WaitForExit();
            }
        }
Пример #8
0
        public async Task When_export_types_is_false_then_dont_add_export_before_classes()
        {
            //// Arrange
            var generator = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document  = await generator.GenerateForControllerAsync <DiscussionController>();

            var json = document.ToJson();

            //// Act
            var codeGen = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings
            {
                Template = TypeScriptTemplate.JQueryPromises,
                GenerateClientInterfaces    = true,
                TypeScriptGeneratorSettings =
                {
                    TypeScriptVersion = 2.0m,
                    ExportTypes       = false
                }
            });
            var code = codeGen.GenerateFile();

            //// Assert
            Assert.IsFalse(code.Contains("export class DiscussionClient"));
            Assert.IsFalse(code.Contains("export interface IDiscussionClient"));
        }
Пример #9
0
 /// <summary>Initializes a new instance of the <see cref="TypeScriptParameterModel" /> class.</summary>
 /// <param name="parameterName">Name of the parameter.</param>
 /// <param name="variableName">Name of the variable.</param>
 /// <param name="typeName">The type name.</param>
 /// <param name="parameter">The parameter.</param>
 /// <param name="allParameters">All parameters.</param>
 /// <param name="settings">The settings.</param>
 /// <param name="generator">The client generator base.</param>
 /// <param name="resolver">The resolver.</param>
 public TypeScriptParameterModel(string parameterName, string variableName, string typeName, SwaggerParameter parameter,
                                 IList <SwaggerParameter> allParameters, SwaggerToTypeScriptClientGeneratorSettings settings,
                                 SwaggerToTypeScriptClientGenerator generator, TypeScriptTypeResolver resolver)
     : base(parameterName, variableName, typeName, parameter, allParameters, settings.TypeScriptGeneratorSettings, generator)
 {
     _settings = settings;
     _resolver = resolver;
 }
Пример #10
0
        static void GenerateFile(SwaggerDocument document, SwaggerToTypeScriptClientGeneratorSettings settings, string clientFile)
        {
            var generator = new SwaggerToTypeScriptClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            using (var writer = new StreamWriter(clientFile, false, Encoding.UTF8))
            {
                writer.Write(code);
            }
        }
Пример #11
0
        public IActionResult Generate()
        {
            var settings = new WebApiToSwaggerGeneratorSettings
            {
                DefaultUrlTemplate          = "api/{controller}/{action}/{id}",
                DefaultPropertyNameHandling = PropertyNameHandling.CamelCase
            };
            var generator   = new WebApiToSwaggerGenerator(settings);
            var controllers = typeof(Ng2GenerateController).GetTypeInfo().Assembly.GetTypes()
                              .Where(t => typeof(Controller).IsAssignableFrom(t))
                              .ToList();
            var document = generator.GenerateForControllers(controllers);

            //var json = document.ToJson();
            //return Content(document.ToJson());

            var typescriptGeneratorSettings = new SwaggerToTypeScriptClientGeneratorSettings()
            {
                ClassName                = "{controller}Client",
                Template                 = TypeScriptTemplate.Angular2,
                GenerateClientClasses    = true,
                GenerateClientInterfaces = true,
                GenerateDtoTypes         = true,

                TypeScriptGeneratorSettings = new TypeScriptGeneratorSettings()
                {
                    TypeStyle = TypeScriptTypeStyle.Interface,

                    //TypeNameGenerator = new MyTypeNameGenerator(),
                }
            };

            var tsGenerator = new SwaggerToTypeScriptClientGenerator(document, typescriptGeneratorSettings);
            var typescript  = tsGenerator.GenerateFile();

            typescript = @"
// this is file generated by hitting the /swagger/ng2 endpoint
" + typescript;

            // hack!
            typescript = typescript.Replace("return <Observable<any>><any>Observable.throw(e);",
                                            "return <Observable<any>><any>Observable.throw(response);");

            typescript = typescript.Replace("return <Observable<UserProfileVm>><any>Observable.throw(e)",
                                            "return <Observable<any>><any>Observable.throw(response)");

            // write typescript to file under ng app
            var webRoot = _env.WebRootPath;
            var file    = System.IO.Path.Combine(webRoot, @"..\ClientApp\app\Right4MeClient.ts");

            System.IO.File.WriteAllText(file, typescript);

            return(Content(typescript));
        }
Пример #12
0
        public async Task GenerateTS()
        {
            var document = await GetSwaggerDocument();

            var settings = new SwaggerToTypeScriptClientGeneratorSettings()
            {
                Template = TypeScriptTemplate.Fetch
            };

            var generator = new SwaggerToTypeScriptClientGenerator(document, settings);

            File.WriteAllText(TSPath, generator.GenerateFile());
        }
Пример #13
0
        public async Task <string> RunAsync()
        {
            var additionalCode = ExtensionCode ?? string.Empty;

            if (File.Exists(additionalCode))
            {
                additionalCode = File.ReadAllText(additionalCode);
            }
            Settings.TypeScriptGeneratorSettings.ExtensionCode = additionalCode;

            var clientGenerator = new SwaggerToTypeScriptClientGenerator(InputSwaggerService, Settings);

            return(clientGenerator.GenerateFile());
        }
Пример #14
0
        public async Task GenerateTS()
        {
            var document = await GetSwaggerDocument();

            var settings = new SwaggerToTypeScriptClientGeneratorSettings()
            {
                Template = TypeScriptTemplate.Fetch,
            };

            var generator = new SwaggerToTypeScriptClientGenerator(document, settings);

            Context.ReturnFile(Encoding.UTF8.GetBytes(generator.GenerateFile().Replace("\nexport ", "\n")), "ApiClient.ts", "text/plain");
            //File.WriteAllText(TSPath, generator.GenerateFile());
        }
Пример #15
0
        public async Task When_body_is_binary_then_blob_is_used_as_parameter_in_TypeScript()
        {
            var yaml = @"openapi: 3.0.0
servers:
  - url: https://www.example.com/
info:
  version: '2.0.0'
  title: 'Test API'   
paths:
  /files:
    post:
      tags:
        - Files
      summary: 'Add File'
      operationId: addFile
      responses:
        '200':
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/FileToken'
      requestBody:
        content:
          image/png:
            schema:
              type: string
              format: binary
components:
  schemas:
    FileToken:
      type: object
      required:
        - fileId    
      properties:  
        fileId:
          type: string
          format: uuid";

            var document = await SwaggerYamlDocument.FromYamlAsync(yaml);

            //// Act
            var codeGenerator = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings());
            var code          = codeGenerator.GenerateFile();

            //// Assert
            Assert.Contains("addFile(body: Blob | undefined): ", code);
            Assert.Contains("\"Content-Type\": \"image/png\"", code);
            Assert.Contains("\"Accept\": \"application/xml\"", code);
            Assert.Contains("const content_ = body;", code);
        }
        public async Task <string> RunAsync()
        {
            return(await Task.Run(() =>
            {
                var additionalCode = ExtensionCode ?? string.Empty;
                if (DynamicApis.FileExists(additionalCode))
                {
                    additionalCode = DynamicApis.FileReadAllText(additionalCode);
                }
                Settings.TypeScriptGeneratorSettings.ExtensionCode = additionalCode;

                var clientGenerator = new SwaggerToTypeScriptClientGenerator(InputSwaggerDocument, Settings);
                return clientGenerator.GenerateFile();
            }));
        }
        public async Task <string> RunAsync()
        {
            return(await Task.Run(async() =>
            {
                var additionalCode = ExtensionCode ?? string.Empty;
                if (await DynamicApis.FileExistsAsync(additionalCode).ConfigureAwait(false))
                {
                    additionalCode = await DynamicApis.FileReadAllTextAsync(additionalCode).ConfigureAwait(false);
                }
                Settings.TypeScriptGeneratorSettings.ExtensionCode = additionalCode;

                var document = await GetInputSwaggerDocument().ConfigureAwait(false);
                var clientGenerator = new SwaggerToTypeScriptClientGenerator(document, Settings);
                return clientGenerator.GenerateFile();
            }));
        }
Пример #18
0
        public string Gen(SwaggerDocument service, SwaggerToolSettings setting, TypeScriptTemplate Template)
        {
            var settings = new SwaggerToTypeScriptClientGeneratorSettings
            {
                ClassName   = setting.TypeScriptGen.ClassName,
                Template    = Template,
                PromiseType = PromiseType.Promise,
                TypeScriptGeneratorSettings = { ModuleName = setting.TypeScriptGen.ModuleName }
            };


            var generator = new SwaggerToTypeScriptClientGenerator(service, settings);
            var code      = generator.GenerateFile();

            return(code);
        }
Пример #19
0
        public async Task When_body_is_xml_then_correct_TypeScript_is_generated()
        {
            //// Arrange
            var generator = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document  = await generator.GenerateForControllerAsync <MyXmlController>();

            //// Act
            var gen = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings {
                Template = TypeScriptTemplate.JQueryCallbacks
            });
            var code = gen.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains("(xmlDocument: string, "));
            Assert.IsTrue(code.Contains("const content_ = xmlDocument;"));
            Assert.IsTrue(code.Contains("\"Content-Type\": \"application/xml; charset=UTF-8\""));
        }
        public void When_two_methods_have_same_name_then_generated_id_is_still_different()
        {
            //// Arrange
            var generator     = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var service       = generator.GenerateForController <PointController>();
            var codeGenerator = new SwaggerToTypeScriptClientGenerator(service, new SwaggerToTypeScriptClientGeneratorSettings
            {
                OperationGenerationMode = OperationGenerationMode.MultipleClientsFromOperationId
            });

            //// Act
            var code = codeGenerator.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains(" get("));
            Assert.IsTrue(code.Contains(" get2("));
        }
Пример #21
0
        public void When_generating_TypeScript_code_then_output_contains_expected_classes()
        {
            // Arrange
            var service = CreateService();

            //// Act
            var generator = new SwaggerToTypeScriptClientGenerator(service, new SwaggerToTypeScriptClientGeneratorSettings
            {
                ClassName = "MyClass"
            });
            var code = generator.GenerateFile();

            // Assert
            Assert.IsTrue(code.Contains("export class MyClass"));
            Assert.IsTrue(code.Contains("export interface Person"));
            Assert.IsTrue(code.Contains("export interface Address"));
        }
Пример #22
0
        /// <summary>Initializes a new instance of the <see cref="TypeScriptOperationModel" /> class.</summary>
        /// <param name="operation">The operation.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="generator">The generator.</param>
        /// <param name="resolver">The resolver.</param>
        public TypeScriptOperationModel(
            SwaggerOperation operation,
            ClientGeneratorBaseSettings settings,
            SwaggerToTypeScriptClientGenerator generator,
            ITypeResolver resolver)
            : base(null, operation, resolver, generator, settings)
        {
            _operation = operation;
            _settings  = settings;
            _generator = generator;

            Parameters = _operation.ActualParameters.Select(parameter =>
                                                            new TypeScriptParameterModel(parameter.Name,
                                                                                         GetParameterVariableName(parameter, _operation.Parameters), ResolveParameterType(parameter),
                                                                                         parameter, _operation.ActualParameters.ToList(), (SwaggerToTypeScriptClientGeneratorSettings)_settings,
                                                                                         _generator, (TypeScriptTypeResolver)resolver))
                         .ToList();
        }
        public async Task When_two_methods_have_same_name_then_generated_id_is_still_different()
        {
            //// Arrange
            var generator = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document  = await generator.GenerateForControllerAsync <PointController>();

            var codeGenerator = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings
            {
                OperationNameGenerator = new MultipleClientsFromOperationIdOperationNameGenerator()
            });

            //// Act
            var code = codeGenerator.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains(" get("));
            Assert.IsTrue(code.Contains(" getAll("));
        }
        public async Task When_operations_have_different_tags_they_are_grouped_into_different_clients()
        {
            //// Arrange
            var generator = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document  = await generator.GenerateForControllersAsync(new List <Type>() { typeof(PointControllerA), typeof(PointControllerB) });

            var codeGenerator = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings
            {
                OperationNameGenerator = new MultipleClientsFromFirstTagAndPathSegmentsOperationNameGenerator()
            });

            //// Act
            var code = codeGenerator.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains("export class PointControllerAClient"));
            Assert.IsTrue(code.Contains("export class PointControllerBClient"));
        }
Пример #25
0
    async Task <string> GetSwaggerWay2()
    {
        var document = new SwaggerDocument();
        var Settings = new JsonSchemaGeneratorSettings()
        {
            SchemaType = SchemaType.Swagger2,
        };
        var generator      = new JsonSchemaGenerator(Settings);
        var schemaResolver = new SwaggerSchemaResolver(document, Settings);

        var loadedAssemblies = LoadDtoAssemblies();

        foreach (var dtoAsm in loadedAssemblies.Dto)
        {
            var models = dtoAsm.Assembly.GetTypes()
                         .Where(x => x.Namespace.StartsWith(dtoAsm.ProjectName + ".Public"));

            foreach (var model in models)
            {
                await generator.GenerateAsync(model, schemaResolver).ConfigureAwait(false);
            }

            /*
             * //this swagger.json will be wrong (paths and controller is not detected)
             * var controllers = dtoAsm.Assembly.GetTypes()
             *  .Where(x => x.Name.EndsWith("Controller"));
             *
             * foreach (var controller in controllers)
             * {
             *  await generator.GenerateAsync(controller, schemaResolver).ConfigureAwait(false);
             * }
             */
        }
        //File.WriteAllText(Path.Combine(outputPath, "swagger.json"), document.ToJson());

        var tsGenerator = new SwaggerToTypeScriptClientGenerator(document,
                                                                 new SwaggerToTypeScriptClientGeneratorSettings
        {
            ClassName = "{controller}Client",
        });
        var tsModels = tsGenerator.GenerateFile();

        return(tsModels);
    }
        static void Main(string[] args)
        {
            var document = SwaggerDocument.FromFileAsync("./swagger-doc.json").Result;

            var settings = new SwaggerToTypeScriptClientGeneratorSettings
            {
                TypeScriptGeneratorSettings =
                {
                    TypeScriptVersion =                      2.3m,
                    TypeStyle         = TypeScriptTypeStyle.Class,
                    NullHandling      = NullHandling.Swagger
                },
                Template = TypeScriptTemplate.Angular
            };

            var generator = new SwaggerToTypeScriptClientGenerator(document, settings);

            Console.WriteLine(generator.GenerateFile());
        }
Пример #27
0
        // First arg indicates what file we should save the generated code to.
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                throw new Exception("Expected exactly one argument, which is the target file name of the generated TS code.");
            }

            var settings = new SwaggerToTypeScriptClientGeneratorSettings
            {
                ClassName = "SD2{controller}Api",
                GenerateClientInterfaces = true,
                Template = TypeScriptTemplate.Angular
            };

            var swaggerDoc     = Swagger.GenerateSwaggerDocument().Result;
            var generator      = new SwaggerToTypeScriptClientGenerator(swaggerDoc, settings);
            var typescriptCode = generator.GenerateFile();

            File.WriteAllText(args[0], typescriptCode);
        }
Пример #28
0
        public async Task GenerateTS()
        {
            var document = await GetSwaggerDocument();

            var settings = new SwaggerToTypeScriptClientGeneratorSettings()
            {
                Template = TypeScriptTemplate.Fetch,
                OperationNameGenerator = new CustomNameGenerator()
            };

            settings.TypeScriptGeneratorSettings.PropertyNameGenerator = new MyPropertyNameGenerator(c => ConversionUtilities.ConvertToLowerCamelCase(c, true));
            settings.TypeScriptGeneratorSettings.NullValue             = NJsonSchema.CodeGeneration.TypeScript.TypeScriptNullValue.Null;


            var generator = new SwaggerToTypeScriptClientGenerator(document, settings);
            var ts        = generator.GenerateFile();

            ts = "namespace " + Namespace + " {\n" + ConversionUtilities.Tab(ts, 1).TrimEnd('\n') + "\n}\n";
            Context.ReturnFile(Encoding.UTF8.GetBytes(ts), "ApiClient.ts", "text/plain");
            //File.WriteAllText(TSPath, generator.GenerateFile());
        }
Пример #29
0
        public async Task When_return_value_is_void_then_client_returns_observable_of_void()
        {
            //// Arrange
            var generator = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings());
            var document = await generator.GenerateForControllerAsync<DiscussionController>();

            //// Act
            var codeGen = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings
            {
                Template = TypeScriptTemplate.Angular,
                GenerateClientInterfaces = true, 
                TypeScriptGeneratorSettings =
                {
                    TypeScriptVersion = 2.0m
                }
            });
            var code = codeGen.GenerateFile();

            //// Assert
            Assert.IsTrue(code.Contains("addMessage(message: Foo): Observable<void>"));
        }
Пример #30
0
        public async Task When_generating_TypeScript_code_then_output_contains_expected_classes()
        {
            // Arrange
            var document = await CreateDocumentAsync();

            //// Act
            var generator = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings
            {
                ClassName = "MyClass",
                TypeScriptGeneratorSettings =
                {
                    TypeStyle = TypeScriptTypeStyle.Interface
                }
            });
            var code = generator.GenerateFile();

            // Assert
            Assert.IsTrue(code.Contains("export class MyClass"));
            Assert.IsTrue(code.Contains("export interface Person"));
            Assert.IsTrue(code.Contains("export interface Address"));
        }