Example #1
0
        public static IApplicationBuilder UseStreamMetadata(this IApplicationBuilder builder, IStreamStore streamStore)
        {
            var streamsMetadata = new StreamMetadataResource(streamStore);

            return(builder
                   .MapWhen(IsSetStreamMetadata, inner => inner.Use(SetStreamMetadata(streamsMetadata)))
                   .MapWhen(IsGetStreamMetadata, inner => inner.Use(GetStreamMetadata(streamsMetadata))));
        }
Example #2
0
        private static MidFunc GetStreamMetadata(StreamMetadataResource streamsMetadata)
        => async(context, next) =>
        {
            var options = new GetStreamMetadataOperation(context.Request);

            var response = await streamsMetadata.Get(options, context.RequestAborted);

            await context.WriteResponse(response);
        };
        public static IApplicationBuilder UseStreamOptions(this IApplicationBuilder builder, IStreamStore streamStore)
        {
            var streams         = new StreamResource(streamStore, false);
            var streamMessages  = new StreamMessageResource(streamStore);
            var streamsMetadata = new StreamMetadataResource(streamStore);

            return(builder
                   .MapWhen(IsStream, ConfigureOptions(streams))
                   .MapWhen(IsStreamMessage, ConfigureOptions(streamMessages))
                   .MapWhen(IsStreamMetadata, ConfigureOptions(streamsMetadata)));
        }
Example #4
0
        private static MidFunc SetStreamMetadata(StreamMetadataResource streamsMetadata)
        => next => async env =>
        {
            var context = new OwinContext(env);

            var options = await SetStreamMetadataOperation.Create(context.Request, context.Request.CallCancelled);

            var response = await streamsMetadata.SetStreamMetadata(options, context.Request.CallCancelled);

            await context.WriteHalResponse(response);
        };
Example #5
0
        public static IApplicationBuilder UseSqlStreamStoreHal(
            this IApplicationBuilder builder,
            IStreamStore streamStore,
            SqlStreamStoreMiddlewareOptions options = default)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (streamStore == null)
            {
                throw new ArgumentNullException(nameof(streamStore));
            }

            options = options ?? new SqlStreamStoreMiddlewareOptions();

            var index             = new IndexResource(streamStore, options.ServerAssembly);
            var allStream         = new AllStreamResource(streamStore, options.UseCanonicalUrls);
            var allStreamMessages = new AllStreamMessageResource(streamStore);
            var streamBrowser     = new StreamBrowserResource(streamStore);
            var streams           = new StreamResource(streamStore);
            var streamMetadata    = new StreamMetadataResource(streamStore);
            var streamMessages    = new StreamMessageResource(streamStore);
            var documentation     = new DocsResource(
                index,
                allStream,
                allStreamMessages,
                streams,
                streamMessages,
                streamMetadata,
                streamBrowser);

            s_Log.Info(index.ToString);

            return(builder
                   .UseExceptionHandling()
                   .Use(Rfc1738)
                   .Use(HeadRequests)
                   .UseRouter(router => router
                              .MapMiddlewareRoute($"{Constants.Paths.Docs}/{{doc}}", inner => inner.UseDocs(documentation))
                              .MapMiddlewareRoute(Constants.Paths.AllStream, inner => inner.UseAllStream(allStream))
                              .MapMiddlewareRoute($"{Constants.Paths.AllStream}/{{position:long}}",
                                                  inner => inner.UseAllStreamMessage(allStreamMessages))
                              .MapMiddlewareRoute(Constants.Paths.Streams, inner => inner.UseStreamBrowser(streamBrowser))
                              .MapMiddlewareRoute($"{Constants.Paths.Streams}/{{streamId}}", inner => inner.UseStreams(streams))
                              .MapMiddlewareRoute($"{Constants.Paths.Streams}/{{streamId}}/{Constants.Paths.Metadata}",
                                                  inner => inner.UseStreamMetadata(streamMetadata))
                              .MapMiddlewareRoute($"{Constants.Paths.Streams}/{{streamId}}/{{p}}",
                                                  inner => inner.UseStreamMessages(streamMessages))
                              .MapMiddlewareRoute(string.Empty, inner => inner.UseIndex(index))));
        }
Example #6
0
        private static MidFunc GetStreamMetadata(StreamMetadataResource streamsMetadata)
        => next => async env =>
        {
            var context = new OwinContext(env);

            var options = new GetStreamMetadataOperation(context.Request);

            var response = await streamsMetadata.GetStreamMetadata(options, context.Request.CallCancelled);

            using (new OptionalHeadRequestWrapper(context))
            {
                await context.WriteHalResponse(response);
            }
        };
Example #7
0
        public static MidFunc UseStreamStore(IStreamStore streamStore)
        {
            var streamsMetadata = new StreamMetadataResource(streamStore);

            var builder = new AppBuilder()
                          .MapWhen(IsSetStreamMetadata, inner => inner.Use(SetStreamMetadata(streamsMetadata)))
                          .MapWhen(IsGetStreamMetadata, inner => inner.Use(GetStreamMetadata(streamsMetadata)));

            return(next =>
            {
                builder.Run(ctx => next(ctx.Environment));

                return builder.Build();
            });
        }
Example #8
0
        public static IApplicationBuilder UseSqlStreamStoreHal(
            this IApplicationBuilder builder,
            IStreamStore streamStore,
            SqlStreamStoreMiddlewareOptions options = default)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (streamStore == null)
            {
                throw new ArgumentNullException(nameof(streamStore));
            }

            options = options ?? new SqlStreamStoreMiddlewareOptions();

            var index             = new IndexResource(streamStore, options.ServerAssembly);
            var allStream         = new AllStreamResource(streamStore, options.UseCanonicalUrls);
            var allStreamMessages = new AllStreamMessageResource(streamStore);
            var streamBrowser     = new StreamBrowserResource(streamStore);
            var streams           = new StreamResource(streamStore);
            var streamMetadata    = new StreamMetadataResource(streamStore);
            var streamMessages    = new StreamMessageResource(streamStore);
            var documentation     = new DocsResource(
                index,
                allStream,
                allStreamMessages,
                streams,
                streamMessages,
                streamMetadata,
                streamBrowser);

            s_Log.Info(index.ToString);

            return(builder
                   .UseExceptionHandling()
                   .Use(CaseSensitiveQueryStrings)
                   .Use(HeadRequests)
                   .UseDocs(documentation)
                   .UseIndex(index)
                   .UseAllStream(allStream)
                   .UseAllStreamMessage(allStreamMessages)
                   .UseStreamBrowser(streamBrowser)
                   .UseStreams(streams)
                   .UseStreamMetadata(streamMetadata)
                   .UseStreamMessages(streamMessages));
        }
Example #9
0
        public static MidFunc UseStreamStore(IStreamStore streamStore)
        {
            var streams         = new StreamResource(streamStore);
            var streamMessages  = new StreamMessageResource(streamStore);
            var streamsMetadata = new StreamMetadataResource(streamStore);

            var builder = new AppBuilder()
                          .MapWhen(IsStream, ConfigureOptions(streams))
                          .MapWhen(IsStreamMessage, ConfigureOptions(streamMessages))
                          .MapWhen(IsStreamMetadata, ConfigureOptions(streamsMetadata));

            return(next =>
            {
                builder.Run(context => next(context.Environment));

                return builder.Build();
            });
        }