コード例 #1
0
        public static async Task <HttpResponseMessage> UpdateLaunchSchedule(
            [HttpTrigger(AuthorizationLevel.Anonymous, "put",
                         Route = "v1/launch/schedules")] LaunchScheduleModel schedule,
            [Table("LaunchSchedules", Connection = "ScheduleStorageAccount")] CloudTable scheduleTable,
            HttpRequestMessage req,
            TraceWriter log)
        {
            TableOperation updateOperation = TableOperation.Replace(schedule);
            await scheduleTable.ExecuteAsync(updateOperation);

            var result = req.CreateResponse(HttpStatusCode.OK);

            return(result);
        }
コード例 #2
0
        public static async Task <HttpResponseMessage> UpdateLaunchScheduleAsync(
            [HttpTrigger(AuthorizationLevel.Anonymous, "put",
                         Route = "v1/launch/schedules/async")] LaunchScheduleModel schedule,
            [Queue("ScheduleUpdateRequests", Connection = "ScheduleStorageAccount")] CloudQueue scheduleQueue,
            HttpRequestMessage req,
            TraceWriter log)
        {
            var scheduleJson          = JsonConvert.SerializeObject(schedule);
            CloudQueueMessage message = new CloudQueueMessage(scheduleJson);

            await scheduleQueue.AddMessageAsync(message);

            var result = req.CreateResponse(HttpStatusCode.Accepted);

            return(result);
        }
コード例 #3
0
        public static async Task <HttpResponseMessage> GetLaunchSchedule(
            [HttpTrigger(AuthorizationLevel.Anonymous,
                         "get",
                         Route = "v1/launch/schedules/{id}")] HttpRequestMessage req,
            [Table("LaunchSchedules", "Schedules", "{id}", Connection = "ScheduleStorageAccount")] LaunchScheduleModel launchSchedule,
            TraceWriter log,
            string id
            )
        {
            if (launchSchedule == null)
            {
                return(req.CreateResponse(HttpStatusCode.NotFound));
            }
            else
            {
                log.Info("Binding Values. Name: " + launchSchedule.Name);
            }

            return(req.CreateResponse(HttpStatusCode.OK, launchSchedule));
        }
コード例 #4
0
        public static async Task <HttpResponseMessage> CreateLaunchSchedule(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post",
                         Route = "v1/launch/schedules")] LaunchScheduleModel schedule,
            HttpRequestMessage req,
            [Table("LaunchSchedules", Connection = "ScheduleStorageAccount")] CloudTable scheduleTable,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            // *******************************************************
            // We can validate after the fact if we load the JSON
            // contents from the body. This allows us to get the validation
            // results and give back a better exception then just
            // 500 Bad Request. Replace the schedule object below
            // with a version pulled from the body (JSONConvert)
            // *******************************************************

            ValidationContext validationContext    = new ValidationContext(schedule);
            ICollection <ValidationResult> results = new List <ValidationResult>();
            var valid = Validator.TryValidateObject(schedule, validationContext, results, true);

            if (!valid)
            {
                return(req.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid Data"));
            }

            schedule.RowKey = Guid.NewGuid().ToString();

            TableOperation easyInsertOperation = TableOperation.Insert(schedule);
            await scheduleTable.ExecuteAsync(easyInsertOperation);

            var locationUrl = $"{req.RequestUri.GetLeftPart(UriPartial.Authority)}/api/launch/schedules/{schedule.RowKey}";

            var result = req.CreateResponse(HttpStatusCode.Created);

            result.Headers.Add("location", locationUrl);

            return(result);
        }
コード例 #5
0
        public static async Task <HttpResponseMessage> CreateLaunchScheduleAsync(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post",
                         Route = "v1/launch/schedules/async")] LaunchScheduleModel schedule,
            HttpRequestMessage req,
            [Queue("ScheduleCreateRequests", Connection = "ScheduleStorageAccount")] CloudQueue scheduleQueue,
            TraceWriter log)
        {
            //validate model
            ValidationContext validationContext    = new ValidationContext(schedule);
            ICollection <ValidationResult> results = new List <ValidationResult>();
            var valid = Validator.TryValidateObject(schedule, validationContext, results, true);

            if (!valid)
            {
                return(req.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid Data"));
            }

            //Queue Up our insert request with our ID (so the client can have the key to check later on status)
            var id = Guid.NewGuid().ToString();

            schedule.RowKey = id;

            var scheduleJson          = JsonConvert.SerializeObject(schedule);
            CloudQueueMessage message = new CloudQueueMessage(scheduleJson);

            await scheduleQueue.AddMessageAsync(message);

            //return http result
            var locationUrl = $"{req.RequestUri.GetLeftPart(UriPartial.Authority)}/api/launch/schedules/{id}";

            var result = req.CreateResponse(HttpStatusCode.Accepted);

            result.Headers.Add("location", locationUrl);

            return(result);
        }