public void AddsTextHtmlToSupportedMediaTypes() { // Arrange var serializerSettings = new JsonSerializerSettings(); // Act var formatter = new BrowserJsonFormatter(serializerSettings); // Assert Assert.Contains(new MediaTypeHeaderValue("text/html"), formatter.SupportedMediaTypes); }
public void SetsSerializerSettings() { // Arrange var serializerSettings = new JsonSerializerSettings(); // Act var formatter = new BrowserJsonFormatter(serializerSettings); // Assert Assert.Same(serializerSettings, formatter.SerializerSettings); }
public void ReturnsBrowserJsonFormatter() { // Arrange var serializerSettings = new JsonSerializerSettings(); // Act var formatter = new BrowserJsonFormatter(serializerSettings); // Assert Assert.IsAssignableFrom <BrowserJsonFormatter>(formatter); }
public static void Register(HttpConfiguration config) { var cors = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(cors); config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); config.MapHttpAttributeRoutes(); var formatter = new BrowserJsonFormatter(); formatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(); config.Formatters.Add(formatter); }
public void SetsContentTypeOnHeadersToApplicationJson() { // Arrange var serializerSettings = new JsonSerializerSettings(); var formatter = new BrowserJsonFormatter(serializerSettings); var type = typeof(object); var content = new StringContent(""); var headers = content.Headers; MediaTypeHeaderValue mediaType = null; // Act formatter.SetDefaultContentHeaders(type, headers, mediaType); // Assert Assert.Equal(new MediaTypeHeaderValue("application/json"), headers.ContentType); }
public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); var jsonFormmatter = new BrowserJsonFormatter(); // To avoid the error: "Self referencing loop detected - Getting back data from WebApi to the browser". jsonFormmatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; config.Formatters.Add(jsonFormmatter); }
public void Register(HttpConfiguration config) { FrameworkEnvironment.Configure(); var container = FrameworkEnvironment.Instance.Container; config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); var json = config.Formatters.JsonFormatter; json.UseDataContractJsonSerializer = false; if (json != null) { config.Formatters.Remove(json); } json = new BrowserJsonFormatter(); config.Formatters.Insert(0, new JsonNewtonFormatter()); config.Formatters.Insert(0, json); json = config.Formatters.JsonFormatter; // Web API routes config.MapHttpAttributeRoutes(); MapRoutes(config); // Web API configuration and services RegisterDependencyContainer(config, container); config.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); //config.Filters.Add(new LoggingFilter(config)); config.Filters.Add(new GlobalExceptionFilter(config)); config.Filters.Add(new ValidateModelFilter()); Container = container; }
/// <summary>Registers the specified configuration.</summary> /// <param name="config">The configuration.</param> /// <param name="unityContainer">The unity container.</param> /// <param name="unitOfWork">The unit of work.</param> public static void Register(HttpConfiguration config, IUnityContainer unityContainer, IUnitOfWork unitOfWork) { var applicationSettingRepository = unitOfWork.GetTypedRepository <IApplicationSettingRepository>(); etagCacheServerDuration = applicationSettingRepository.GetOrCreateByName <int>("EtagCacheServerDuration"); etagCacheClientDuration = applicationSettingRepository.GetOrCreateByName <int>("EtagCacheClientDuration"); #if !DEBUG // Configure Web API to use only bearer token authentication. // Only suppress if not in debug mode, this allows browsing the WebAPI if in debug mode. config.SuppressDefaultHostAuthentication(); #endif config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); config.Filters.Add(new ModelStateValidationFilter()); config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new SelectSupportConverter()); var browserFormatter = new BrowserJsonFormatter { SerializerSettings = { ContractResolver = new CamelCasePropertyNamesContractResolver() } }; browserFormatter.SerializerSettings.Converters.Add(new SelectSupportConverter()); config.Formatters.Add(browserFormatter); config.DependencyResolver = new UnityDependencyResolver(unityContainer); // Changing this setting requires a website restart if (applicationSettingRepository.GetOrCreateByName <bool>("Caching_EnableEtags")) { var etagStore = new SqlServerEntityTagStore(ConfigurationManager.ConnectionStrings["InSite.Commerce"].ConnectionString); // The vary by in the constructor needs to be something that is unique per user so it generates ETags uniquely per user // Cookie contains a cookie we generate InsiteCacheId that is a guid per user. var cacheHandler = new CachingHandler(config, etagStore, "Cookie") { // This must be false so IE client side caching works, anything that needs to vary needs to be done by uri or querystring AddVaryHeader = false, AddLastModifiedHeader = true, RoutePatternProvider = new CacheRoutePatternProvider(), CacheControlHeaderProvider = CacheControlHeaderProvider, CacheRefreshPolicyProvider = CacheRefreshPolicyProvider }; config.MessageHandlers.Add(cacheHandler); } config.MessageHandlers.Add(new LocalizationHandler()); config.MapHttpAttributeRoutes(new InheritanceDirectRouteProvider()); // There can be multiple exception loggers. (By default, no exception loggers are registered.) config.Services.Add(typeof(IExceptionLogger), unityContainer.Resolve <IExceptionLogger>()); // There must be exactly one exception handler. (There is a default one that may be replaced.) config.Services.Replace(typeof(IExceptionHandler), unityContainer.Resolve <IExceptionHandler>()); }
/// <summary>Registers the specified configuration.</summary> /// <param name="config">The configuration.</param> /// <param name="unityContainer">The unity container.</param> /// <param name="unitOfWork">The unit of work.</param> public static void Register(HttpConfiguration config, IUnityContainer unityContainer, IUnitOfWork unitOfWork) { var applicationSettingRepository = unitOfWork.GetTypedRepository<IApplicationSettingRepository>(); etagCacheServerDuration = applicationSettingRepository.GetOrCreateByName<int>("EtagCacheServerDuration"); etagCacheClientDuration = applicationSettingRepository.GetOrCreateByName<int>("EtagCacheClientDuration"); #if !DEBUG // Configure Web API to use only bearer token authentication. // Only suppress if not in debug mode, this allows browsing the WebAPI if in debug mode. config.SuppressDefaultHostAuthentication(); #endif config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); config.Filters.Add(new ModelStateValidationFilter()); config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new SelectSupportConverter()); var browserFormatter = new BrowserJsonFormatter { SerializerSettings = { ContractResolver = new CamelCasePropertyNamesContractResolver() } }; browserFormatter.SerializerSettings.Converters.Add(new SelectSupportConverter()); config.Formatters.Add(browserFormatter); config.DependencyResolver = new UnityDependencyResolver(unityContainer); // Changing this setting requires a website restart if (applicationSettingRepository.GetOrCreateByName<bool>("Caching_EnableEtags")) { var etagStore = new SqlServerEntityTagStore(ConfigurationManager.ConnectionStrings["InSite.Commerce"].ConnectionString); // The vary by in the constructor needs to be something that is unique per user so it generates ETags uniquely per user // Cookie contains a cookie we generate InsiteCacheId that is a guid per user. var cacheHandler = new CachingHandler(config, etagStore, "Cookie") { // This must be false so IE client side caching works, anything that needs to vary needs to be done by uri or querystring AddVaryHeader = false, AddLastModifiedHeader = true, RoutePatternProvider = new CacheRoutePatternProvider(), CacheControlHeaderProvider = CacheControlHeaderProvider, CacheRefreshPolicyProvider = CacheRefreshPolicyProvider }; config.MessageHandlers.Add(cacheHandler); } config.MessageHandlers.Add(new LocalizationHandler()); config.MapHttpAttributeRoutes(new InheritanceDirectRouteProvider()); // There can be multiple exception loggers. (By default, no exception loggers are registered.) config.Services.Add(typeof(IExceptionLogger), unityContainer.Resolve<IExceptionLogger>()); // There must be exactly one exception handler. (There is a default one that may be replaced.) config.Services.Replace(typeof(IExceptionHandler), unityContainer.Resolve<IExceptionHandler>()); }