Exemplo n.º 1
0
        public AzureApplication()
            : base()
        {
            Telemetry = EastFive.Azure.AppSettings.ApplicationInsights.InstrumentationKey.LoadTelemetryClient();

            this.AddInstigator(typeof(EastFive.Security.SessionServer.Context),
                               (httpApp, request, parameterInfo, onCreatedSessionContext) => onCreatedSessionContext(this.AzureContext));
            this.AddInstigator(typeof(EastFive.Azure.Functions.InvokeFunction),
                               (httpApp, request, parameterInfo, onCreated) =>
            {
                var baseUriString  = request.RequestUri.GetLeftPart(UriPartial.Authority);
                var baseUri        = new Uri(baseUriString);
                var apiPath        = request.RequestUri.AbsolutePath.Trim('/'.AsArray()).Split('/'.AsArray()).First();
                var invokeFunction = new EastFive.Azure.Functions.InvokeFunction(
                    httpApp as AzureApplication, baseUri, apiPath);
                return(onCreated(invokeFunction));
            });
            this.AddInstigator(typeof(InvokeApplicationDirect),
                               (httpApp, request, parameterInfo, onCreated) =>
            {
                var baseUriString  = request.RequestUri.GetLeftPart(UriPartial.Authority);
                var baseUri        = new Uri(baseUriString);
                var apiPath        = request.RequestUri.AbsolutePath.Trim('/'.AsArray()).Split('/'.AsArray()).First();
                var invokeFunction = new InvokeApplicationDirect(
                    httpApp, baseUri, apiPath);
                return(onCreated(invokeFunction));
            });
        }
        protected override void ConfigureCallback(IApplicationBuilder app, IHostEnvironment env, IRazorViewEngine razorViewEngine)
        {
            base.ConfigureCallback(app, env, razorViewEngine);

            Telemetry = EastFive.Azure.AppSettings.ApplicationInsights.InstrumentationKey.LoadTelemetryClient();

            //this.AddInstigator(typeof(EastFive.Security.SessionServer.Context),
            //    (httpApp, request, parameterInfo, onCreatedSessionContext) => onCreatedSessionContext(this.AzureContext));
            this.AddInstigator(typeof(EastFive.Azure.Functions.InvokeFunction),
                               (httpApp, request, parameterInfo, onCreated) =>
            {
                var baseUriString  = request.RequestUri.GetLeftPart(UriPartial.Authority);
                var baseUri        = new Uri(baseUriString);
                var apiPath        = request.RequestUri.AbsolutePath.Trim('/'.AsArray()).Split('/'.AsArray()).First();
                var invokeFunction = new EastFive.Azure.Functions.InvokeFunction(
                    httpApp as AzureApplication, baseUri, apiPath);
                return(onCreated(invokeFunction));
            });
            this.AddInstigator(typeof(InvokeApplicationDirect),
                               (httpApp, request, parameterInfo, onCreated) =>
            {
                var baseUriString  = request.RequestUri.GetLeftPart(UriPartial.Authority);
                var baseUri        = new Uri(baseUriString);
                var apiPath        = request.RequestUri.AbsolutePath.Trim('/'.AsArray()).Split('/'.AsArray()).First();
                var invokeFunction = new InvokeApplicationDirect(
                    httpApp, baseUri, apiPath, default(CancellationToken));
                return(onCreated(invokeFunction));
            });
        }
        public static async Task <HttpResponseMessage> RunAsync(
            [UpdateId] IRefs <InvocationMessage> invocationMessageRefs,
            [HeaderLog] EastFive.Analytics.ILogger analyticsLog,
            InvokeApplicationDirect invokeApplication,
            MultipartResponseAsync onRun)
        {
            var messages = await invocationMessageRefs.refs
                           .Select(invocationMessageRef => InvokeAsync(invocationMessageRef, invokeApplication, logging: analyticsLog))
                           .AsyncEnumerable()
                           .ToArrayAsync();

            return(await onRun(messages));
        }
        public static Task <HttpResponseMessage> ListAsync(
            [QueryParameter(Name = "last_modified")] DateTime day,
            [HeaderLog] EastFive.Analytics.ILogger analyticsLog,
            InvokeApplicationDirect invokeApplication,
            MultipartResponseAsync <InvocationMessage> onRun)
        {
            Expression <Func <InvocationMessage, bool> > expr = (im) => true;

            var messages = expr
                           .StorageQuery()
                           .Where(msg => DateTime.UtcNow - msg.lastModified < TimeSpan.FromDays(3.0));

            return(onRun(messages));
        }
        public static IHttpResponse InvokeAsync(
            [UpdateId] IRefs <InvocationMessage> invocationMessageRefs,
            [HeaderLog] ILogger analyticsLog,
            InvokeApplicationDirect invokeApplication,
            CancellationToken cancellationToken,
            MultipartAsyncResponse <IHttpResponse> onRun)
        {
            var messages = invocationMessageRefs.refs
                           .Select(
                invocationMessageRef => InvokeAsync(invocationMessageRef, invokeApplication,
                                                    logging: new EventLogger(analyticsLog),
                                                    cancellationToken: cancellationToken))
                           .AsyncEnumerable();

            return(onRun(messages));
        }