public static void AddRin(this IServiceCollection services, Action <RinOptions> configure = null) { var options = new RinOptions(); configure?.Invoke(options); services.AddHttpContextAccessor(); var eventBus = new MessageEventBus <RequestEventMessage>(); var eventBusStoreBody = new MessageEventBus <StoreBodyEventMessage>(); var transformerSet = new BodyDataTransformerSet( new BodyDataTransformerPipeline(options.Inspector.RequestBodyDataTransformers), new BodyDataTransformerPipeline(options.Inspector.ResponseBodyDataTransformers) ); // Other services services.AddSingleton <BodyDataTransformerSet>(transformerSet); services.AddSingleton <IRecordStorage>(options.RequestRecorder.StorageFactory); services.AddSingleton <IMessageEventBus <RequestEventMessage> >(eventBus); services.AddSingleton <IMessageEventBus <StoreBodyEventMessage> >(eventBusStoreBody); services.AddSingleton <RinOptions>(options); services.AddSingleton <RinChannel>(); // IMessageSubscriber<RequestEventMessage> services services.AddSingleton <IMessageSubscriber <RequestEventMessage> >(x => new Rin.Hubs.RinCoreHub.MessageSubscriber(x.GetRequiredService <RinChannel>())); services.AddTransient <IResourceProvider, EmbeddedZipResourceProvider>(); }
public ChannelMiddleware(RequestDelegate next, IRecordStorage storage, RinChannel rinChannel, BodyDataTransformerSet bodyDataTransformerSet, IHostApplicationLifetime applicationLifetime) { _next = next; _storage = storage; _rinChannel = rinChannel; _bodyDataTransformerSet = bodyDataTransformerSet; applicationLifetime.ApplicationStopping.Register(() => _rinChannel.Dispose()); }
public RinCoreHub(IRecordStorage storage, RinChannel rinChannel, BodyDataTransformerSet bodyDataTransformerSet) { _storage = storage; _rinChannel = rinChannel; _bodyDataTransformerSet = bodyDataTransformerSet; }
public RinCoreHub(IRecordStorage storage, BodyDataTransformerSet bodyDataTransformerSet) { _storage = storage; _bodyDataTransformerSet = bodyDataTransformerSet; }