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); }
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); }
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)); }
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); }
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); }