示例#1
0
        protected virtual TemplateCodeGenerationMetadata CreateTemplate(ITypeNameGenerator nameGenerator, ITemplatePredicate predicate, TemplateInfo template)
        {
            var fullName = nameGenerator.GetFullTypeName(template.Path);

            var fields = CreateTemplateFields(template, nameGenerator);

            return(new TemplateCodeGenerationMetadata(template, fullName, predicate.GetRootNamespace(template), fields));
        }
示例#2
0
        /// <summary>Initializes a new instance of the <see cref="SwaggerSchemaResolver" /> class.</summary>
        /// <param name="document">The Swagger document.</param>
        /// <param name="settings">The settings.</param>
        /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" /></exception>
        public SwaggerSchemaResolver(SwaggerDocument document, JsonSchemaGeneratorSettings settings)
            : base(settings)
        {
            if (document == null)
                throw new ArgumentNullException(nameof(document));

            _document = document;
            _typeNameGenerator = settings.TypeNameGenerator;
        }
示例#3
0
        /// <summary>Gets the type name of the schema.</summary>
        /// <param name="typeNameGenerator">The type name generator.</param>
        /// <returns>The type name.</returns>
        public string GetTypeName(ITypeNameGenerator typeNameGenerator)
        {
            if (typeNameGenerator != null)
            {
                return(typeNameGenerator.Generate(this));
            }

            return(TypeNameRaw);
        }
        /// <summary>Gets the type name of the schema.</summary>
        /// <param name="typeNameGenerator">The type name generator.</param>
        /// <returns>The type name.</returns>
        public string GetTypeName(ITypeNameGenerator typeNameGenerator)
        {
            if (typeNameGenerator != null)
            {
                return(typeNameGenerator.Generate(this)?.Split('.').Last());
            }

            return(TypeNameRaw?.Split('.').Last());
        }
        /// <summary>Initializes a new instance of the <see cref="SwaggerSchemaResolver" /> class.</summary>
        /// <param name="document">The Swagger document.</param>
        /// <param name="settings">The settings.</param>
        /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" /></exception>
        public SwaggerSchemaResolver(SwaggerDocument document, JsonSchemaGeneratorSettings settings)
            : base(document, settings)
        {
            if (document == null)
            {
                throw new ArgumentNullException(nameof(document));
            }

            _typeNameGenerator = settings.TypeNameGenerator;
        }
            /// <summary>Initializes a new instance of the <see cref="OpenApiDocumentSchemaResolver" /> class.</summary>
            /// <param name="document">The Open API document.</param>
            /// <param name="settings">The settings.</param>
            public OpenApiDocumentSchemaResolver(OpenApiDocument document, JsonSchemaGeneratorSettings settings)
                : base(document, settings)
            {
                if (document == null)
                {
                    throw new ArgumentNullException(nameof(document));
                }

                this._typeNameGenerator = settings.TypeNameGenerator;
            }
示例#7
0
        /// <summary>Serializes the <see cref="JsonSchema4" /> to a JSON string.</summary>
        /// <param name="typeNameGenerator">The type name generator.</param>
        /// <returns>The JSON string.</returns>
        public string ToJson(ITypeNameGenerator typeNameGenerator)
        {
            var oldSchema = SchemaVersion;

            SchemaVersion = "http://json-schema.org/draft-04/schema#";

            JsonSchemaReferenceUtilities.UpdateSchemaReferencePaths(this, new JsonSchemaDefinitionAppender(this, typeNameGenerator));
            var data = JsonConvert.SerializeObject(this, Formatting.Indented);

            JsonSchemaReferenceUtilities.UpdateSchemaReferences(this, new JsonReferenceResolver());

            SchemaVersion = oldSchema;
            return(JsonSchemaReferenceUtilities.ConvertPropertyReferences(data));
        }
示例#8
0
        /// <summary>Converts the description object to JSON.</summary>
        /// <param name="typeNameGenerator">The type name generator.</param>
        /// <returns>The JSON string.</returns>
        public string ToJson(ITypeNameGenerator typeNameGenerator)
        {
            var settings = new JsonSerializerSettings
            {
                PreserveReferencesHandling = PreserveReferencesHandling.None,
                Formatting = Formatting.Indented
            };

            GenerateOperationIds();

            JsonSchemaReferenceUtilities.UpdateSchemaReferencePaths(this, new SwaggerDocumentSchemaDefinitionAppender(this, typeNameGenerator));
            var data = JsonConvert.SerializeObject(this, settings);

            JsonSchemaReferenceUtilities.UpdateSchemaReferences(this);

            return(JsonSchemaReferenceUtilities.ConvertPropertyReferences(data));
        }
