private static void AddInternalDocumentFilters(SwaggerDocsConfig swaggerDocsConfig)
        {
            Contract.Requires(swaggerDocsConfig != null);

            swaggerDocsConfig.DocumentFilter(() => new LimitSchemaGraphToTopLevelEntity());
            swaggerDocsConfig.DocumentFilter(() => new EnsureUniqueOperationIdsFilter());
        }
        public static SwaggerDocsConfig ConfigureForNodaTime(this SwaggerDocsConfig config, IDateTimeZoneProvider timeZoneProvider)
        {
            var timeZone       = timeZoneProvider[America.NewYork];
            var instant        = SystemClock.Instance.GetCurrentInstant();
            var zonedDateTime  = instant.InZone(timeZone);
            var localDate      = zonedDateTime.Date;
            var localTime      = zonedDateTime.TimeOfDay;
            var localDateTime  = zonedDateTime.LocalDateTime;
            var offsetDateTime = zonedDateTime.ToOffsetDateTime();
            var duration       = Duration.FromMilliseconds(182713784L);
            var interval       = new Interval(instant, instant + duration);
            var offset         = timeZone.GetUtcOffset(instant);
            var period         = Period.Between(localDateTime, localDateTime.PlusTicks(duration.BclCompatibleTicks));

            config.MapStruct(instant);
            config.MapStruct(localDate);
            config.MapStruct(localTime);
            config.MapStruct(localDateTime);
            config.MapStruct(offsetDateTime);
            config.MapStruct(zonedDateTime);
            config.MapStruct(interval);
            config.MapStruct(offset);
            config.MapClass(period);
            config.MapStruct(duration);
            config.MapClass(timeZone);

            return(config);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataSwaggerProvider" /> class.
 /// Use this constructor for self-hosted scenarios.
 /// </summary>
 /// <param name="defaultProvider">The default provider.</param>
 /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
 /// <param name="httpConfig">The HttpConfiguration that contains the OData Edm Model.</param>
 public ODataSwaggerProvider(ISwaggerProvider defaultProvider, SwaggerDocsConfig swaggerDocsConfig, HttpConfiguration httpConfig)
     : this(defaultProvider, DefaultCompositionRoot.GetSwaggerProviderOptions(swaggerDocsConfig), DefaultCompositionRoot.GetApiVersions(swaggerDocsConfig), DefaultCompositionRoot.GetApiExplorer(httpConfig), httpConfig)
 {
     Contract.Requires(defaultProvider != null);
     Contract.Requires(swaggerDocsConfig != null);
     Contract.Requires(httpConfig != null);
 }
        private static void MapStruct <T>(this SwaggerDocsConfig config, T example) where T : struct
        {
            var factory = GetSchema(example);

            config.MapType <T>(factory);
            config.MapType <T?>(factory);
        }
        public static SwaggerProviderOptions GetSwaggerProviderOptions(SwaggerDocsConfig swaggerDocsConfig)
        {
            Contract.Requires(swaggerDocsConfig != null);

            AddGlobalDocumentFilters(swaggerDocsConfig);

            return new SwaggerProviderOptions(
                swaggerDocsConfig.GetFieldValue<Func<ApiDescription, string, bool>>("_versionSupportResolver"),
                swaggerDocsConfig.GetFieldValue<IEnumerable<string>>("_schemes"),
                swaggerDocsConfig.GetSecurityDefinitions(),
                swaggerDocsConfig.GetFieldValue<bool>("_ignoreObsoleteActions"),
                swaggerDocsConfig.GetFieldValue<Func<ApiDescription, string>>("_groupingKeySelector"),
                swaggerDocsConfig.GetFieldValue<IComparer<string>>("_groupingKeyComparer"),
                GetODataCustomSchemaMappings(swaggerDocsConfig),
                swaggerDocsConfig.GetFieldValue<IList<Func<ISchemaFilter>>>("_schemaFilters", true).Select(factory => factory()),
                swaggerDocsConfig.GetFieldValue<IList<Func<IModelFilter>>>("_modelFilters", true).Select(factory => factory()),
                swaggerDocsConfig.GetFieldValue<bool>("_ignoreObsoleteProperties"),
                swaggerDocsConfig.GetFieldValue<Func<Type, string>>("_schemaIdSelector"),
                swaggerDocsConfig.GetFieldValue<bool>("_describeAllEnumsAsStrings"),
                swaggerDocsConfig.GetFieldValue<bool>("_describeStringEnumsInCamelCase"),
                GetODataOperationFilters(swaggerDocsConfig),
                GetODataDocumentFilters(swaggerDocsConfig),
                swaggerDocsConfig.GetFieldValue<Func<IEnumerable<ApiDescription>, ApiDescription>>("_conflictingActionsResolver")
            );
        }
Ejemplo n.º 6
0
        public static void ApplyAutoRestFilters(this SwaggerDocsConfig config, SwaggerDocsConfigExtensionsConfiguration extensionsConfiguration, object codeGenerationSettings = null)
        {
            if (codeGenerationSettings != null)
            {
                config.DocumentFilter(() => new CodeGenerationSettingsDocumentFilter(codeGenerationSettings));
            }
            if (extensionsConfiguration.ApplyEnumTypeSchemaFilter)
            {
                config.SchemaFilter(() => new EnumTypeSchemaFilter(extensionsConfiguration.EnumTypeModelAsString));
            }
            if (extensionsConfiguration.ApplyTypeFormatSchemaFilter)
            {
                config.SchemaFilter <TypeFormatSchemaFilter>();
            }
            if (extensionsConfiguration.ApplyNullableTypeSchemaFilter)
            {
                config.SchemaFilter <NullableTypeSchemaFilter>();
                if (extensionsConfiguration.ApplyNonNullableAsRequiredSchemaFilter)
                {
                    config.SchemaFilter <NonNullableAsRequiredSchemaFilter>();
                }
            }

            config.ApplyFiltersToAllSchemas();
        }
Ejemplo n.º 7
0
        public static SwaggerEnabledConfiguration EnableSwagger(
            this HttpConfiguration httpConfig,
            string routeTemplate,
            Action <SwaggerDocsConfig> configure = null)
        {
            var config = new SwaggerDocsConfig();

            if (configure != null)
            {
                configure(config);
            }

            httpConfig.Routes.MapHttpRoute(
                name: "swagger_docs",
                routeTemplate: routeTemplate,
                defaults: null,
                constraints: new { apiVersion = @".+" },
                handler: new SwaggerDocsHandler(config)
                );

            return(new SwaggerEnabledConfiguration(
                       httpConfig,
                       config.GetRootUrl,
                       config.GetApiVersions().Select(version => routeTemplate.Replace("{apiVersion}", version))));
        }
        public static SwaggerProviderOptions GetSwaggerProviderOptions(SwaggerDocsConfig swaggerDocsConfig)
        {
            Contract.Requires(swaggerDocsConfig != null);

            AddInternalDocumentFilters(swaggerDocsConfig);
            AddInternalOperationFilters(swaggerDocsConfig);

            return(new SwaggerProviderOptions(
                       swaggerDocsConfig.GetFieldValue <Func <ApiDescription, string, bool> >("_versionSupportResolver"),
                       swaggerDocsConfig.GetFieldValue <IEnumerable <string> >("_schemes"),
                       swaggerDocsConfig.GetSecurityDefinitions(),
                       swaggerDocsConfig.GetFieldValue <bool>("_ignoreObsoleteActions"),
                       swaggerDocsConfig.GetFieldValue <Func <ApiDescription, string> >("_groupingKeySelector"),
                       swaggerDocsConfig.GetFieldValue <IComparer <string> >("_groupingKeyComparer"),
                       swaggerDocsConfig.GetFieldValue <IDictionary <Type, Func <Schema> > >("_customSchemaMappings"),
                       swaggerDocsConfig.GetFieldValue <IList <Func <ISchemaFilter> > >("_schemaFilters", true).Select(factory => factory()),
                       swaggerDocsConfig.GetFieldValue <IList <Func <IModelFilter> > >("_modelFilters", true).Select(factory => factory()),
                       swaggerDocsConfig.GetFieldValue <bool>("_ignoreObsoleteProperties"),
                       swaggerDocsConfig.GetFieldValue <Func <Type, string> >("_schemaIdSelector"),
                       swaggerDocsConfig.GetFieldValue <bool>("_describeAllEnumsAsStrings"),
                       swaggerDocsConfig.GetFieldValue <bool>("_describeStringEnumsInCamelCase"),
                       swaggerDocsConfig.GetFieldValue <IList <Func <IOperationFilter> > >("_operationFilters", true).Select(factory => factory()),
                       swaggerDocsConfig.GetFieldValue <IList <Func <IDocumentFilter> > >("_documentFilters", true).Select(factory => factory()),
                       swaggerDocsConfig.GetFieldValue <Func <IEnumerable <ApiDescription>, ApiDescription> >("_conflictingActionsResolver")
                       ));
        }
Ejemplo n.º 9
0
        private SwaggerDocsHandler Handler(Action <SwaggerDocsConfig> configure = null)
        {
            var swaggerDocsConfig = new SwaggerDocsConfig();

            configure?.Invoke(swaggerDocsConfig);
            return(new SwaggerDocsHandler(swaggerDocsConfig));
        }
Ejemplo n.º 10
0
        public static T GetFieldValue <T>(this SwaggerDocsConfig swaggerDocsConfig, string fieldName)
        {
            Contract.Requires(swaggerDocsConfig != null);
            Contract.Requires(!string.IsNullOrWhiteSpace(fieldName));

            return(swaggerDocsConfig.GetInstanceField <T>(fieldName));
        }
Ejemplo n.º 11
0
        private static void SetXmlCommentsPath(SwaggerDocsConfig config)
        {
            string strBaseDirectory = System.AppDomain.CurrentDomain.BaseDirectory;
            string strWebXMLPath    = string.Format(@"{0}\App_Data\React_Jwt.XML", strBaseDirectory);

            config.IncludeXmlComments(strWebXMLPath);
        }
Ejemplo n.º 12
0
        private static void ApplyCommonSwaggerConfiguration(SwaggerDocsConfig c, IUnityContainer container, string cacheKey, string[] xmlCommentsFilePaths)
        {
            var cacheManager = container.Resolve <ICacheManager <object> >();

            c.CustomProvider(defaultProvider => new CachingSwaggerProvider(defaultProvider, cacheManager, cacheKey));
            c.MapType <object>(() => new Schema {
                type = "object"
            });
            c.IgnoreObsoleteProperties();
            c.DescribeAllEnumsAsStrings();
            c.OperationFilter(() => new OptionalParametersFilter());
            c.OperationFilter(() => new FileResponseTypeFilter());
            c.OperationFilter(() => new FileUploadOperationFilter());
            c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
            c.RootUrl(message => new Uri(ComputeHostAsSeenByOriginalClient(message), message.GetRequestContext().VirtualPathRoot).ToString());
            c.PrettyPrint();
            c.ApiKey("apiKey")
            .Description("API Key Authentication")
            .Name("api_key")
            .In("header");

            foreach (var path in xmlCommentsFilePaths)
            {
                c.IncludeXmlComments(path);
            }
        }
Ejemplo n.º 13
0
        private static void ApplyCommonSwaggerConfiguration(SwaggerDocsConfig c, IUnityContainer container, string cacheKey, string[] xmlCommentsFilePaths)
        {
            var cacheManager = container.Resolve <ICacheManager <object> >();

            c.CustomProvider(defaultProvider => new CachingSwaggerProvider(defaultProvider, cacheManager, cacheKey));
            c.MapType <object>(() => new Schema {
                type = "object"
            });
            c.IgnoreObsoleteProperties();
            c.DescribeAllEnumsAsStrings();
            c.OperationFilter(() => new OptionalParametersFilter());
            c.OperationFilter(() => new FileResponseTypeFilter());
            c.OperationFilter(() => new FileUploadOperationFilter());
            c.OperationFilter(() => new AssignOAuth2SecurityOperationFilter());
            c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
            c.RootUrl(message => new Uri(ComputeHostAsSeenByOriginalClient(message), message.GetRequestContext().VirtualPathRoot).ToString());
            c.PrettyPrint();
            c.OAuth2("OAuth2")
            .Description("OAuth2 Resource Owner Password Grant flow")
            .Flow("password")
            .TokenUrl(HttpRuntime.AppDomainAppVirtualPath?.TrimEnd('/') + "/token");

            foreach (var path in xmlCommentsFilePaths)
            {
                c.IncludeXmlComments(path);
            }
        }
Ejemplo n.º 14
0
        private void SetVersionAndComments(SwaggerDocsConfig config, string version, string title)
        {
            string str = string.Empty;

            try
            {
                config.SingleApiVersion(version, title);
                char[] trimChars = new char[] { '\\' };
                str = AppDomain.CurrentDomain.BaseDirectory.Trim(trimChars);
                string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                if (directoryName != null)
                {
                    char[] chArray2 = new char[] { '\\' };
                    if (directoryName.Trim(chArray2) != str)
                    {
                        str = Path.Combine(str, "bin");
                    }
                }
            }
            catch { }
            if (!string.IsNullOrEmpty(str))
            {
                foreach (string str3 in Directory.EnumerateFiles(str, "*.XML").ToArray <string>())
                {
                    config.IncludeXmlComments(str3);
                }
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataSwaggerProvider" /> class.
 /// Use this constructor for self-hosted scenarios.
 /// </summary>
 /// <param name="defaultProvider">The default provider.</param>
 /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
 /// <param name="httpConfig">The HttpConfiguration that contains the OData Edm Model.</param>
 public ODataSwaggerProvider(ISwaggerProvider defaultProvider, SwaggerDocsConfig swaggerDocsConfig, HttpConfiguration httpConfig)
     : this(defaultProvider, DefaultCompositionRoot.GetSwaggerProviderOptions(swaggerDocsConfig), DefaultCompositionRoot.GetApiVersions(swaggerDocsConfig), DefaultCompositionRoot.GetApiExplorer(httpConfig), httpConfig)
 {
     Contract.Requires(defaultProvider != null);
     Contract.Requires(swaggerDocsConfig != null);
     Contract.Requires(httpConfig != null);
 }
 public void Apply(SwaggerDocsConfig c)
 {
     foreach (var header in headers)
     {
         c.ApiKey(header.Key).Name(header.Name).Description(header.Description).In("header");
     }
     c.OperationFilter(() => this);
 }
Ejemplo n.º 17
0
        public static T GetFieldValue <T>(this SwaggerDocsConfig swaggerDocsConfig, string fieldName, bool ensureNonNull = false)
        {
            Contract.Requires(swaggerDocsConfig != null);
            Contract.Requires(!string.IsNullOrWhiteSpace(fieldName));
            Contract.Ensures(Contract.Result <T>() != null || !ensureNonNull);

            return(swaggerDocsConfig.GetInstanceField <T>(fieldName, ensureNonNull));
        }
        public void It_provides_scheme_host_and_port_from_request_uri()
        {
            var request = GetRequestFixtureFor(HttpMethod.Get, "http://tempuri.org:1234");

            var rootUrl = SwaggerDocsConfig.DefaultRootUrlResolver(request);

            Assert.AreEqual("http://tempuri.org:1234", rootUrl);
        }
        public void It_provides_scheme_and_host_but_omits_default_port_from_request_uri(string requestedUri, string expectedUri)
        {
            var request = GetRequestFixtureFor(HttpMethod.Get, requestedUri);

            var rootUrl = SwaggerDocsConfig.DefaultRootUrlResolver(request);

            Assert.AreEqual(expectedUri, rootUrl);
        }
Ejemplo n.º 20
0
        private static void GetXmlCommentsPath(SwaggerDocsConfig config)
        {
            var commentsFile1 = string.Format(@"{1}BIN\{0}.XML", Assembly.GetExecutingAssembly().GetName().Name, AppDomain.CurrentDomain.BaseDirectory);
            var commentsFile2 = string.Format(@"{1}BIN\Pharos.Logic.OMS.XML", Assembly.GetExecutingAssembly().GetName().Name, AppDomain.CurrentDomain.BaseDirectory);

            config.IncludeXmlComments(commentsFile1);
            config.IncludeXmlComments(commentsFile2);
        }
Ejemplo n.º 21
0
        public static Dictionary <string, SecurityScheme> GetSecurityDefinitions(this SwaggerDocsConfig swaggerDocsConfig)
        {
            var securitySchemeBuilders = swaggerDocsConfig.GetFieldValue <IDictionary <string, SecuritySchemeBuilder> >("_securitySchemeBuilders");

            return(securitySchemeBuilders != null && securitySchemeBuilders.Any()
                ? securitySchemeBuilders.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.InvokeFunction <SecurityScheme>("Build"))
                : new Dictionary <string, SecurityScheme>());
        }
 public SwaggerEnabledConfiguration(HttpConfiguration httpConfig, Func<HttpRequestMessage, string> rootUrlResolver,
     IEnumerable<string> discoveryPaths, SwaggerDocsConfig swaggerDocsConfig)
 {
     _swaggerDocsConfig = swaggerDocsConfig;
     _httpConfig = httpConfig;
     _rootUrlResolver = rootUrlResolver;
     _discoveryPaths = discoveryPaths;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ODataSwaggerProvider" /> class.
        /// Use this constructor for self-hosted scenarios.
        /// </summary>
        /// <param name="defaultProvider">The default provider.</param>
        /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
        /// <param name="httpConfig">The HttpConfiguration that contains the OData Edm Model.</param>
        public ODataSwaggerProvider(ISwaggerProvider defaultProvider, SwaggerDocsConfig swaggerDocsConfig, HttpConfiguration httpConfig)
        {
            Contract.Requires(defaultProvider != null);
            Contract.Requires(swaggerDocsConfig != null);
            Contract.Requires(httpConfig != null);

            _defaultProvider = defaultProvider;
            _config = new ODataSwaggerDocsConfig(swaggerDocsConfig, httpConfig);
        }
Ejemplo n.º 24
0
 private static void EnableSwagger(SwaggerDocsConfig swaggerDocsConfig)
 {
     swaggerDocsConfig.SingleApiVersion(AppSettings.ApiVersion, $"{AppSettings.ApplicationName} {AppSettings.ApiVersion}");
     swaggerDocsConfig.RootUrl(GetRootUrlFromAppConfig);
     swaggerDocsConfig.IncludeXmlComments(GetXmlCommentsPath());
     swaggerDocsConfig.OperationFilter <SwaggerCorrelationIdHeader>();
     swaggerDocsConfig.OperationFilter <FormatXmlCommentProperties>();
     swaggerDocsConfig.OperationFilter <SwaggerAuthorizationHeader>();
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ODataSwaggerProvider" /> class.
        /// Use this constructor for self-hosted scenarios.
        /// </summary>
        /// <param name="defaultProvider">The default provider.</param>
        /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
        /// <param name="httpConfig">The HttpConfiguration that contains the OData Edm Model.</param>
        public ODataSwaggerProvider(ISwaggerProvider defaultProvider, SwaggerDocsConfig swaggerDocsConfig, HttpConfiguration httpConfig)
        {
            Contract.Requires(defaultProvider != null);
            Contract.Requires(swaggerDocsConfig != null);
            Contract.Requires(httpConfig != null);

            _defaultProvider = defaultProvider;
            _config          = new ODataSwaggerDocsConfig(swaggerDocsConfig, httpConfig);
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Adds fluent validation rules to swagger.
        /// </summary>
        /// <param name="config">Swagger options.</param>
        /// <param name="factory">IValidatorFactory. If null then factory gets from <see cref="HttpConfiguration.Services"/></param>
        public static void AddFluentValidationRules(this SwaggerDocsConfig config, IValidatorFactory factory = null)
        {
            var validatorFactory = factory ?? ((FluentValidationModelValidatorProvider)GlobalConfiguration.Configuration.Services.GetServices(typeof(ModelValidatorProvider)).FirstOrDefault(pr => pr is FluentValidationModelValidatorProvider))?.ValidatorFactory;

            if (validatorFactory != null)
            {
                config.SchemaFilter(() => new FluentValidationRules(validatorFactory));
            }
        }
Ejemplo n.º 27
0
        public static void ReleaseTheTRex(this SwaggerDocsConfig config)
        {
            if (config == null)
            {
                return;
            }

            config.SchemaFilter <TRexSchemaFilter>();
            config.OperationFilter <TRexOperationFilter>();
        }
Ejemplo n.º 28
0
        public void EnableSwaggerUi_NullApiKeyScheme()
        {
            var httpConfig = new HttpConfiguration();
            var config     = new SwaggerDocsConfig();

            config.ApiKey("test", "1", "");
            var s = new SwaggerEnabledConfiguration(httpConfig, config, "");

            Assert.DoesNotThrow(() => s.EnableSwaggerUi("test", c => { }));
        }
 public static SwaggerEnabledConfiguration EnableSwagger(this HttpConfiguration httpConfig, string routeName, string routeTemplate, Action<SwaggerDocsConfig> configure = null)
 {
     var config = new SwaggerDocsConfig();
     if (configure != null)
     {
         configure(config);
     }
     httpConfig.Routes.MapHttpRoute(routeName, routeTemplate, null, new { apiVersion = ".+" }, new SwaggerDocsHandler(config));
     return new SwaggerEnabledConfiguration(httpConfig, null, null);
 }
Ejemplo n.º 30
0
        internal ODataSwaggerDocsConfig(SwaggerDocsConfig swaggerDocsConfig, HttpConfiguration httpConfiguration)
        {
            Contract.Requires(httpConfiguration != null);
            Contract.Requires(swaggerDocsConfig != null);

            Configuration                = httpConfiguration;
            _swaggerDocsConfig           = swaggerDocsConfig;
            _includeNavigationProperties = false;
            _documentFilters             = new List <Func <IDocumentFilter> >();
        }
        internal static SwaggerDocsConfig GetDefaultConfigWithTRex()
        {
            SwaggerDocsConfig config = new SwaggerDocsConfig();

            config.SingleApiVersion("v1", "TRexTestApi");
            config.ReleaseTheTRex();
            config.OperationFilter <IncludeParameterNamesInOperationIdFilter>();

            return(config);
        }
Ejemplo n.º 32
0
        public static void ApplyCqlDefaults(this SwaggerDocsConfig c)
        {
            c.OperationFilter <AddAuthorizationHeaderParameterOperationFilter>();
            c.OperationFilter <SupportFlaggedEnums>();
            c.OperationFilter <HideCancellationToken>();

            c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());

            c.DescribeAllEnumsAsStrings();
        }
Ejemplo n.º 33
0
 private static void Configure(SwaggerDocsConfig swaggerConf)
 {
     //todo reflection
     swaggerConf.SingleApiVersion("v1", "My Thai Star Email Service");
     //Add swagger documentation
     foreach (var doc in GetXmlDocumentsForSwagger())
     {
         swaggerConf.IncludeXmlComments(GetXmlCommentsPath(doc));
     }
 }
        public static SwaggerEnabledConfiguration EnableSwagger(this HttpConfiguration httpConfig, string routeName, string routeTemplate, Action <SwaggerDocsConfig> configure = null)
        {
            var config = new SwaggerDocsConfig();

            if (configure != null)
            {
                configure(config);
            }
            httpConfig.Routes.MapHttpRoute(routeName, routeTemplate, null, new { apiVersion = ".+" }, new SwaggerDocsHandler(config));
            return(new SwaggerEnabledConfiguration(httpConfig, null, null));
        }
Ejemplo n.º 35
0
        protected void SetUpHandler(Action <SwaggerDocsConfig> configure = null)
        {
            var swaggerDocsConfig = new SwaggerDocsConfig();

            swaggerDocsConfig.SingleApiVersion("v1", "Test API");
            swaggerDocsConfig.IncludeAllXmlComments(typeof(SwaggerTestBase).Assembly, AppDomain.CurrentDomain.BaseDirectory);

            configure?.Invoke(swaggerDocsConfig);

            Handler = new SwaggerDocsHandler(swaggerDocsConfig);
        }
        public static SwaggerEnabledConfiguration EnableSwagger(this HttpConfiguration httpConfig, string routeTemplate, Action<SwaggerDocsConfig> configure = null)
        {
            var config = new SwaggerDocsConfig();
            if (configure != null) configure(config);

            _cnfg = config;

            httpConfig.Routes.MapHttpRoute(
                name: "swagger_docs",
                routeTemplate: routeTemplate,
                defaults: null,
                constraints: new { apiVersion = @".+" },
                handler: new SwaggerDocsHandler(config)
            );

            return new SwaggerEnabledConfiguration(
                httpConfig,
                config.GetRootUrl,
                config.GetApiVersions().Select(version => routeTemplate.Replace("{apiVersion}", version)), config);
        }
Ejemplo n.º 37
0
        private static void ApplyCommonSwaggerConfiguration(SwaggerDocsConfig c, IUnityContainer container, string cacheKey, string[] xmlCommentsFilePaths)
        {
            var cacheManager = container.Resolve<ICacheManager<object>>();

            c.CustomProvider(defaultProvider => new CachingSwaggerProvider(defaultProvider, cacheManager, cacheKey));
            c.MapType<object>(() => new Schema { type = "object" });
            c.IgnoreObsoleteProperties();
            c.DescribeAllEnumsAsStrings();
            c.OperationFilter(() => new OptionalParametersFilter());
            c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
            c.RootUrl(message => new Uri(message.RequestUri, message.GetRequestContext().VirtualPathRoot).ToString());
            c.PrettyPrint();
            c.ApiKey("apiKey")
                .Description("API Key Authentication")
                .Name("api_key")
                .In("header");

            foreach (var path in xmlCommentsFilePaths)
            {
                c.IncludeXmlComments(path);
            }
        }
 public SwaggerChangeLogHandler(SwaggerDocsConfig config)
 {
     _config = config;
   
 }
 /// <summary>
 /// Gets custom schema mappings that will only be applied to OData operations.
 /// </summary>
 /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
 /// <returns></returns>
 private static IDictionary<Type, Func<Schema>> GetODataCustomSchemaMappings(SwaggerDocsConfig swaggerDocsConfig)
 {
     var customSchemaMappings = swaggerDocsConfig.GetFieldValue<IDictionary<Type, Func<Schema>>>("_customSchemaMappings", true);
     customSchemaMappings[typeof(decimal)] = () => new Schema { type = "number", format = "decimal" };
     return customSchemaMappings;
 }
        /// <summary>
        /// Gets the API versions. I'd rather not use reflection because the implementation may change, but can't find a better way.
        /// </summary>
        /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
        /// <returns></returns>
        public static IDictionary<string, Info> GetApiVersions(SwaggerDocsConfig swaggerDocsConfig)
        {
            Contract.Requires(swaggerDocsConfig != null);

            return swaggerDocsConfig.GetFieldValue<VersionInfoBuilder>("_versionInfoBuilder", true).Build();
        }
		public static void SetupSwaggerConfig(SwaggerDocsConfig swaggerDocsConfig)
		{
			Contract.Requires(swaggerDocsConfig != null);

			swaggerDocsConfig.SingleApiVersion("v1", "magic_application_name_magic");
		}
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataSwaggerProvider" /> class.
 /// </summary>
 /// <param name="defaultProvider">The default provider.</param>
 /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
 public ODataSwaggerProvider(ISwaggerProvider defaultProvider, SwaggerDocsConfig swaggerDocsConfig) 
     : this(defaultProvider, swaggerDocsConfig, GlobalConfiguration.Configuration)
 {
     Contract.Requires(defaultProvider != null);
     Contract.Requires(swaggerDocsConfig != null);
 }
Ejemplo n.º 43
0
 public SwaggerDocsHandler(SwaggerDocsConfig config)
 {
     _config = config;
 }
Ejemplo n.º 44
0
        public static void SetupSwaggerConfig(SwaggerDocsConfig swaggerDocsConfig)
        {
            Contract.Requires(swaggerDocsConfig != null);

            swaggerDocsConfig.SingleApiVersion("v1", "Api_Learn");
        }
 public SwaggerPostmanHandler(SwaggerDocsConfig config)
 {
     _config = config;
 }
        /// <summary>
        /// Adds document filters that will be applied to SwaggerDocuments built from WebApi and OData ApiExplorers.
        /// </summary>
        /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
        private static void AddGlobalDocumentFilters(SwaggerDocsConfig swaggerDocsConfig)
        {
            Contract.Requires(swaggerDocsConfig != null);

            swaggerDocsConfig.DocumentFilter(() => new EnsureUniqueOperationIdsFilter());
        }
Ejemplo n.º 47
0
 private void ConfigureSwaggerDocs(SwaggerDocsConfig swaggerDocsConfig)
 {
     swaggerDocsConfig.SingleApiVersion("v1", this.GetType().Assembly.GetName().Name);
     swaggerDocsConfig.UseFullTypeNameInSchemaIds();
 }
 /// <summary>
 /// Gets document filters that will only be applied to the SwaggerDocument built from the OData ApiExplorer.
 /// </summary>
 /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
 private static IEnumerable<IDocumentFilter> GetODataDocumentFilters(SwaggerDocsConfig swaggerDocsConfig)
 {
     return swaggerDocsConfig.GetFieldValue<IList<Func<IDocumentFilter>>>("_documentFilters", true)
         .Select(factory => factory())
         .Concat(new LimitSchemaGraphToTopLevelEntity());
 }
 /// <summary>
 /// Gets operation filters that will only be applied to OData operations.
 /// </summary>
 /// <param name="swaggerDocsConfig">The swagger docs configuration.</param>
 private static IEnumerable<IOperationFilter> GetODataOperationFilters(SwaggerDocsConfig swaggerDocsConfig)
 {
     return swaggerDocsConfig.GetFieldValue<IList<Func<IOperationFilter>>>("_operationFilters", true)
         .Select(factory => factory())
         .Concat(new EnableQueryFilter());
 }