using System.Web.Http; using Kreta.Core.JsonConverter; using Kreta.Core.ModelBinder; using Kreta.Ellenorzo.Web.FilterAttributes; using Kreta.Ellenorzo.WebApi.FilterAttributes; using Kreta.Web.Logging.Interceptors; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace Kreta.Ellenorzo.WebApi { /// /// Web Api configuration class /// public static class WebApiConfig { /// /// Web Api configuration entry /// /// HttpConfiguration for configuring web Api [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId = "0")] public static void Register(HttpConfiguration config) { System.Net.Http.Formatting.JsonMediaTypeFormatter 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()); #pragma warning disable S3900 // Arguments of public methods should be validated against null config.Filters.Add(new DefaultExceptionFilterAttribute()); #pragma warning restore S3900 // Arguments of public methods should be validated against null config.Filters.Add(new ApiKeyAuthorizationAttribute()); config.Filters.Add(new IdpAuthorizeAttribute()); config.MapHttpAttributeRoutes(); config.MessageHandlers.Add(new ApiLoggingHandler()); config.BindParameter(typeof(string), new StringTrimModelBinder()); } } }