public AddEncryptionSupportToClientsMigrationStep(IMongoDatabaseClientProvider clientProvider, MongoDbClientStoreSettings mongoDbClientStoreSettings)
        {
            if (clientProvider == null)
            {
                throw new ArgumentNullException(nameof(clientProvider));
            }

            _mongoDbClientStoreSettings = mongoDbClientStoreSettings ?? throw new ArgumentNullException(nameof(mongoDbClientStoreSettings));

            _lazyCollection = new Lazy <IMongoCollection <ClientDataRecordV2> >(() => {
                var database = clientProvider.Provide();
                return(database.GetCollection <ClientDataRecordV2>(mongoDbClientStoreSettings.CollectionName));
            });
        }
        public MongoDbClientStore(IMongoDatabaseClientProvider clientProvider, string collectionName)
        {
            if (clientProvider == null)
            {
                throw new ArgumentNullException(nameof(clientProvider));
            }
            if (string.IsNullOrEmpty(collectionName))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(collectionName));
            }

            _lazyCollection = new Lazy <IMongoCollection <ClientDataRecord> >(() => {
                var database = clientProvider.Provide();
                return(database.GetCollection <ClientDataRecord>(collectionName));
            });
        }
Exemple #3
0
        public ClientStoreBaseliner(ISystemClock systemClock, IMongoDatabaseClientProvider clientProvider, MongoDbClientStoreSettings mongoDbClientStoreSettings)
        {
            if (clientProvider == null)
            {
                throw new ArgumentNullException(nameof(clientProvider));
            }
            if (mongoDbClientStoreSettings == null)
            {
                throw new ArgumentNullException(nameof(mongoDbClientStoreSettings));
            }

            _systemClock = systemClock ?? throw new ArgumentNullException(nameof(systemClock));

            _lazyCollection = new Lazy <IMongoCollection <ClientStoreVersionDocument> >(() => {
                var database = clientProvider.Provide();
                return(database.GetCollection <ClientStoreVersionDocument>(mongoDbClientStoreSettings.CollectionName));
            });
        }
        public MongoDbNonceStore(IMongoDatabaseClientProvider clientProvider, string collectionName)
        {
            if (clientProvider == null)
            {
                throw new ArgumentNullException(nameof(clientProvider));
            }
            if (string.IsNullOrEmpty(collectionName))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(collectionName));
            }

            _lazyCollection = new Lazy <IMongoCollection <NonceDataRecord> >(() => {
                var database   = clientProvider.Provide();
                var collection = database.GetCollection <NonceDataRecord>(collectionName);

                var createIndexModel = new CreateIndexModel <NonceDataRecord>(
                    Builders <NonceDataRecord> .IndexKeys.Ascending(_ => _.Expiration),
                    new CreateIndexOptions {
                    Name        = "idx_ttl",
                    ExpireAfter = TimeSpan.FromSeconds(3)
                });
                try {
                    collection.Indexes.CreateOne(createIndexModel);
                }
                catch (MongoCommandException ex) {
                    switch (ex.Code)
                    {
                    case 86:
                        // The index probably exists with different options, recreate it instead
                        collection.Indexes.DropOne("idx_ttl");
                        collection.Indexes.CreateOne(createIndexModel);
                        break;

                    default:
                        throw;
                    }
                }

                return(collection);
            });
        }
        public MongoDbClientStore(
            IMongoDatabaseClientProvider clientProvider,
            string collectionName,
            SharedSecretEncryptionKey encryptionKey,
            IClientStoreMigrator migrator)
        {
            if (clientProvider == null)
            {
                throw new ArgumentNullException(nameof(clientProvider));
            }
            if (string.IsNullOrEmpty(collectionName))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(collectionName));
            }
            _encryptionKey = encryptionKey;
            _migrator      = migrator ?? throw new ArgumentNullException(nameof(migrator));

            _lazyCollection = new Lazy <IMongoCollection <ClientDataRecordV2> >(() => {
                var database = clientProvider.Provide();
                return(database.GetCollection <ClientDataRecordV2>(collectionName));
            });
        }