Example #1
0
        /// <summary>Initializes a new instance of the <see cref="FileTemplateModel" /> class.</summary>
        /// <param name="document">The Swagger document.</param>
        /// <param name="clientCode">The client code.</param>
        /// <param name="clientClasses">The client classes.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="extensionCode">The extension code.</param>
        /// <param name="resolver">The resolver.</param>
        public FileTemplateModel(SwaggerDocument document, string clientCode, IEnumerable<string> clientClasses,
            SwaggerToTypeScriptClientGeneratorSettings settings, TypeScriptExtensionCode extensionCode, TypeScriptTypeResolver resolver)
        {
            _document = document;
            _extensionCode = extensionCode;
            _settings = settings;
            _resolver = resolver;
            _clientCode = clientCode;
            ClientClasses = clientClasses.ToArray();

            Types = GenerateDtoTypes();
            ExtensionCodeBottom = GenerateExtensionCodeAfter();
        }
        /// <summary>Initializes a new instance of the <see cref="SwaggerToTypeScriptClientGenerator" /> class.</summary>
        /// <param name="document">The Swagger document.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="resolver">The resolver.</param>
        /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" />.</exception>
        public SwaggerToTypeScriptClientGenerator(SwaggerDocument document, SwaggerToTypeScriptClientGeneratorSettings settings, TypeScriptTypeResolver resolver)
            : base(resolver, settings.CodeGeneratorSettings)
        {
            if (document == null)
                throw new ArgumentNullException(nameof(document));

            Settings = settings;

            _document = document;
            _resolver = resolver;
            _resolver.AddGenerators(_document.Definitions);
            _extensionCode = new TypeScriptExtensionCode(
                Settings.TypeScriptGeneratorSettings.ExtensionCode,
                Settings.TypeScriptGeneratorSettings.ExtendedClasses,
                new[] { Settings.ClientBaseClass });
        }
Example #3
0
        /// <summary>Initializes a new instance of the <see cref="TypeScriptFileTemplateModel" /> class.</summary>
        /// <param name="clientTypes">The client types.</param>
        /// <param name="dtoTypes">The DTO types.</param>
        /// <param name="document">The Swagger document.</param>
        /// <param name="extensionCode">The extension code.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="resolver">The resolver.</param>
        public TypeScriptFileTemplateModel(
            IEnumerable <CodeArtifact> clientTypes,
            IEnumerable <CodeArtifact> dtoTypes,
            OpenApiDocument document,
            TypeScriptExtensionCode extensionCode,
            TypeScriptClientGeneratorSettings settings,
            TypeScriptTypeResolver resolver)
        {
            _document      = document;
            _extensionCode = extensionCode;
            _settings      = settings;
            _resolver      = resolver;

            _clientCode  = clientTypes.OrderByBaseDependency().Concatenate();
            _clientTypes = clientTypes;

            Types = dtoTypes.OrderByBaseDependency().Concatenate();
            ExtensionCodeBottom = GenerateExtensionCodeAfter();
            Framework           = new TypeScriptFrameworkModel(settings);
        }
Example #4
0
 public SelfTypeScriptGenerator(TypeScriptClientGeneratorSettings clientGeneratorSettings,
                                OpenApiDocument openApiDocument)
 {
     _clientGeneratorSettings = clientGeneratorSettings;
     if (_clientGeneratorSettings.ExcludedParameterNames == null)
     {
         _clientGeneratorSettings.ExcludedParameterNames = new string[0];
     }
     Constant.TsBaseType.AddRange(_clientGeneratorSettings.ExcludedParameterNames);
     _resolver        = new TypeScriptTypeResolver(clientGeneratorSettings.TypeScriptGeneratorSettings);
     _openApiDocument = openApiDocument;
     _resolver.RegisterSchemaDefinitions(_openApiDocument.Definitions);
     _typeScriptClientGenerator =
         new TypeScriptClientGenerator(_openApiDocument, _clientGeneratorSettings, _resolver);
     _extensionCode = new TypeScriptExtensionCode(
         clientGeneratorSettings.TypeScriptGeneratorSettings.ExtensionCode,
         (clientGeneratorSettings.TypeScriptGeneratorSettings.ExtendedClasses ?? new string[] { })
         .Concat(new[] { clientGeneratorSettings.ConfigurationClass }).ToArray(),
         new[] { clientGeneratorSettings.ClientBaseClass });
 }
Example #5
0
        public void When_extension_code_has_comment_then_it_is_processed_correctly()
        {
            //// Arrange
            var code = @"// This is the class that uses HTTP

export class UseHttpCookiesForApi {
    protected transformOptions(options: RequestInit): Promise<RequestInit> {
        options.credentials = 'same-origin';
        return Promise.resolve(options);
    }
}";

            //// Act
            var extensionCode = new TypeScriptExtensionCode(code, new string[0], new[] { "UseHttpCookiesForApi" });

            //// Assert
            Assert.Empty(extensionCode.ExtensionClasses);
            Assert.DoesNotContain("UseHttpCookiesForApi", extensionCode.BottomCode);
            Assert.Contains("UseHttpCookiesForApi", extensionCode.TopCode);
        }
        public void When_extension_code_is_processed_then_code_and_classes_are_correctly_detected_and_converted()
        {
            //// Arrange
            var code = Code;

            //// Act
            var ext = new TypeScriptExtensionCode(code, new[] { "Foo", "Bar" });

            //// Assert
            Assert.IsTrue(ext.ExtensionClasses.ContainsKey("Foo"));
            Assert.IsTrue(ext.ExtensionClasses["Foo"].StartsWith("export class Foo extends Foo {"));

            Assert.IsTrue(ext.ExtensionClasses.ContainsKey("Bar"));
            Assert.IsTrue(ext.ExtensionClasses["Bar"].StartsWith("export class Bar extends Bar {"));

            Assert.IsTrue(ext.ImportCode.Contains("<reference path"));
            Assert.IsTrue(ext.ImportCode.Contains("import foo = require(\"foo/bar\")"));
            Assert.IsTrue(ext.ImportCode.Contains("import bar = require(\"foo/bar\")"));

            Assert.IsTrue(ext.BottomCode.StartsWith("var clientClasses"));
            Assert.IsTrue(ext.BottomCode.Contains("if (clientClasses.hasOwnProperty(clientClass))"));
            Assert.IsTrue(ext.BottomCode.Contains("export class Test"));
            Assert.IsTrue(ext.BottomCode.EndsWith("var x = 10;"));
        }
Example #7
0
        /// <summary>Initializes a new instance of the <see cref="FileTemplateModel" /> class.</summary>
        /// <param name="document">The Swagger document.</param>
        /// <param name="clientCode">The client code.</param>
        /// <param name="clientClasses">The client classes.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="extensionCode">The extension code.</param>
        /// <param name="resolver">The resolver.</param>
        public FileTemplateModel(SwaggerDocument document, string clientCode, IEnumerable <string> clientClasses,
                                 SwaggerToTypeScriptClientGeneratorSettings settings, TypeScriptExtensionCode extensionCode, TypeScriptTypeResolver resolver)
        {
            _document      = document;
            _extensionCode = extensionCode;
            _settings      = settings;
            _resolver      = resolver;
            _clientCode    = clientCode;
            ClientClasses  = clientClasses.ToArray();

            Types = GenerateDtoTypes();
            ExtensionCodeBottom = GenerateExtensionCodeAfter();
        }