diff --git a/src/Icons/Controllers/IconsController.cs b/src/Icons/Controllers/IconsController.cs index a781ad51a5..4bcfe8ffa1 100644 --- a/src/Icons/Controllers/IconsController.cs +++ b/src/Icons/Controllers/IconsController.cs @@ -5,7 +5,6 @@ using Bit.Icons.Models; using Bit.Icons.Services; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; -using Microsoft.Extensions.Options; namespace Bit.Icons.Controllers { @@ -20,11 +19,11 @@ namespace Bit.Icons.Controllers public IconsController( IMemoryCache memoryCache, IDomainMappingService domainMappingService, - IOptions iconsSettingsOptions) + IconsSettings iconsSettings) { _memoryCache = memoryCache; _domainMappingService = domainMappingService; - _iconsSettings = iconsSettingsOptions.Value; + _iconsSettings = iconsSettings; } [HttpGet("")] diff --git a/src/Icons/IconsSettings.cs b/src/Icons/IconsSettings.cs index e4e6ee59f1..878f3f3170 100644 --- a/src/Icons/IconsSettings.cs +++ b/src/Icons/IconsSettings.cs @@ -4,5 +4,6 @@ { public virtual string BestIconBaseUrl { get; set; } public virtual int CacheHours { get; set; } + public virtual long? CacheSizeLimit { get; set; } } } diff --git a/src/Icons/Startup.cs b/src/Icons/Startup.cs index 7d4e443cb1..64f921d232 100644 --- a/src/Icons/Startup.cs +++ b/src/Icons/Startup.cs @@ -18,10 +18,24 @@ namespace Bit.Icons public void ConfigureServices(IServiceCollection services) { + // Options services.AddOptions(); - services.Configure(Configuration.GetSection("IconsSettings")); - services.AddMemoryCache(); + + // Settings + var iconsSettings = new IconsSettings(); + ConfigurationBinder.Bind(Configuration.GetSection("IconsSettings"), iconsSettings); + services.AddSingleton(s => iconsSettings); + + // Cache + services.AddMemoryCache(options => + { + options.SizeLimit = iconsSettings.CacheSizeLimit; + }); + + // Services services.AddSingleton(); + + // Mvc services.AddMvc(); } diff --git a/src/Icons/appsettings.json b/src/Icons/appsettings.json index e65db766af..e4535f3a0c 100644 --- a/src/Icons/appsettings.json +++ b/src/Icons/appsettings.json @@ -13,7 +13,8 @@ } }, "iconsSettings": { - "BestIconBaseUrl": "https://icons.better-idea.org", - "CacheHours": 24 + "bestIconBaseUrl": "https://icons.better-idea.org", + "cacheHours": 24, + "cacheSizeLimit": null } }