/// <summary> /// Create a new instance of the HubSpotListOfContactsClient with default dependencies /// </summary> /// <remarks> /// This constructor creates a HubSpotListOfContactsClient using "real" dependencies that will send requests /// via the network - if you wish to have support for functional tests and mocking use the "eager" constructor /// that takes in all underlying dependecies /// </remarks> /// <param name="apiKey">Your API key</param> public HubSpotListOfContactsClient(string apiKey) : base( new RealRapidHttpClient(new HttpClient()), NoopLoggerFactory.Get(), new RequestSerializer(new RequestDataConverter(NoopLoggerFactory.Get <RequestDataConverter>())), "https://api.hubapi.com", apiKey) { }
public static ISession Create( ITransaction transaction, IEventStore eventStore, ISnapshotStore snapshotStore, ILoggerFactory loggerFactory = null, IEventPublisher eventPublisher = null, IEventRouter eventRouter = null, IEventUpdateManager eventUpdateManager = null, IEnumerable <IMetadataProvider> metadataProviders = null, ISnapshotStrategy snapshotStrategy = null, IEventsMetadataService eventsMetadataService = null) { // TODO: refactor ctor's Session sucks :( if (eventStore == null) { throw new ArgumentNullException(nameof(eventStore)); } if (snapshotStore == null) { throw new ArgumentNullException(nameof(snapshotStore)); } if (loggerFactory == null) { loggerFactory = new NoopLoggerFactory(); } if (eventRouter == null) { eventRouter = StubEventRouter.Ok(); } if (eventPublisher == null) { eventPublisher = new EventPublisher(eventRouter); } var session = new Session( loggerFactory: loggerFactory, transaction: transaction, eventStore: eventStore, snapshotStore: snapshotStore, eventPublisher: eventPublisher, eventUpdateManager: eventUpdateManager, metadataProviders: metadataProviders, snapshotStrategy: snapshotStrategy, eventsMetadataService: eventsMetadataService); return(session); }
public static DenormalizerConfiguration SetMongoDbEventSubscriber(this DenormalizerConfiguration config, IMongoDatabase db, ILoggerFactory loggerFactory = null) { Precondition.For(() => config).NotNull(); Precondition.For(() => db).NotNull(); if (loggerFactory == null) { loggerFactory = new NoopLoggerFactory(); } config.Subscriber = new MongoEventSubscriber(db, loggerFactory); return(config); }
private async Task <Session> ArrangeSessionAsync <TAggregate>(Guid aggregateId, IEventUpdateManager eventUpdateManager = null, params IDomainEvent[] arrangeEvents) where TAggregate : Aggregate, new() { var metadataProviders = new IMetadataProvider[] { new AggregateTypeMetadataProvider(), new EventTypeMetadataProvider(), new CorrelationIdMetadataProvider() }; var loggerFactory = new NoopLoggerFactory(); var eventPublisher = new EventPublisher(new StubEventRouter()); var stores = new InMemoryStores(); var session = new Session(loggerFactory, stores, stores.EventStore, stores.SnapshotStore, eventPublisher, eventUpdateManager: eventUpdateManager); var aggregate = (TAggregate)Activator.CreateInstance(typeof(TAggregate), args: aggregateId); var serializedEvents = arrangeEvents.Select((e, index) => { index++; var eventVersion = aggregate.Version + index; var metadata = metadataProviders.SelectMany(md => md.Provide(aggregate, e, MetadataCollection.Empty)).Concat(new[] { new KeyValuePair <string, object>(MetadataKeys.EventId, Guid.NewGuid()), new KeyValuePair <string, object>(MetadataKeys.EventVersion, eventVersion) }); return(new UncommittedEvent(aggregate, e, eventVersion) { Metadata = new MetadataCollection(metadata) }); }); stores.BeginTransaction(); await stores.EventStore.AppendAsync(serializedEvents); await stores.CommitAsync(); return(session); }
private async Task <Session> ArrangeSessionAsync <TAggregate>(Guid aggregateId, IEventUpdateManager eventUpdateManager = null, params IDomainEvent[] arrangeEvents) where TAggregate : Aggregate, new() { var metadataProviders = new IMetadataProvider[] { new AggregateTypeMetadataProvider(), new EventTypeMetadataProvider(), new CorrelationIdMetadataProvider() }; var loggerFactory = new NoopLoggerFactory(); var eventPublisher = new EventPublisher(new StubEventRouter()); var eventStore = new InMemoryEventStore(); var eventSerializer = new EventSerializer(new JsonTextSerializer()); var snapshotSerializer = new SnapshotSerializer(new JsonTextSerializer()); var projectionSerializer = new ProjectionSerializer(new JsonTextSerializer()); var session = new Session(loggerFactory, eventStore, eventPublisher, eventSerializer, snapshotSerializer, projectionSerializer, eventUpdateManager: eventUpdateManager); var aggregate = (TAggregate)Activator.CreateInstance(typeof(TAggregate), args: aggregateId); aggregate.UpdateVersion(arrangeEvents.Length - 1); var serializedEvents = arrangeEvents.Select((e, index) => { index++; var metadatas = metadataProviders.SelectMany(md => md.Provide(aggregate, e, EventSource.Metadata.Empty)).Concat(new[] { new KeyValuePair <string, object>(MetadataKeys.EventId, Guid.NewGuid()), new KeyValuePair <string, object>(MetadataKeys.EventVersion, (aggregate.Version + index)) }); return(eventSerializer.Serialize(aggregate, e, new EventSource.Metadata(metadatas))); }); eventStore.BeginTransaction(); await eventStore.SaveAsync(serializedEvents); await eventStore.CommitAsync(); return(session); }