コード例 #1
0
ファイル: Steps.cs プロジェクト: tugberkugurlu/CacheCow
        public void GivenIHaveAnAPIRunningCacheCowServerAndUsingStorage(string storage)
        {
            IEntityTagStore store;
            var configuration = new HttpConfiguration();
            switch (storage)
            {
                case "InMemory":
                    store = new InMemoryEntityTagStore();
                    break;
                default:
                    throw new ArgumentException("Store unknown: " + storage);
            }

            configuration.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            var inMemoryServer = new InMemoryServer(configuration);
            var cachingHandler = new CachingHandler(configuration, store, "Accept")
            {
                InnerHandler = inMemoryServer
            };
            var client = new HttpClient(cachingHandler);

            ScenarioContext.Current[Keys.Client] = client;
            ScenarioContext.Current[Keys.CacheHandler] = cachingHandler;
        }
コード例 #2
0
        public void AddGetTest()
        {
            using (var store = new InMemoryEntityTagStore())
            {
                var cacheKey = new CacheKey(Url, new[] { "Accept" });

                var headerValue = new TimedEntityTagHeaderValue("\"abcdefghijkl\"");
                store.AddOrUpdate(cacheKey, headerValue);
                TimedEntityTagHeaderValue storedHeader;
                Assert.True(store.TryGetValue(cacheKey, out storedHeader));
                Assert.AreEqual(headerValue.ToString(), storedHeader.ToString());                
            }
        }
コード例 #3
0
 public void AddRemoveTest()
 {
     using (var store = new InMemoryEntityTagStore())
     {
         var cacheKey = new CacheKey(Url, new[] { "Accept" });
         var headerValue = new TimedEntityTagHeaderValue("\"abcdefghijkl\"");
         store.AddOrUpdate(cacheKey, headerValue);
         store.TryRemove(cacheKey);
         TimedEntityTagHeaderValue storedHeader;
         Assert.False(store.TryGetValue(cacheKey, out storedHeader));
         Assert.IsNull(storedHeader);
     }
 }
コード例 #4
0
        public void AddRemoveByPatternTest()
        {

            const string RoutePattern = "stuff";

            using (var store = new InMemoryEntityTagStore())
            {
                var cacheKey = new CacheKey(Url, new[] { "Accept" }, RoutePattern);
                var cacheKey2 = new CacheKey(Url + "/chaja", new[] { "Accept" }, RoutePattern);
                var headerValue = new TimedEntityTagHeaderValue("\"abcdefghijkl\"");
                store.AddOrUpdate(cacheKey, headerValue);
                store.AddOrUpdate(cacheKey2, headerValue);
                store.RemoveAllByRoutePattern(RoutePattern);
                store.TryRemove(cacheKey);
                TimedEntityTagHeaderValue storedHeader;
                Assert.False(store.TryGetValue(cacheKey, out storedHeader));
                Assert.False(store.TryGetValue(cacheKey2, out storedHeader));
                Assert.IsNull(storedHeader);
            }
        }
コード例 #5
0
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            // Configure Web API to use only bearer token authentication.

            var cors = new EnableCorsAttribute("*", "*", "*");
            config.EnableCors(cors);


            config.SuppressDefaultHostAuthentication();
            config.Filters.Add(new ValidateModelAttribute());
            config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
           
            //Added to return JSON as default
            config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
        

            var formatters = GlobalConfiguration.Configuration.Formatters;
            var jsonFormatter = formatters.JsonFormatter;
            var settings = jsonFormatter.SerializerSettings;
            settings.Formatting = Formatting.Indented;
            settings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            // Web API routes
            config.MapHttpAttributeRoutes();


            //Caching and Etags
            var connString = ConfigurationManager.ConnectionStrings["AutoResolveContext"].ConnectionString;
            var sqlServerEtagStore = new InMemoryEntityTagStore();
            var cacheHandler = new CachingHandler(config, sqlServerEtagStore);
            config.MessageHandlers.Add(cacheHandler);

            /*DEFAULT*/
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            /*CUSTOMERS*/
            config.Routes.MapHttpRoute(
                name: "Customers",
                routeTemplate: "api/customers/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

     

            config.Routes.MapHttpRoute(
              name: "CustomersAccidents",
              routeTemplate: "api/customers/{id}/accidents",
              defaults: new { controller = "CustomersAccidents"  }
              );

            


            /*ACCIDENTS*/
            config.Routes.MapHttpRoute(
              name: "Accidents",
              routeTemplate: "api/accidents/{id}",
              defaults: new { id = RouteParameter.Optional }
              );


            /*DEFENDANTS*/
            config.Routes.MapHttpRoute(
              name: "OtherDrivers",
              routeTemplate: "api/otherdrivers/{id}",
              defaults: new { id = RouteParameter.Optional }
              );

            /*WITNESSES*/
            config.Routes.MapHttpRoute(
            name: "Witnesses",
            routeTemplate: "api/witnesses/{id}",
            defaults: new { id = RouteParameter.Optional }
            );

            /*MEDIA*/
            config.Routes.MapHttpRoute(
            name: "AccidentMedia",
            routeTemplate: "api/accidentmedia/{id}",
            defaults: new { id = RouteParameter.Optional }
            );


            /*NOTIFICATIONS*/
            config.Routes.MapHttpRoute(
         name: "Notifications",
         routeTemplate: "api/notifications/{id}",
         defaults: new { id = RouteParameter.Optional }
         );

            /*Account*/
            config.Routes.MapHttpRoute(
         name: "Account",
         routeTemplate: "api/account/{id}",
         defaults: new { id = RouteParameter.Optional }
         );

            /*Account*/
            config.Routes.MapHttpRoute(
         name: "CustomerSettings",
         routeTemplate: "api/customersettings/{id}",
         defaults: new { id = RouteParameter.Optional }
         );

        /*    /*ENTRY#1#
            config.Routes.MapHttpRoute(
         name: "Entry",
         routeTemplate: "api/entry/"        
         );*/

        }