mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 15:50:49 +08:00 
			
		
		
		
	Feat/monorepo (#734)
* copied everything from repos back to ocelot repo * added src projects to sln * removed all test projects that have no tests * added all test projects to sln * removed test not on master * merged unit tests * merged acceptance tests * merged integration tests * fixed namepaces * build script creates packages for all projects * updated docs to make sure no references to external repos that we will remove * +semver: breaking
This commit is contained in:
		@@ -0,0 +1,38 @@
 | 
			
		||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <TargetFramework>netstandard2.0</TargetFramework>
 | 
			
		||||
    <RuntimeFrameworkVersion>2.0.0</RuntimeFrameworkVersion>
 | 
			
		||||
    <NETStandardImplicitPackageVersion>2.0.0</NETStandardImplicitPackageVersion>
 | 
			
		||||
    <NoPackageAnalysis>true</NoPackageAnalysis>
 | 
			
		||||
    <Description>Provides Ocelot extensions to use CacheManager.Net</Description>
 | 
			
		||||
    <AssemblyTitle>Ocelot.Cache.CacheManager</AssemblyTitle>
 | 
			
		||||
    <VersionPrefix>0.0.0-dev</VersionPrefix>
 | 
			
		||||
    <AssemblyName>Ocelot.Cache.CacheManager</AssemblyName>
 | 
			
		||||
    <PackageId>Ocelot.Cache.CacheManager</PackageId>
 | 
			
		||||
    <PackageTags>API Gateway;.NET core</PackageTags>
 | 
			
		||||
    <PackageProjectUrl>https://github.com/ThreeMammals/Ocelot.Cache.CacheManager</PackageProjectUrl>
 | 
			
		||||
    <PackageProjectUrl>https://github.com/ThreeMammals/Ocelot.Cache.CacheManager</PackageProjectUrl>
 | 
			
		||||
    <RuntimeIdentifiers>win10-x64;osx.10.11-x64;osx.10.12-x64;win7-x64</RuntimeIdentifiers>
 | 
			
		||||
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
 | 
			
		||||
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
 | 
			
		||||
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
 | 
			
		||||
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
 | 
			
		||||
    <Authors>Tom Pallister</Authors>
 | 
			
		||||
    <CodeAnalysisRuleSet>..\..\codeanalysis.ruleset</CodeAnalysisRuleSet>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <DebugSymbols>True</DebugSymbols>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\Ocelot\Ocelot.csproj" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <PackageReference Include="StyleCop.Analyzers" Version="1.0.2">
 | 
			
		||||
      <PrivateAssets>all</PrivateAssets>
 | 
			
		||||
    </PackageReference>
 | 
			
		||||
    <PackageReference Include="CacheManager.Core" Version="1.1.2" />
 | 
			
		||||
    <PackageReference Include="CacheManager.Microsoft.Extensions.Configuration" Version="1.1.2" />
 | 
			
		||||
    <PackageReference Include="CacheManager.Microsoft.Extensions.Logging" Version="1.1.2" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										39
									
								
								src/Ocelot.Cache.CacheManager/OcelotBuilderExtensions.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/Ocelot.Cache.CacheManager/OcelotBuilderExtensions.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
namespace Ocelot.Cache.CacheManager
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
    using Configuration;
 | 
			
		||||
    using Configuration.File;
 | 
			
		||||
    using DependencyInjection;
 | 
			
		||||
    using global::CacheManager.Core;
 | 
			
		||||
    using Microsoft.Extensions.DependencyInjection;
 | 
			
		||||
    using Microsoft.Extensions.DependencyInjection.Extensions;
 | 
			
		||||
 | 
			
		||||
    public static class OcelotBuilderExtensions
 | 
			
		||||
    {
 | 
			
		||||
        public static IOcelotBuilder AddCacheManager(this IOcelotBuilder builder, Action<ConfigurationBuilderCachePart> settings)
 | 
			
		||||
        {
 | 
			
		||||
            var cacheManagerOutputCache = CacheFactory.Build<CachedResponse>("OcelotOutputCache", settings);
 | 
			
		||||
            var ocelotOutputCacheManager = new OcelotCacheManagerCache<CachedResponse>(cacheManagerOutputCache);
 | 
			
		||||
 | 
			
		||||
            builder.Services.RemoveAll(typeof(ICacheManager<CachedResponse>));
 | 
			
		||||
            builder.Services.RemoveAll(typeof(IOcelotCache<CachedResponse>));
 | 
			
		||||
            builder.Services.AddSingleton<ICacheManager<CachedResponse>>(cacheManagerOutputCache);
 | 
			
		||||
            builder.Services.AddSingleton<IOcelotCache<CachedResponse>>(ocelotOutputCacheManager);
 | 
			
		||||
 | 
			
		||||
            var ocelotConfigCacheManagerOutputCache = CacheFactory.Build<IInternalConfiguration>("OcelotConfigurationCache", settings);
 | 
			
		||||
            var ocelotConfigCacheManager = new OcelotCacheManagerCache<IInternalConfiguration>(ocelotConfigCacheManagerOutputCache);
 | 
			
		||||
            builder.Services.RemoveAll(typeof(ICacheManager<IInternalConfiguration>));
 | 
			
		||||
            builder.Services.RemoveAll(typeof(IOcelotCache<IInternalConfiguration>));
 | 
			
		||||
            builder.Services.AddSingleton<ICacheManager<IInternalConfiguration>>(ocelotConfigCacheManagerOutputCache);
 | 
			
		||||
            builder.Services.AddSingleton<IOcelotCache<IInternalConfiguration>>(ocelotConfigCacheManager);
 | 
			
		||||
 | 
			
		||||
            var fileConfigCacheManagerOutputCache = CacheFactory.Build<FileConfiguration>("FileConfigurationCache", settings);
 | 
			
		||||
            var fileConfigCacheManager = new OcelotCacheManagerCache<FileConfiguration>(fileConfigCacheManagerOutputCache);
 | 
			
		||||
            builder.Services.RemoveAll(typeof(ICacheManager<FileConfiguration>));
 | 
			
		||||
            builder.Services.RemoveAll(typeof(IOcelotCache<FileConfiguration>));
 | 
			
		||||
            builder.Services.AddSingleton<ICacheManager<FileConfiguration>>(fileConfigCacheManagerOutputCache);
 | 
			
		||||
            builder.Services.AddSingleton<IOcelotCache<FileConfiguration>>(fileConfigCacheManager);
 | 
			
		||||
            return builder;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								src/Ocelot.Cache.CacheManager/OcelotCacheManagerCache.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								src/Ocelot.Cache.CacheManager/OcelotCacheManagerCache.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
namespace Ocelot.Cache.CacheManager
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
    using global::CacheManager.Core;
 | 
			
		||||
 | 
			
		||||
    public class OcelotCacheManagerCache<T> : IOcelotCache<T>
 | 
			
		||||
    {
 | 
			
		||||
        private readonly ICacheManager<T> _cacheManager;
 | 
			
		||||
 | 
			
		||||
        public OcelotCacheManagerCache(ICacheManager<T> cacheManager)
 | 
			
		||||
        {
 | 
			
		||||
            _cacheManager = cacheManager;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Add(string key, T value, TimeSpan ttl, string region)
 | 
			
		||||
        {
 | 
			
		||||
            _cacheManager.Add(new CacheItem<T>(key, region, value, ExpirationMode.Absolute, ttl));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void AddAndDelete(string key, T value, TimeSpan ttl, string region)
 | 
			
		||||
        {
 | 
			
		||||
            var exists = _cacheManager.Get(key);
 | 
			
		||||
 | 
			
		||||
            if (exists != null)
 | 
			
		||||
            {
 | 
			
		||||
                _cacheManager.Remove(key);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Add(key, value, ttl, region);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public T Get(string key, string region)
 | 
			
		||||
        {
 | 
			
		||||
            return _cacheManager.Get<T>(key, region);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void ClearRegion(string region)
 | 
			
		||||
        {
 | 
			
		||||
            _cacheManager.ClearRegion(region);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								src/Ocelot.Cache.CacheManager/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/Ocelot.Cache.CacheManager/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
 | 
			
		||||
// General Information about an assembly is controlled through the following
 | 
			
		||||
// set of attributes. Change these attribute values to modify the information
 | 
			
		||||
// associated with an assembly.
 | 
			
		||||
[assembly: AssemblyConfiguration("")]
 | 
			
		||||
[assembly: AssemblyCompany("")]
 | 
			
		||||
[assembly: AssemblyProduct("Ocelot")]
 | 
			
		||||
[assembly: AssemblyTrademark("")]
 | 
			
		||||
 | 
			
		||||
// Setting ComVisible to false makes the types in this assembly not visible
 | 
			
		||||
// to COM components.  If you need to access a type in this assembly from
 | 
			
		||||
// COM, set the ComVisible attribute to true on that type.
 | 
			
		||||
[assembly: ComVisible(false)]
 | 
			
		||||
 | 
			
		||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
 | 
			
		||||
[assembly: Guid("d6df4206-0dba-41d8-884d-c3e08290fdbb")]
 | 
			
		||||
		Reference in New Issue
	
	Block a user