Beispiel #1
0
        /// <summary>
        /// Calls <see cref="SwaggerDocsConfig.DescribeAllEnumsAsStrings(bool)"/>
        /// | Make it compatible with owin branching
        /// | Ignores CancellationToken parameter type
        /// </summary>
        public static SwaggerDocsConfig ApplyDefaultApiConfig(this SwaggerDocsConfig doc, HttpConfiguration webApiConfig)
        {
            doc.DescribeAllEnumsAsStrings();
            doc.RootUrl(req => new Uri(req.RequestUri, req.GetOwinContext().Request.PathBase.Value).ToString());
            doc.OperationFilter <OpenApiIgnoreParameterTypeOperationFilter <CancellationToken> >();
            AppEnvironment appEnv = (AppEnvironment)webApiConfig.DependencyResolver.GetService(typeof(AppEnvironment));

            doc.OperationFilter(() => new DefaultAuthorizationOperationFilter {
                AppEnvironment = appEnv
            });
            doc.OperationFilter <SwaggerDefaultValuesOperationFilter>();
            doc.OperationFilter <ExamplesOperationFilter>();
            doc.OperationFilter <DescriptionOperationFilter>();
            doc.SchemaId(type => $"{type.FullName}, {type.Assembly.GetName().Name}");

            doc.OAuth2("oauth2")
            .Flow("password")
            .TokenUrl($"{appEnv.GetSsoUrl()}/connect/token")
            .Scopes(scopes =>
            {
                if (!appEnv.Security.Scopes.SequenceEqual(new[] { "openid", "profile", "user_info" }))
                {
                    foreach (string scope in appEnv.Security.Scopes)
                    {
                        scopes.Add(scope, scope);
                    }
                }
            });

            return(doc);
        }
Beispiel #2
0
        /// <summary>
        /// Calls <see cref="SwaggerDocsConfig.DescribeAllEnumsAsStrings(bool)"/>
        /// | Make it compatible with owin branching
        /// | Ignores CancellationToken parameter type
        /// </summary>
        public static SwaggerDocsConfig ApplyDefaultApiConfig(this SwaggerDocsConfig doc, HttpConfiguration webApiConfig)
        {
            doc.DescribeAllEnumsAsStrings();
            doc.RootUrl(req => new Uri(req.RequestUri, req.GetOwinContext().Request.PathBase.Value).ToString());
            doc.OperationFilter <OpenApiIgnoreParameterTypeOperationFilter <CancellationToken> >();
            doc.OperationFilter <DefaultAuthorizationOperationFilter>();

            AppEnvironment appEnv = DefaultAppEnvironmentProvider.Current.GetActiveAppEnvironment();

            doc.OAuth2("oauth2")
            .Flow("password")
            .TokenUrl($"{appEnv.GetSsoUrl()}/connect/token")
            .Scopes(scopes =>
            {
                if (!appEnv.Security.Scopes.SequenceEqual(new[] { "openid", "profile", "user_info" }))
                {
                    foreach (string scope in appEnv.Security.Scopes)
                    {
                        scopes.Add(scope, scope);
                    }
                }
            });

            return(doc);
        }
Beispiel #3
0
        public static OAuth2SchemeBuilder AppServiceAuthentication(this SwaggerDocsConfig config, Uri siteUri, string authProvider)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            if (siteUri == null)
            {
                throw new ArgumentNullException("siteUri");
            }

            if (authProvider == null)
            {
                throw new ArgumentNullException("authProvider");
            }

            config.OperationFilter(() => new MobileAppAuthenticationFilter(authProvider));

            Uri loginUri = new Uri(siteUri, new Uri(".auth/login/" + authProvider, UriKind.Relative));

            return(config.OAuth2(authProvider)
                   .Description("OAuth2 Implicit Grant")
                   .Flow("implicit")
                   .AuthorizationUrl(loginUri.ToString()));
        }
Beispiel #4
0
        /// <summary>
        /// Calls <see cref="SwaggerDocsConfig.DescribeAllEnumsAsStrings(bool)"/>
        /// | Make it compatible with owin branching
        /// | Ignores CancellationToken parameter type
        /// </summary>
        public static SwaggerDocsConfig ApplyDefaultApiConfig(this SwaggerDocsConfig doc, HttpConfiguration webApiConfig)
        {
            doc.DescribeAllEnumsAsStrings();
            doc.RootUrl(req => new Uri(req.RequestUri, req.GetOwinContext().Request.PathBase.Value).ToString());
            doc.OperationFilter <OpenApiIgnoreParameterTypeOperationFilter <CancellationToken> >();

            return(doc);
        }
Beispiel #5
0
 public void Apply(Swashbuckle.Application.SwaggerDocsConfig c)
 {
     c.ApiKey(Key)
     .Name(Name)
     .Description(Description)
     .In(In);
     c.DocumentFilter(() => this);
     c.OperationFilter(() => this);
 }
