Example #1
0
        public OpenApiDocument Generate(HttpContext httpContext, IAppEntity app, IEnumerable <ISchemaEntity> schemas)
        {
            document = NSwagHelper.CreateApiDocument(httpContext, urlOptions, app.Name);

            schemaGenerator = new OpenApiSchemaGenerator(settings);
            schemaResolver  = new OpenApiSchemaResolver(document, settings);

            statusSchema = GenerateStatusSchema();

            GenerateSchemasOperations(schemas, app);

            var context =
                new DocumentProcessorContext(document,
                                             Enumerable.Empty <Type>(),
                                             Enumerable.Empty <Type>(),
                                             schemaResolver,
                                             schemaGenerator,
                                             settings);

            foreach (var processor in settings.DocumentProcessors)
            {
                processor.Process(context);
            }

            return(document);
        }
Example #2
0
        private AspNetCoreOperationProcessorContext GetContext(ApiDescription apiDescription)
        {
            var operationDescription = new OpenApiOperationDescription {
                Operation = new OpenApiOperation()
            };
            var swaggerSettings         = new AspNetCoreOpenApiDocumentGeneratorSettings();
            var document                = new OpenApiDocument();
            var schemaGeneratorSettings = new OpenApiDocumentGeneratorSettings();
            var schemaGenerator         = new OpenApiSchemaGenerator(schemaGeneratorSettings);
            var schemaResolver          = new OpenApiSchemaResolver(document, schemaGeneratorSettings);

            swaggerSettings.SchemaGenerator = schemaGenerator;

            var context = new AspNetCoreOperationProcessorContext(
                document,
                operationDescription,
                GetType(),
                GetType().GetMethod(nameof(SomeAction), BindingFlags.NonPublic | BindingFlags.Instance),
                new OpenApiDocumentGenerator(swaggerSettings, schemaResolver),
                schemaGenerator,
                schemaResolver,
                swaggerSettings,
                new List <OpenApiOperationDescription>())
            {
                ApiDescription = apiDescription,
            };

            return(context);
        }
    public void CanGenerateSchemaForListTypes(Type type)
    {
        var schema = OpenApiSchemaGenerator.GetOpenApiSchema(type);

        Assert.NotNull(schema);
        Assert.Equal("array", schema.Type);
    }
    public void CanGenerateCorrectSchemaForDictionaryTypes(Type type)
    {
        var schema = OpenApiSchemaGenerator.GetOpenApiSchema(type);

        Assert.NotNull(schema);
        Assert.Equal("object", schema.Type);
    }
    public void CanGenerateSchemaForDateSpanTypes()
    {
        var schema = OpenApiSchemaGenerator.GetOpenApiSchema(typeof(TimeSpan));

        Assert.NotNull(schema);
        Assert.Equal("string", schema.Type);
        Assert.Equal("date-span", schema.Format);
    }
    public void CanGenerateSchemaForDateTimeTypes(Type type)
    {
        var schema = OpenApiSchemaGenerator.GetOpenApiSchema(type);

        Assert.NotNull(schema);
        Assert.Equal("string", schema.Type);
        Assert.Equal("date-time", schema.Format);
    }
Example #7
0
 public SchemasOpenApiGenerator(
     IUrlGenerator urlGenerator,
     OpenApiDocumentGeneratorSettings schemaSettings,
     OpenApiSchemaGenerator schemaGenerator,
     IRequestCache requestCache)
 {
     this.urlGenerator    = urlGenerator;
     this.schemaSettings  = schemaSettings;
     this.schemaGenerator = schemaGenerator;
     this.requestCache    = requestCache;
 }
Example #8
0
        internal Builder(IAppEntity app,
                         OpenApiDocument document,
                         OpenApiSchemaResolver schemaResolver,
                         OpenApiSchemaGenerator schemaGenerator)
        {
            Document = document;

            AppName = app.Name;

            ChangeStatusSchema = schemaGenerator.GenerateWithReference <JsonSchema>(typeof(ChangeStatusDto).ToContextualType(), schemaResolver);
        }