using System; using System.Collections.Generic; using System.Text; using Microsoft.Extensions.DependencyInjection; using StackExchange.Redis; namespace Selector.Cache.Extensions { public static class ServiceExtensions { public static IServiceCollection AddRedisServices(this IServiceCollection services, string connectionStr) { Console.WriteLine("> Configuring Redis..."); if (string.IsNullOrWhiteSpace(connectionStr)) { Console.WriteLine("> No Redis configuration string provided, exiting..."); Environment.Exit(1); } var connMulti = ConnectionMultiplexer.Connect(connectionStr); services.AddSingleton(connMulti); services.AddTransient(services => services.GetService().GetDatabase()); services.AddTransient(services => services.GetService().GetSubscriber()); return services; } public static IServiceCollection AddCachingConsumerFactories(this IServiceCollection services) { services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); return services; } public static IServiceCollection AddCachingSpotify(this IServiceCollection services) { services.AddSingleton(); return services; } public static IServiceCollection AddCachingLastFm(this IServiceCollection services) { services.AddSingleton(); return services; } } }