public void Configuration(IAppBuilder app) { var logger = new Logger(); var container = CreateUnityContainer(logger); logger.Info("Starting Israel Hiking Server."); var config = new HttpConfiguration(); app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions { AccessTokenProvider = new OsmAccessTokenProvider( container.Resolve<IHttpGatewayFactory>(), container.Resolve<LruCache<string, TokenAndSecret>>(), logger) }); WebApiConfig.Register(config); config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None; config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new CoordinateConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new GeometryConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FeatureCollectionConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FeatureConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new AttributesTableConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new ICRSObjectConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new GeometryArrayConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new EnvelopeConverter()); config.Services.Add(typeof(IExceptionLogger), logger); config.DependencyResolver = new UnityResolver(container); InitializeServices(container); app.UseWebApi(config); logger.Info("Israel Hiking Server is up and running."); }