using System.Web.Http; using Kreta.Core.JsonConverter; using Kreta.Core.ModelBinder; using Kreta.Naplo.Configuration; using Kreta.Naplo.WebApi.FilterAttributes; using Kreta.Web.Logging.Interceptors; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace Kreta.Naplo.WebApi { /// /// Web Api configuration class /// public static class WebApiConfig { /// /// Web Api configuration entry /// /// HttpConfiguration for configuring web Api public static void Register(HttpConfiguration config) { var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; formatter.SerializerSettings = new JsonSerializerSettings { Formatting = Formatting.Indented, TypeNameHandling = TypeNameHandling.None }; formatter.SerializerSettings.Converters.Add(new StringTrimConverter()); formatter.SerializerSettings.Converters.Add(new StringEnumConverter()); config.Filters.Add(new DefaultExceptionFilterAttribute()); config.Filters.Add(new ApiKeyAuthorizationAttribute()); config.Filters.Add(new IdpAuthorizeAttribute()); config.MapHttpAttributeRoutes(); config.MessageHandlers.Add(new ApiLoggingHandler()); var corsConfiguration = CorsConfiguration.Instance; if (corsConfiguration.IsEnabled) { var cors = new WildcardOriginCorsPolicy(corsConfiguration.Urls, corsConfiguration.Headers, corsConfiguration.Methods) { SupportsCredentials = corsConfiguration.SupportsCredentials }; config.EnableCors(cors); } config.BindParameter(typeof(string), new StringTrimModelBinder()); } } }