diff --git a/src/plugins/ZeroBot.Endfield.Playground/MemoryDeviceIdRepository.cs b/src/plugins/ZeroBot.Endfield.Playground/MemoryDeviceIdRepository.cs new file mode 100644 index 0000000..ddc4ad6 --- /dev/null +++ b/src/plugins/ZeroBot.Endfield.Playground/MemoryDeviceIdRepository.cs @@ -0,0 +1,20 @@ +using ZeroBot.Endfield.Api.Skland.Authorize; + +namespace ZeroBot.Endfield.Playground; + +public class MemoryDeviceIdRepository : IDeviceIdRepository +{ + private readonly Dictionary _deviceIds = new(); + public ValueTask GetAsync(string oAuthToken, CancellationToken cancellationToken = default) + { + _deviceIds.TryGetValue(oAuthToken, out var deviceId); + + return ValueTask.FromResult(deviceId); + } + + public ValueTask SetAsync(string oAuthToken, string deviceId, CancellationToken cancellationToken = default) + { + _deviceIds.Add(oAuthToken, deviceId); + return default; + } +} \ No newline at end of file diff --git a/src/plugins/ZeroBot.Endfield.Playground/Program.cs b/src/plugins/ZeroBot.Endfield.Playground/Program.cs index f2c90b2..72b3b16 100644 --- a/src/plugins/ZeroBot.Endfield.Playground/Program.cs +++ b/src/plugins/ZeroBot.Endfield.Playground/Program.cs @@ -8,7 +8,8 @@ var credentialRepository = new JsonCredentialRepository("credentials.json"); var hypergryphClient = new HypergryphClient(); -var credentialManager = new CredentialManager(hypergryphClient, credentialRepository); +var deviceIdService = new DeviceIdService(new MemoryDeviceIdRepository()); +var credentialManager = new CredentialManager(hypergryphClient, credentialRepository, deviceIdService); using var cts = new CancellationTokenSource(); var cancellationToken = cts.Token; diff --git a/src/plugins/ZeroBot.Repository.Mongo/MongoRepositoryPlugin.cs b/src/plugins/ZeroBot.Repository.Mongo/MongoRepositoryPlugin.cs index 704ce8f..1ee8ee7 100644 --- a/src/plugins/ZeroBot.Repository.Mongo/MongoRepositoryPlugin.cs +++ b/src/plugins/ZeroBot.Repository.Mongo/MongoRepositoryPlugin.cs @@ -1,4 +1,5 @@ using EmberFramework.Abstraction.Layer.Plugin; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using MongoDB.Driver; @@ -6,13 +7,15 @@ namespace ZeroBot.Repository.Mongo; -public class MongoRepositoryPlugin(IOptions options, IBotContext botContext) : IPlugin.IWithInitializer +public class MongoRepositoryPlugin(IConfiguration config, IBotContext botContext) : IPlugin.IWithInitializer { public ValueTask BuildComponents(CancellationToken cancellationToken = default) { IServiceCollection services = new ServiceCollection(); - services.AddSingleton(_ => + services.Configure(config.GetSection(nameof(MongoRepositoryOptions))); + services.AddSingleton(container => { + var options = container.GetRequiredService>(); var mongoSettings = MongoClientSettings.FromConnectionString(options.Value.ConnectionString); mongoSettings.MaxConnectionPoolSize = options.Value.PoolSize; return mongoSettings; diff --git a/src/plugins/ZeroBot.Repository.Mongo/ZeroBot.Repository.Mongo.csproj b/src/plugins/ZeroBot.Repository.Mongo/ZeroBot.Repository.Mongo.csproj index e2e0017..42b584c 100644 --- a/src/plugins/ZeroBot.Repository.Mongo/ZeroBot.Repository.Mongo.csproj +++ b/src/plugins/ZeroBot.Repository.Mongo/ZeroBot.Repository.Mongo.csproj @@ -4,5 +4,6 @@ +