Beispiel #1
0
        private static void AddSecurityDefinitionAndRequirements(OpenApiSettings openApiSettings, SwaggerGenOptions options)
        {
            if (openApiSettings.Security != null)
            {
                options.AddSecurityDefinition(openApiSettings.Security.Scheme,
                                              new OpenApiSecurityScheme
                {
                    Description  = openApiSettings.Security.Description,
                    Name         = openApiSettings.Security.Name,
                    In           = ParameterLocation.Header,
                    Scheme       = openApiSettings.Security.Scheme,
                    Type         = openApiSettings.Security.SchemeType,
                    BearerFormat = openApiSettings.Security.BearerFormat
                });

                options.AddSecurityRequirement(new OpenApiSecurityRequirement
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference {
                                Type = ReferenceType.SecurityScheme, Id = openApiSettings.Security.Scheme
                            }
                        },
                        new List <string>()
                    }
                });
            }
        }
Beispiel #2
0
        public void Given_Value_Property_Should_Return_Value()
        {
            var settings = new OpenApiSettings();

            settings.Info.Should().NotBeNull();
            settings.Info.Version.Should().Be("1.0.0");
            settings.Info.Title.Should().Be("Azure Functions Open API Extension");
        }
        public static IApplicationBuilder UseCustomOpenApi(this IApplicationBuilder application,
                                                           OpenApiSettings openApiSettings)
        {
            application.UseSwagger();

            application.UseSwaggerUI(c =>
            {
                // e.g. /swagger/v1/swagger.json
                c.SwaggerEndpoint($"/{openApiSettings.RoutePrefix}/{openApiSettings.Version}/swagger.json", openApiSettings.Title);
                c.DisplayOperationId();
            });

            return(application);
        }
Beispiel #4
0
        /// <summary>
        /// Gets the <see cref="IOpenApiConfigurationOptions"/> instance from the given assembly.
        /// </summary>
        /// <param name="assembly">The executing assembly instance.</param>
        /// <returns>Returns the <see cref="IOpenApiConfigurationOptions"/> instance resolved.</returns>
        public static IOpenApiConfigurationOptions Resolve(Assembly assembly)
        {
            var type = assembly.GetTypes()
                       .SingleOrDefault(p => p.GetInterface("IOpenApiConfigurationOptions", ignoreCase: true).IsNullOrDefault() == false);

            if (type.IsNullOrDefault())
            {
                var settings = new OpenApiSettings();

                return(settings);
            }

            var options = Activator.CreateInstance(type);

            return(options as IOpenApiConfigurationOptions);
        }
        private void SetOpenApiInfo()
        {
            var assembly = Assembly.LoadFrom(this.CompiledDllPath);

            var type = assembly.GetTypes()
                       .SingleOrDefault(p => p.GetInterface("IOpenApiConfigurationOptions", ignoreCase: true).IsNullOrDefault() == false);

            if (type.IsNullOrDefault())
            {
                var settings = new OpenApiSettings();
                this.OpenApiInfo = settings.Info;

                return;
            }

            var options = Activator.CreateInstance(type);

            this.OpenApiInfo = (options as IOpenApiConfigurationOptions).Info;
        }
Beispiel #6
0
        public static IApplicationBuilder UseServiceApiDocumentation(this IApplicationBuilder app, IApiVersionDescriptionProvider provider, OpenApiSettings openApiSettings)
        {
            app.UseSwagger(options =>
            {
                var prefixPath        = openApiSettings.BaseRelativePath;
                options.RouteTemplate = $"{prefixPath}/{{documentName}}/swagger.json";
            });
            app.UseSwaggerUI(options =>
            {
                var prefixPath = openApiSettings.BaseRelativePath;
                foreach (var description in provider.ApiVersionDescriptions)
                {
                    options.SwaggerEndpoint($"/{prefixPath}/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
                }

                options.RoutePrefix = openApiSettings.BaseRelativePath;
            });

            return(app);
        }
Beispiel #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="OpenApiTriggerFunctionProvider"/> class.
 /// </summary>
 public OpenApiTriggerFunctionProvider(OpenApiSettings settings)
 {
     this._settings = settings ?? throw new ArgumentNullException(nameof(settings));
     this._bindings = this.SetupOpenApiHttpBindings();
 }
 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IApiVersionDescriptionProvider versionInfo, OpenApiSettings openApiSettings)
 {
     app
     .UseDeveloperExceptionPageInDevelopment(env)
     .UseHttpsRedirection()
     .UseOpenApi(versionInfo, openApiSettings)
     .UseRouting()
     .UseAuthorization()
     .UseEndpoints(endpoints => endpoints.MapControllers());
 }
        public static IApplicationBuilder UseOpenApi(this IApplicationBuilder app,
                                                     IApiVersionDescriptionProvider versionProvider, OpenApiSettings settings)
        {
            Guard.IsNotNull(versionProvider, nameof(versionProvider));
            Guard.IsNotNull(settings, nameof(settings));

            app.UseSwagger();

            if (settings.IsUserInterfaceEnabled)
            {
                app.UseSwaggerUI(options =>
                {
                    // build a swagger endpoint for each discovered API version
                    foreach (var description in versionProvider.ApiVersionDescriptions)
                    {
                        options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json",
                                                $"{ApiName} {description.GroupName}");
                    }
                });
            }
            return(app);
        }
        private static OpenApiInfo CreateInfoForApiVersion(ApiVersionDescription description, OpenApiSettings settings)
        {
            var contact = new OpenApiContact
            {
                Name  = (string.IsNullOrWhiteSpace(settings.Contact?.Name))?null: settings.Contact.Name,
                Email = (string.IsNullOrWhiteSpace(settings.Contact?.Email))?null:settings.Contact.Email,
                Url   = (string.IsNullOrWhiteSpace(settings.Contact?.Url)) ? null : new Uri(settings.Contact.Url)
            };
            var license = new OpenApiLicense
            {
                Name = (string.IsNullOrWhiteSpace(settings.License?.Name) ? null : settings.License.Name),
                Url  = (string.IsNullOrWhiteSpace(settings.License?.Url)) ? null : new Uri(settings.License.Url)
            };
            var apiDescription = (string.IsNullOrWhiteSpace(settings.ServiceDescription))
                ? ApiName
                : settings.ServiceDescription;

            return(new OpenApiInfo()
            {
                Title = $"{ApiName}",
                Version = description.ApiVersion.ToString(),
                Description = (description.IsDeprecated)
                            ? $"{apiDescription} This API version has been deprecated."
                            : apiDescription,
                Contact = contact,
                License = license,
                TermsOfService = (string.IsNullOrWhiteSpace(settings.TermsOfServiceUrl))?null:new Uri(settings.TermsOfServiceUrl)
            });
        }
 public static IServiceCollection AddOpenApi(this IServiceCollection services, OpenApiSettings settings)
 {
     Guard.IsNotNull(settings, nameof(settings));
     return(services.AddSwaggerGen(options =>
     {
         var provider = services.BuildServiceProvider().GetRequiredService <IApiVersionDescriptionProvider>();
         foreach (var description in provider.ApiVersionDescriptions)
         {
             options.SwaggerDoc(description.GroupName, CreateInfoForApiVersion(description, settings));
         }
     }));
 }