mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-10-31 16:25:27 +08:00 
			
		
		
		
	realised the user can just set the region..delete time
This commit is contained in:
		| @@ -12,9 +12,9 @@ namespace Ocelot.Cache | ||||
|     { | ||||
|         public string Region(ReRoute reRoute) | ||||
|         { | ||||
|             var methods = string.Join(",", reRoute.UpstreamHttpMethod.Select(m => m.Method)); | ||||
|             var methods = string.Join("", reRoute.UpstreamHttpMethod.Select(m => m.Method)); | ||||
|  | ||||
|             var region = $"{methods} {reRoute.UpstreamPathTemplate.Value}"; | ||||
|             var region = $"{methods}{reRoute.UpstreamPathTemplate.Value.Replace("/", "")}"; | ||||
|              | ||||
|             return region; | ||||
|         } | ||||
|   | ||||
							
								
								
									
										13
									
								
								src/Ocelot/Cache/Regions.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/Ocelot/Cache/Regions.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| using System.Collections.Generic; | ||||
|  | ||||
| namespace Ocelot.Cache | ||||
| { | ||||
|     public class Regions | ||||
|     { | ||||
|         public Regions(List<string> value) | ||||
|         { | ||||
|             Value = value; | ||||
|         } | ||||
|         public List<string> Value {get;private set;} | ||||
|     } | ||||
| } | ||||
| @@ -8,5 +8,6 @@ | ||||
|         } | ||||
|  | ||||
|         public int TtlSeconds { get; private set; } | ||||
|         public string Region {get;private set;} | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -3,5 +3,6 @@ | ||||
|     public class FileCacheOptions | ||||
|     { | ||||
|         public int TtlSeconds { get; set; } | ||||
|         public string Region {get;private set;} | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| using System.Net.Http; | ||||
| using System.Threading.Tasks; | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Ocelot.Cache; | ||||
| @@ -20,10 +21,10 @@ namespace Ocelot.Controllers | ||||
|         } | ||||
|  | ||||
|         [HttpGet] | ||||
|         public IActionResult Get() | ||||
|         public async Task<IActionResult> Get() | ||||
|         { | ||||
|             var regions = _regionsGetter.Regions(); | ||||
|             return new OkObjectResult(regions); | ||||
|             var regions = await _regionsGetter.Regions(); | ||||
|             return new OkObjectResult(new Regions(regions)); | ||||
|         } | ||||
|  | ||||
|         [HttpDelete] | ||||
|   | ||||
| @@ -7,6 +7,7 @@ using System.Net.Http.Headers; | ||||
| using Microsoft.AspNetCore.Hosting; | ||||
| using Microsoft.Extensions.DependencyInjection; | ||||
| using Newtonsoft.Json; | ||||
| using Ocelot.Cache; | ||||
| using Ocelot.Configuration.File; | ||||
| using Ocelot.ManualTest; | ||||
| using Shouldly; | ||||
| @@ -221,7 +222,6 @@ namespace Ocelot.IntegrationTests | ||||
|         [Fact] | ||||
|         public void should_return_regions() | ||||
|         { | ||||
|  | ||||
|             var initialConfiguration = new FileConfiguration | ||||
|             { | ||||
|                 GlobalConfiguration = new FileGlobalConfiguration | ||||
| @@ -261,8 +261,8 @@ namespace Ocelot.IntegrationTests | ||||
|  | ||||
|             var expected = new List<string> | ||||
|             { | ||||
|                 "get /", | ||||
|                 "get /test" | ||||
|                 "get", | ||||
|                 "gettest" | ||||
|             }; | ||||
|  | ||||
|             this.Given(x => GivenThereIsAConfiguration(initialConfiguration)) | ||||
| @@ -275,6 +275,57 @@ namespace Ocelot.IntegrationTests | ||||
|                 .BDDfy(); | ||||
|         } | ||||
|  | ||||
|         [Fact] | ||||
|         public void should_clear_region() | ||||
|         { | ||||
|             var initialConfiguration = new FileConfiguration | ||||
|             { | ||||
|                 GlobalConfiguration = new FileGlobalConfiguration | ||||
|                 { | ||||
|                     AdministrationPath = "/administration" | ||||
|                 }, | ||||
|                 ReRoutes = new List<FileReRoute>() | ||||
|                 { | ||||
|                     new FileReRoute() | ||||
|                     { | ||||
|                         DownstreamHost = "localhost", | ||||
|                         DownstreamPort = 80, | ||||
|                         DownstreamScheme = "https", | ||||
|                         DownstreamPathTemplate = "/", | ||||
|                         UpstreamHttpMethod = new List<string> { "get" }, | ||||
|                         UpstreamPathTemplate = "/", | ||||
|                         FileCacheOptions = new FileCacheOptions | ||||
|                         { | ||||
|                             TtlSeconds = 10 | ||||
|                         } | ||||
|                     }, | ||||
|                     new FileReRoute() | ||||
|                     { | ||||
|                         DownstreamHost = "localhost", | ||||
|                         DownstreamPort = 80, | ||||
|                         DownstreamScheme = "https", | ||||
|                         DownstreamPathTemplate = "/", | ||||
|                         UpstreamHttpMethod = new List<string> { "get" }, | ||||
|                         UpstreamPathTemplate = "/test", | ||||
|                         FileCacheOptions = new FileCacheOptions | ||||
|                         { | ||||
|                             TtlSeconds = 10 | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             }; | ||||
|  | ||||
|             var regionToClear = "gettest"; | ||||
|  | ||||
|             this.Given(x => GivenThereIsAConfiguration(initialConfiguration)) | ||||
|                 .And(x => GivenOcelotIsRunning()) | ||||
|                 .And(x => GivenIHaveAnOcelotToken("/administration")) | ||||
|                 .And(x => GivenIHaveAddedATokenToMyRequest()) | ||||
|                 .When(x => WhenIDeleteOnTheApiGateway($"/administration/outputcache/{regionToClear}")) | ||||
|                 .Then(x => ThenTheStatusCodeShouldBe(HttpStatusCode.NoContent)) | ||||
|                 .BDDfy(); | ||||
|         } | ||||
|  | ||||
|         private void GivenAnotherOcelotIsRunning(string baseUrl) | ||||
|         { | ||||
|             _httpClientTwo.BaseAddress = new Uri(baseUrl); | ||||
| @@ -316,8 +367,8 @@ namespace Ocelot.IntegrationTests | ||||
|         private void ThenTheResponseShouldBe(List<string> expected) | ||||
|         { | ||||
|             var content = _response.Content.ReadAsStringAsync().Result; | ||||
|             var result = JsonConvert.DeserializeObject<List<string>>(content); | ||||
|             result.ShouldBe(expected); | ||||
|             var result = JsonConvert.DeserializeObject<Regions>(content); | ||||
|             result.Value.ShouldBe(expected); | ||||
|         } | ||||
|  | ||||
|         private void ThenTheResponseShouldBe(FileConfiguration expected) | ||||
| @@ -417,6 +468,11 @@ namespace Ocelot.IntegrationTests | ||||
|             _response = _httpClient.GetAsync(url).Result; | ||||
|         } | ||||
|  | ||||
|         private void WhenIDeleteOnTheApiGateway(string url) | ||||
|         { | ||||
|             _response = _httpClient.DeleteAsync(url).Result; | ||||
|         } | ||||
|  | ||||
|         private void ThenTheStatusCodeShouldBe(HttpStatusCode expectedHttpStatusCode) | ||||
|         { | ||||
|             _response.StatusCode.ShouldBe(expectedHttpStatusCode); | ||||
|   | ||||
| @@ -30,6 +30,7 @@ | ||||
|   </ItemGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.MiddlewareAnalysis" Version="1.1.1" /> | ||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170106-08" /> | ||||
|     <PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta2-build1317" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" /> | ||||
|   | ||||
| @@ -22,6 +22,7 @@ | ||||
|   </ItemGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.MiddlewareAnalysis" Version="1.1.1" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Http" Version="1.1.1" /> | ||||
|     <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" /> | ||||
|     <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="1.1.1" /> | ||||
|   | ||||
| @@ -23,7 +23,7 @@ namespace Ocelot.UnitTests.Cache | ||||
|  | ||||
|             this.Given(_ => GivenTheReRoute(reRoute)) | ||||
|                 .When(_ => WhenICreateTheRegion()) | ||||
|                 .Then(_ => ThenTheRegionIs("Get /test/dummy")) | ||||
|                 .Then(_ => ThenTheRegionIs("Gettestdummy")) | ||||
|                 .BDDfy(); | ||||
|         } | ||||
|          | ||||
|   | ||||
| @@ -61,7 +61,7 @@ namespace Ocelot.UnitTests.Controllers | ||||
|  | ||||
|         private void WhenIGetTheKeys() | ||||
|         { | ||||
|             _result = _controller.Get(); | ||||
|             _result = _controller.Get().Result; | ||||
|         } | ||||
|  | ||||
|         private void ThenTheKeysAreReturned() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tom Gardham-Pallister
					Tom Gardham-Pallister