Example #1
0
        public async Task <HttpResponseMessage> Delete(string functionId)
        {
            await FunctionsProvider
            .Delete(functionId : functionId)
            .ConfigureAwait(continueOnCapturedContext: false);

            return(this.Request.CreateResponse(statusCode: HttpStatusCode.NoContent));
        }
Example #2
0
        public async Task <HttpResponseMessage> Get()
        {
            var functions = await FunctionsProvider
                            .List()
                            .ConfigureAwait(continueOnCapturedContext: false);

            return(this.Request.CreateResponse(
                       value: functions.Select(function => function.ToModel()),
                       statusCode: HttpStatusCode.OK));
        }
Example #3
0
        public async Task <HttpResponseMessage> Get(string functionId)
        {
            var function = await FunctionsProvider
                           .Get(functionId : functionId)
                           .ConfigureAwait(continueOnCapturedContext: false);

            if (function == null)
            {
                return(this.Request.CreateResponse(statusCode: HttpStatusCode.NotFound));
            }

            return(this.Request.CreateResponse(
                       value: function.ToModel(),
                       statusCode: HttpStatusCode.OK));
        }
        public async Task <HttpResponseMessage> Post(string functionId, [FromBody] JToken input)
        {
            var stopwatch = Stopwatch.StartNew();
            var logs      = new List <ExecutionLog>();

            var function = await FunctionsProvider
                           .Get(functionId : functionId)
                           .ConfigureAwait(continueOnCapturedContext: false);

            logs.Add(new ExecutionLog
            {
                Name     = "GetFunction",
                Duration = stopwatch.ElapsedMilliseconds
            });

            if (function == null)
            {
                return(this.Request.CreateResponse(statusCode: HttpStatusCode.NotFound));
            }

            var request = new ExecutionRequest
            {
                Function = function.ToModel(),
                Input    = input
            };

            var response = await ExecutionProvider
                           .Execute(request : request)
                           .ConfigureAwait(continueOnCapturedContext: false);

            if (response == null)
            {
                return(this.Request.CreateResponse(statusCode: HttpStatusCode.ServiceUnavailable));
            }

            logs.Add(response.Logs);

            response.Logs = new ExecutionLog
            {
                Name     = "InvokeController",
                Duration = stopwatch.ElapsedMilliseconds,
                SubLogs  = logs.ToArray()
            };

            return(this.Request.CreateResponse(
                       statusCode: HttpStatusCode.OK,
                       value: response));
        }
Example #5
0
        public async Task <HttpResponseMessage> Post([FromBody] FunctionUpload upload)
        {
            var function = await upload
                           .ToFunction()
                           .ConfigureAwait(continueOnCapturedContext: false);

            await FunctionsProvider
            .Create(function : function)
            .ConfigureAwait(continueOnCapturedContext: false);

            var response = this.Request.CreateResponse(
                value: function.ToModel(),
                statusCode: HttpStatusCode.Created);

            response.Headers.Location = this.Request.RequestUri.Append(suffix: function.Id);

            return(response);
        }
Example #6
0
        private static async Task WatchFunctionExistence(string functionId, string containerName)
        {
            while (true)
            {
                var exists = await FunctionsProvider
                             .Exists(functionId : functionId)
                             .ConfigureAwait(continueOnCapturedContext: false);

                if (!exists)
                {
                    await ContainerProvider
                    .DeleteContainerIfExists(containerName : containerName)
                    .ConfigureAwait(continueOnCapturedContext: false);
                }

                await Task
                .Delay(delay : TimeSpan.FromSeconds(15))
                .ConfigureAwait(continueOnCapturedContext: false);
            }
        }
Example #7
0
        public async Task <HttpResponseMessage> Delete()
        {
            var functions = await FunctionsProvider
                            .List()
                            .ConfigureAwait(continueOnCapturedContext: false);

            await Task
            .WhenAll(functions.Select(async function =>
            {
                await FunctionsProvider
                .Delete(functionId: function.Id)
                .ConfigureAwait(continueOnCapturedContext: false);

                await QueueProvider
                .DeleteQueue(queueName: function.Id)
                .ConfigureAwait(continueOnCapturedContext: false);
            }))
            .ConfigureAwait(continueOnCapturedContext: false);

            return(this.Request.CreateResponse(statusCode: HttpStatusCode.NoContent));
        }