Beispiel #6
0
        /// <summary>
        /// Calls <see cref="OpenApiExtensions.ApplyDefaultODataConfig(SwaggerDocsConfig, HttpConfiguration)"/>
        /// | Ignores ODataQueryOptions parameter type
        /// | Uses <see cref="ODataSwaggerProvider"/>
        /// </summary>
        public static SwaggerDocsConfig ApplyDefaultODataConfig(this SwaggerDocsConfig doc, HttpConfiguration webApiConfig)
        {
            doc.ApplyDefaultApiConfig(webApiConfig);
            doc.OperationFilter <OpenApiIgnoreParameterTypeOperationFilter <ODataQueryOptions> >();
            doc.CustomProvider(defaultProvider => new ODataSwaggerProvider(defaultProvider, doc, webApiConfig).Configure(odataConfig =>
            {
                odataConfig.EnableSwaggerRequestCaching();
                odataConfig.IncludeNavigationProperties();
                odataConfig.SetAssembliesResolver((System.Web.Http.Dispatcher.IAssembliesResolver)webApiConfig.DependencyResolver.GetService(typeof(System.Web.Http.Dispatcher.IAssembliesResolver)));
            }));

            return(doc);
        }
Beispiel #7
0
        /// <summary>
        /// Calls <see cref="OpenApiExtensions.ApplyDefaultODataConfig(SwaggerDocsConfig, HttpConfiguration)"/>
        /// | Ignores ODataQueryOptions parameter type
        /// | Uses <see cref="ODataSwaggerProvider"/>
        /// </summary>
        public static SwaggerDocsConfig ApplyDefaultODataConfig(this SwaggerDocsConfig doc, HttpConfiguration webApiConfig)
        {
            doc.ApplyDefaultApiConfig(webApiConfig);
            doc.OperationFilter <OpenApiIgnoreParameterTypeOperationFilter <ODataQueryOptions> >();
            doc.CustomProvider(defaultProvider => new ODataSwaggerProvider(defaultProvider, doc, webApiConfig).Configure(odataConfig =>
            {
                odataConfig.EnableSwaggerRequestCaching();
                odataConfig.IncludeNavigationProperties();
                odataConfig.SetAssembliesResolver((System.Web.Http.Dispatcher.IAssembliesResolver)webApiConfig.DependencyResolver.GetService(typeof(System.Web.Http.Dispatcher.IAssembliesResolver)));
            }));

            doc.SchemaId(type => type.AssemblyQualifiedName);
            doc.GroupActionsBy(apiDesc => $"[{((ODataRoute)apiDesc.Route).RoutePrefix}] {apiDesc.ActionDescriptor.ControllerDescriptor.ControllerName}");

            return(doc);
        }
        /// <summary>
        /// Calls <see cref="OpenApiExtensions.ApplyDefaultODataConfig(SwaggerDocsConfig, HttpConfiguration)"/>
        /// | Ignores ODataQueryOptions parameter type
        /// | Uses <see cref="ODataSwaggerProvider"/>
        /// </summary>
        public static SwaggerDocsConfig ApplyDefaultODataConfig(this SwaggerDocsConfig doc, HttpConfiguration webApiConfig)
        {
            if (doc == null)
                throw new ArgumentNullException(nameof(doc));

            if (webApiConfig == null)
                throw new ArgumentNullException(nameof(webApiConfig));

            doc.DocumentFilter<RemoveDefaultODataNamespaceFromSwaggerDocumentFilter>();
            doc.ApplyDefaultApiConfig(webApiConfig);
            doc.OperationFilter<OpenApiIgnoreParameterTypeOperationFilter<ODataQueryOptions>>();
            doc.CustomProvider(defaultProvider => new ODataSwaggerProvider(defaultProvider, doc, webApiConfig).Configure(odataConfig =>
            {
                odataConfig.EnableSwaggerRequestCaching();
                odataConfig.IncludeNavigationProperties();
                odataConfig.SetAssembliesResolver((System.Web.Http.Dispatcher.IAssembliesResolver)webApiConfig.DependencyResolver.GetService(typeof(System.Web.Http.Dispatcher.IAssembliesResolver)));
            }));

            doc.GroupActionsBy(apiDesc => $"[{((ODataRoute)apiDesc.Route).RoutePrefix}] {apiDesc.ActionDescriptor.ControllerDescriptor.ControllerName}");

            return doc;
        }
Beispiel #9
0
        public static SwaggerDocsConfig VersioningSwaggerDoc(this SwaggerDocsConfig config,
                                                             VersionedApiExplorer apiExplorer, string docTitleFormat, string versionParamName)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            if (apiExplorer == null)
            {
                throw new ArgumentNullException(nameof(apiExplorer));
            }

            if (string.IsNullOrWhiteSpace(docTitleFormat))
            {
                throw new ArgumentNullException(nameof(docTitleFormat));
            }

            if (string.IsNullOrWhiteSpace(versionParamName))
            {
                throw new ArgumentNullException(nameof(versionParamName));
            }

            config.MultipleApiVersions(
                (apiDescription, version) => apiDescription.GetGroupName() == version,
                info =>
            {
                foreach (var group in apiExplorer.ApiDescriptions)
                {
                    info.Version(group.Name, string.Format(docTitleFormat, group.ApiVersion));
                }
            });

            config.OperationFilter(() => new RemoveVersionParameters(versionParamName));
            config.DocumentFilter(() => new SetVersionInPaths(versionParamName));

            return(config);
        }