示例#9
0
 /// <summary>Initializes a new instance of the <see cref="JsonSchemaDefinitionAppender" /> class.</summary>
 /// <param name="rootObject">The root object.</param>
 /// <param name="typeNameGenerator">The type name generator.</param>
 public JsonSchemaDefinitionAppender(object rootObject, ITypeNameGenerator typeNameGenerator)
 {
     RootObject         = rootObject;
     _typeNameGenerator = typeNameGenerator;
 }
示例#10
0
        /// <summary>Creates the factory to be used in the FromJsonAsync method.</summary>
        /// <param name="typeNameGenerator">The type name generator.</param>
        /// <returns>The factory.</returns>
        public static Func <JsonSchema, JsonReferenceResolver> CreateJsonReferenceResolverFactory(ITypeNameGenerator typeNameGenerator)
        {
            JsonReferenceResolver ReferenceResolverFactory(JsonSchema schema) =>
            new JsonReferenceResolver(new JsonSchemaAppender(schema, typeNameGenerator));

            return(ReferenceResolverFactory);
        }
示例#11
0
 /// <summary>Initializes a new instance of the <see cref="JsonSchemaDefinitionAppender"/> class.</summary>
 public JsonSchemaDefinitionAppender(ITypeNameGenerator typeNameGenerator)
 {
     _typeNameGenerator = typeNameGenerator;
 }
示例#12
0
 /// <summary>Initializes a new instance of the <see cref="TypeResolverBase{TGenerator}"/> class.</summary>
 /// <param name="typeNameGenerator">The type name generator.</param>
 protected TypeResolverBase(ITypeNameGenerator typeNameGenerator)
 {
     _typeNameGenerator = typeNameGenerator;
 }
示例#13
0
 /// <summary>Initializes a new instance of the <see cref="SwaggerDocumentSchemaDefinitionAppender" /> class.</summary>
 /// <param name="document">The Swagger document.</param>
 /// <param name="typeNameGenerator">The type name generator.</param>
 public SwaggerDocumentSchemaDefinitionAppender(SwaggerDocument document, ITypeNameGenerator typeNameGenerator)
 {
     _document          = document;
     _typeNameGenerator = typeNameGenerator;
 }
示例#14
0
        protected virtual IEnumerable <TemplateFieldCodeGenerationMetadata> CreateTemplateFields(TemplateInfo template, ITypeNameGenerator nameGenerator)
        {
            var fields = new List <TemplateFieldCodeGenerationMetadata>(template.OwnFields.Length);

            foreach (var field in template.OwnFields)
            {
                var currentField = new TemplateFieldCodeGenerationMetadata(field, nameGenerator.ConvertToIdentifier(field.Name));

                fields.Add(currentField);
            }

            fields.Sort((a, b) => string.Compare(a.CodeName, b.CodeName, StringComparison.Ordinal));

            return(fields);
        }
 /// <summary>Gets the type name of the schema.</summary>
 /// <param name="typeNameGenerator">The type name generator.</param>
 /// <param name="typeNameHint">The type name hint.</param>
 /// <returns>The type name.</returns>
 public string GetTypeName(ITypeNameGenerator typeNameGenerator, string typeNameHint)
 {
     return(typeNameGenerator.Generate(this, typeNameHint));
 }
        /// <summary>Gets the type name of the schema.</summary>
        /// <param name="typeNameGenerator">The type name generator.</param>
        /// <returns>The type name.</returns>
        public string GetTypeName(ITypeNameGenerator typeNameGenerator)
        {
            if (typeNameGenerator != null)
                return typeNameGenerator.Generate(this);

            return TypeNameRaw;
        }
示例#17
0
 /// <summary>Initializes a new instance of the <see cref="SwaggerServiceSchemaDefinitionAppender" /> class.</summary>
 /// <param name="service">The service.</param>
 /// <param name="typeNameGenerator">The type name generator.</param>
 public SwaggerServiceSchemaDefinitionAppender(SwaggerService service, ITypeNameGenerator typeNameGenerator)
 {
     _service           = service;
     _typeNameGenerator = typeNameGenerator;
 }